author | Tero Marttila <tero.marttila@aalto.fi> |
Mon, 02 Mar 2015 12:54:27 +0200 | |
changeset 684 | fbac5a08c9d3 |
parent 641 | 9d36e312e6a7 |
permissions | -rw-r--r-- |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
#!/usr/bin/env python |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
|
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
""" |
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
4 |
Generate bind zonefiles from a given input zonefile. |
258
1ad9cec4f556
pvl.dns-zone: use pvl.args.apply_files
Tero Marttila <terom@paivola.fi>
parents:
252
diff
changeset
|
5 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
6 |
Takes a zonefile as input, and gives a new zonefile as output. |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
""" |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
9 |
import ipaddr |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
10 |
import logging; log = logging.getLogger('pvl.dns-generate') |
316
41bd6688b142
pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents:
294
diff
changeset
|
11 |
import optparse |
630
18939b861476
quickfix pvl.dns-zone
Tero Marttila <tero.marttila@aalto.fi>
parents:
332
diff
changeset
|
12 |
import pvl.args |
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
13 |
import pvl.dns.reverse |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
14 |
import pvl.dns.process |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
15 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
16 |
def check_zone (rrs, whitelist_names=set(), whitelist_types=set()): |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
""" |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
Parse host/IP pairs from the zone, and verify that they are unique. |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
|
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
20 |
As an exception, names listed in the given whitelist may have multiple IPs. |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
""" |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
22 |
|
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
by_name = {} |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
by_ip = {} |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
26 |
check = True |
293
6351acf3eb3b
pvl.dns-zone: use ZoneLine.load to passthrough zonefiles
Tero Marttila <terom@paivola.fi>
parents:
258
diff
changeset
|
27 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
28 |
for rr in rrs: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
29 |
name = (rr.origin, rr.name) |
293
6351acf3eb3b
pvl.dns-zone: use ZoneLine.load to passthrough zonefiles
Tero Marttila <terom@paivola.fi>
parents:
258
diff
changeset
|
30 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
31 |
# name |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
32 |
if name not in by_name: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
33 |
pass |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
35 |
elif rr.type in whitelist_types: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
36 |
log.debug("%s: Whitelist type duplicate: %s", rr, by_name[name]) |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
38 |
elif rr.name in whitelist_names: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
39 |
log.debug("%s: Whitelist name duplicate: %s", rr, by_name[name]) |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
41 |
else: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
42 |
log.warn("%s: Duplicate name: %s <-> %s", rr.line, rr, by_name[name]) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
43 |
check = False |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
44 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
45 |
by_name[name] = rr |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
46 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
47 |
# ip |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
48 |
if rr.type in ('A', 'AAAA'): |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
49 |
ip, = rr.data |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
50 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
51 |
if ip in by_ip: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
52 |
log.warn("%s: Duplicate IP: %s <-> %s", rr.line, rr, by_ip[ip]) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
53 |
check = False |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
54 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
55 |
by_ip[ip] = rr |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
56 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
57 |
return check |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
58 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
59 |
def process_zone_reverse (rrs, prefix): |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
""" |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
Process zone data -> reverse zone data. |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
""" |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
64 |
for r in rrs: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
65 |
if r.type == 'A': |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
ip, = r.data |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
68 |
ip = ipaddr.IPv4Address(ip) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
69 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
70 |
elif r.type == 'AAAA': |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
ip, = r.data |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
73 |
ip = ipaddr.IPv6Address(ip) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
74 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
75 |
else: |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
continue |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
78 |
if ip not in prefix: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
79 |
log.debug("%s: skip: %s not in %s", rr, ip, prefix) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
80 |
continue |
316
41bd6688b142
pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents:
294
diff
changeset
|
81 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
82 |
ptr = pvl.dns.reverse_label(prefix, ip) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
83 |
fqdn = pvl.dns.fqdn(r.name, r.origin) |
316
41bd6688b142
pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents:
294
diff
changeset
|
84 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
85 |
yield pvl.dns.ZoneRecord.PTR(ptr, fqdn) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
86 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
87 |
def main (argv): |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
88 |
parser = optparse.OptionParser(main.__doc__) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
89 |
parser.add_option_group(pvl.args.parser(parser)) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
90 |
parser.add_option_group(pvl.dns.process.optparser(parser)) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
91 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
92 |
parser.add_option('--zone-origin', metavar='DOMAIN', |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
93 |
help="Domain to use for hosts in zone") |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
94 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
95 |
# check stage |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
96 |
parser.add_option('--check-hosts', action='store_true', |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
97 |
help="Check that host/IPs are unique. Use --quiet to silence warnings, and test exit status") |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
98 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
99 |
parser.add_option('--check-exempt', metavar='HOST', action='append', |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
100 |
help="Allow given names to have multiple records") |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
101 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
102 |
# reverse stage |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
103 |
parser.add_option('--reverse-prefix', metavar='NET', |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
104 |
help="Generate forward zone for given subnet (192.0.2, 2001:db8)") |
316
41bd6688b142
pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents:
294
diff
changeset
|
105 |
|
41bd6688b142
pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents:
294
diff
changeset
|
106 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
107 |
parser.set_defaults( |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
108 |
check_exempt = [ |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
109 |
'@' |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
110 |
], |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
111 |
) |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
113 |
# input |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
114 |
options, args = pvl.args.parse(parser, argv) |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
115 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
116 |
if options.reverse_prefix and not options.zone_origin: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
117 |
log.error("--reverse-prefix requires --zone-origin") |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
118 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
119 |
zone = list(pvl.dns.process.apply_zone_records(options, options.zone_origin, args)) |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
120 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
121 |
# check |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
122 |
if options.check_hosts: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
123 |
whitelist_names = set(options.check_exempt) |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
124 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
125 |
log.info("Checking hosts: whitelist_names=%r", whitelist_names) |
316
41bd6688b142
pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents:
294
diff
changeset
|
126 |
|
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
127 |
if not check_zone(zone, whitelist_names=whitelist_names): |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
128 |
log.error("Check zone failed, see warnings") |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
129 |
return 2 |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
130 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
131 |
# transform |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
132 |
if options.reverse_prefix: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
133 |
prefix = pvl.dns.reverse.parse_prefix(options.reverse_prefix) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
134 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
135 |
zone = list(process_zone_reverse(zone, prefix)) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
136 |
else: |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
137 |
# pass through |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
138 |
pass |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
139 |
|
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
140 |
pvl.dns.process.apply_zone_output(options, zone) |
233
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
141 |
|
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
142 |
return 0 |
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
143 |
|
c4941645464c
import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
144 |
if __name__ == '__main__': |
641
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
145 |
pvl.args.main(main) |
9d36e312e6a7
pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
637
diff
changeset
|
146 |