author | Tero Marttila <terom@paivola.fi> |
Mon, 16 Dec 2013 18:37:08 +0200 | |
changeset 269 | 713d0495288e |
child 270 | bafcda3a3c0d |
permissions | -rwxr-xr-x |
269
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
#!/usr/bin/env python |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
import pvl.args |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
import pvl.dns.zone |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
import configobj |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
import ipaddr |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
9 |
import logging; log = logging.getLogger('pvl.hosts-dns') |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
import math |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
import optparse |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
def apply_hosts_file (options, file) : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
""" |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
15 |
Load hosts from a file. |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
""" |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
config = configobj.ConfigObj(file, |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
encoding = options.hosts_charset, |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
20 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
for host in config.sections : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
22 |
yield host, config[host] |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
def apply_hosts (options, args) : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
""" |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
Load hosts from arguments. |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
""" |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
for file in pvl.args.apply_files(args, 'r') : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
for host in apply_hosts_file(options, file) : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
yield host |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
33 |
def process_hosts_forward (options, hosts) : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
for host, fields in hosts : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
domain = fields.get('domain', options.hosts_domain) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
if options.forward_zone and domain != options.forward_zone : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
continue |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
ip = fields.get('ip') |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
if ip : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
yield pvl.dns.zone.ZoneRecord.A(host, value) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
# aliases |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
for field, value in fields.iteritems() : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
if field.startswith('alias.') : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
yield pvl.dns.zone.ZoneRecord.CNAME(value, host) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
def apply_reverse_zone (options, prefix, address) : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
""" |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
Determine the correct reverse-dns name for the given address with the reverse zone for the given prefix. |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
""" |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
assert prefix.version == address.version |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
hostbits = prefix.max_prefixlen - prefix.prefixlen |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
if prefix.version == 4 : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
labelbytes = int(math.ceil(hostbits / 8.0)) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
labelraw = address.packed[-labelbytes:] |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
return '.'.join(reversed([str(ord(x)) for x in labelraw])) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
else : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
raise ValueError("unsupported address version: %s" % (prefix, )) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
def process_hosts_reverse (options, hosts) : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
for host, fields in hosts : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
domain = fields.get('domain', options.hosts_domain) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
ip = fields.get('ip') |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
if ip : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
ip = ipaddr.IPAddress(ip) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
if not ip or ip not in options.reverse_zone : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
continue |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
# reverse against the prefix origin |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
ptr = apply_reverse_zone(options, options.reverse_zone, ip) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
80 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
yield pvl.dns.zone.ZoneRecord.PTR(ptr, pvl.dns.zone.fqdn(host, domain)) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
def main (argv) : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
84 |
""" |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
Generate bind zonefiles from host definitions. |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
86 |
""" |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
parser = optparse.OptionParser(main.__doc__) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
89 |
parser.add_option_group(pvl.args.parser(parser)) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
hosts = optparse.OptionGroup(parser, "Hosts input") |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
hosts.add_option('--hosts-charset', metavar='CHARSET', default='utf-8', |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
help="Encoding used for host files") |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
hosts.add_option('--hosts-domain', metavar='DOMAIN', |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
96 |
help="Default domain for hosts") |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
97 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
98 |
parser.add_option_group(hosts) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
parser.add_option('--forward-zone', metavar='DOMAIN', |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
101 |
help="Generate forward zone for domain") |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
103 |
parser.add_option('--reverse-zone', metavar='PREFIX', |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
104 |
help="Generate reverse zone for prefx") |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
105 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
options, args = parser.parse_args(argv[1:]) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
107 |
pvl.args.apply(options) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
108 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
109 |
# input |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
110 |
hosts = list(apply_hosts(options, args)) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
111 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
113 |
if options.forward_zone : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
114 |
zone = process_hosts_forward(options, hosts) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
115 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
116 |
elif options.reverse_zone : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
117 |
options.reverse_zone = ipaddr.IPNetwork(options.reverse_zone) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
118 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
119 |
zone = process_hosts_reverse(options, hosts) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
120 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
121 |
else : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
122 |
log.error("nothing to do") |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
123 |
return 1 |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
124 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
125 |
for record in zone : |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
126 |
print unicode(record) |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
127 |
|
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
128 |
if __name__ == '__main__': |
713d0495288e
pvl.hosts-dns: generate --forward-zone=paivola.fi and --reverse-zone=194.197.235.0/24
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
129 |
pvl.args.main(main) |