diff --git a/changelog.txt b/changelog.txt index be83b2f7..0f62c9ad 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,8 @@ jc changelog +20200326 v1.9.3 +- Add axfr support for dig command parser + 20200312 v1.9.2 - Updated arp parser to fix OSX detection for some edge cases diff --git a/jc/cli.py b/jc/cli.py index 75573519..769fd913 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -13,7 +13,7 @@ import jc.utils class info(): - version = '1.9.2' + version = '1.9.3' description = 'jc cli output JSON conversion tool' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' diff --git a/jc/parsers/dig.py b/jc/parsers/dig.py index 6966942d..b0b39871 100644 --- a/jc/parsers/dig.py +++ b/jc/parsers/dig.py @@ -324,7 +324,7 @@ import jc.utils class info(): - version = '1.0' + version = '1.1' description = 'dig command parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' @@ -402,6 +402,14 @@ def process(proc_data): except (ValueError): entry[key] = None + if 'axfr' in entry: + for ax in entry['axfr']: + try: + ttl_int = int(ax['ttl']) + ax['ttl'] = ttl_int + except (ValueError): + ax['ttl'] = None + if 'answer' in entry: for ans in entry['answer']: try: @@ -507,6 +515,24 @@ def parse_answer(answer): 'ttl': answer_ttl, 'data': answer_data} +def parse_axfr(axfr): + #; <<>> DiG 9.11.14-3-Debian <<>> @81.4.108.41 axfr zonetransfer.me +nocookie + #; (1 server found) + #;; global options: +cmd + #zonetransfer.me. 7200 IN A 5.196.105.14 + axfr = axfr.split(maxsplit=4) + axfr_name = axfr[0] + axfr_ttl = axfr[1] + axfr_class = axfr[2] + axfr_type = axfr[3] + axfr_data = axfr[4] + + return {'name': axfr_name, + 'ttl': axfr_ttl, + 'class': axfr_class, + 'type': axfr_type, + 'data': axfr_data} + def parse(data, raw=False, quiet=False): """ @@ -534,23 +560,38 @@ def parse(data, raw=False, quiet=False): question = False authority = False answer = False + axfr = False output_entry = {} for line in cleandata: - if line.find(';; ->>HEADER<<-') == 0: + if line.startswith('; <<>> ') and line.lower().find(' axfr ') != -1: + question = False + authority = False + answer = False + axfr = True + axfr_list = [] + continue + + if line.find(';') == -1 and axfr: + axfr_list.append(parse_axfr(line)) + output_entry.update({'axfr': axfr_list}) + continue + + if line.startswith(';; ->>HEADER<<-'): output_entry = {} output_entry.update(parse_header(line)) continue - if line.find(';; flags:') == 0: + if line.startswith(';; flags:'): output_entry.update(parse_flags_line(line)) continue - if line.find(';; QUESTION SECTION:') == 0: + if line.startswith(';; QUESTION SECTION:'): question = True authority = False answer = False + axfr = False continue if question: @@ -558,12 +599,14 @@ def parse(data, raw=False, quiet=False): question = False authority = False answer = False + axfr = False continue - if line.find(';; AUTHORITY SECTION:') == 0: + if line.startswith(';; AUTHORITY SECTION:'): question = False authority = True answer = False + axfr = False authority_list = [] continue @@ -572,10 +615,11 @@ def parse(data, raw=False, quiet=False): output_entry.update({'authority': authority_list}) continue - if line.find(';; ANSWER SECTION:') == 0: + if line.startswith(';; ANSWER SECTION:'): question = False authority = False answer = True + axfr = False answer_list = [] continue @@ -586,24 +630,29 @@ def parse(data, raw=False, quiet=False): # footer consists of 4 lines # footer line 1 - if line.find(';; Query time:') == 0: + if line.startswith(';; Query time:'): output_entry.update({'query_time': line.split(':')[1].lstrip()}) continue # footer line 2 - if line.find(';; SERVER:') == 0: + if line.startswith(';; SERVER:'): output_entry.update({'server': line.split(':')[1].lstrip()}) continue # footer line 3 - if line.find(';; WHEN:') == 0: + if line.startswith(';; WHEN:'): output_entry.update({'when': line.split(':', maxsplit=1)[1].lstrip()}) continue # footer line 4 (last line) - if line.find(';; MSG SIZE rcvd:') == 0: + if line.startswith(';; MSG SIZE rcvd:'): output_entry.update({'rcvd': line.split(':')[1].lstrip()}) + if output_entry: + raw_output.append(output_entry) + elif line.startswith(';; XFR size:'): + output_entry.update({'size': line.split(':')[1].lstrip()}) + if output_entry: raw_output.append(output_entry) diff --git a/setup.py b/setup.py index 405b5dea..f2d1eccb 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ with open('README.md', 'r') as f: setuptools.setup( name='jc', - version='1.9.2', + version='1.9.3', author='Kelly Brazil', author_email='kellyjonbrazil@gmail.com', description='This tool serializes the output of popular command line tools and filetypes to structured JSON output.', diff --git a/tests/fixtures/centos-7.7/dig-axfr.json b/tests/fixtures/centos-7.7/dig-axfr.json new file mode 100644 index 00000000..b5e2c669 --- /dev/null +++ b/tests/fixtures/centos-7.7/dig-axfr.json @@ -0,0 +1 @@ +[{"axfr": [{"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "SOA", "data": "nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600"}, {"name": "zonetransfer.me.", "ttl": 300, "class": "IN", "type": "HINFO", "data": "\"Casio fx-700G\" \"Windows XP\""}, {"name": "zonetransfer.me.", "ttl": 301, "class": "IN", "type": "TXT", "data": "\"google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA\""}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "0 ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "10 ALT1.ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "10 ALT2.ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX2.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX3.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX4.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX5.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "5.196.105.14"}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "NS", "data": "nsztm1.digi.ninja."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "NS", "data": "nsztm2.digi.ninja."}, {"name": "_acme-challenge.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "TXT", "data": "\"6Oa05hbUJ9xSsvYy7pApQvwCUSSGgxvrbdizjePEsZI\""}, {"name": "_sip._tcp.zonetransfer.me.", "ttl": 14000, "class": "IN", "type": "SRV", "data": "0 0 5060 www.zonetransfer.me."}, {"name": "14.105.196.5.IN-ADDR.ARPA.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "PTR", "data": "www.zonetransfer.me."}, {"name": "asfdbauthdns.zonetransfer.me.", "ttl": 7900, "class": "IN", "type": "AFSDB", "data": "1 asfdbbox.zonetransfer.me."}, {"name": "asfdbbox.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "asfdbvolume.zonetransfer.me.", "ttl": 7800, "class": "IN", "type": "AFSDB", "data": "1 asfdbbox.zonetransfer.me."}, {"name": "canberra-office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "202.14.81.230"}, {"name": "contact.zonetransfer.me.", "ttl": 2592000, "class": "IN", "type": "TXT", "data": "\"Remember to call or email Pippa on +44 123 4567890 or pippa@zonetransfer.me when making DNS changes\""}, {"name": "dc-office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "143.228.181.132"}, {"name": "deadbeef.zonetransfer.me.", "ttl": 7201, "class": "IN", "type": "AAAA", "data": "dead:beaf::"}, {"name": "dr.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "LOC", "data": "53 20 56.558 N 1 38 33.526 W 0.00m 1m 10000m 10m"}, {"name": "DZC.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"AbCdEfG\""}, {"name": "email.zonetransfer.me.", "ttl": 2222, "class": "IN", "type": "NAPTR", "data": "1 1 \"P\" \"E2U+email\" \"\" email.zonetransfer.me.zonetransfer.me."}, {"name": "email.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "74.125.206.26"}, {"name": "Hello.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"Hi to Josh and all his class\""}, {"name": "home.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "Info.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"ZoneTransfer.me service provided by Robin Wood - robin@digi.ninja. See http://digi.ninja/projects/zonetransferme.php for more information.\""}, {"name": "internal.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "NS", "data": "intns1.zonetransfer.me."}, {"name": "internal.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "NS", "data": "intns2.zonetransfer.me."}, {"name": "intns1.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "A", "data": "81.4.108.41"}, {"name": "intns2.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "A", "data": "167.88.42.94"}, {"name": "office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "4.23.39.254"}, {"name": "ipv6actnow.org.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "AAAA", "data": "2001:67c:2e8:11::c100:1332"}, {"name": "owa.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "207.46.197.32"}, {"name": "robinwood.zonetransfer.me.", "ttl": 302, "class": "IN", "type": "TXT", "data": "\"Robin Wood\""}, {"name": "rp.zonetransfer.me.", "ttl": 321, "class": "IN", "type": "RP", "data": "robin.zonetransfer.me. robinwood.zonetransfer.me."}, {"name": "sip.zonetransfer.me.", "ttl": 3333, "class": "IN", "type": "NAPTR", "data": "2 3 \"P\" \"E2U+sip\" \"!^.*$!sip:customer-service@zonetransfer.me!\" ."}, {"name": "sqli.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "TXT", "data": "\"' or 1=1 --\""}, {"name": "staging.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "CNAME", "data": "www.sydneyoperahouse.com."}, {"name": "alltcpportsopen.firewall.test.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "testing.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "CNAME", "data": "www.zonetransfer.me."}, {"name": "vpn.zonetransfer.me.", "ttl": 4000, "class": "IN", "type": "A", "data": "174.36.59.154"}, {"name": "www.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "5.196.105.14"}, {"name": "xss.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "TXT", "data": "\"'>\""}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "SOA", "data": "nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600"}], "query_time": 182, "server": "81.4.108.41#53(81.4.108.41)", "when": "Wed Mar 25 20:01:47 PDT 2020", "size": "50 records (messages 1, bytes 1994)"}] diff --git a/tests/fixtures/centos-7.7/dig-axfr.out b/tests/fixtures/centos-7.7/dig-axfr.out new file mode 100644 index 00000000..c004f610 --- /dev/null +++ b/tests/fixtures/centos-7.7/dig-axfr.out @@ -0,0 +1,60 @@ + +; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> @81.4.108.41 AXFR zonetransfer.me +nocookie +; (1 server found) +;; global options: +cmd +zonetransfer.me. 7200 IN SOA nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600 +zonetransfer.me. 300 IN HINFO "Casio fx-700G" "Windows XP" +zonetransfer.me. 301 IN TXT "google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA" +zonetransfer.me. 7200 IN MX 0 ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 10 ALT1.ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 10 ALT2.ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX2.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX3.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX4.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX5.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN A 5.196.105.14 +zonetransfer.me. 7200 IN NS nsztm1.digi.ninja. +zonetransfer.me. 7200 IN NS nsztm2.digi.ninja. +_acme-challenge.zonetransfer.me. 301 IN TXT "6Oa05hbUJ9xSsvYy7pApQvwCUSSGgxvrbdizjePEsZI" +_sip._tcp.zonetransfer.me. 14000 IN SRV 0 0 5060 www.zonetransfer.me. +14.105.196.5.IN-ADDR.ARPA.zonetransfer.me. 7200 IN PTR www.zonetransfer.me. +asfdbauthdns.zonetransfer.me. 7900 IN AFSDB 1 asfdbbox.zonetransfer.me. +asfdbbox.zonetransfer.me. 7200 IN A 127.0.0.1 +asfdbvolume.zonetransfer.me. 7800 IN AFSDB 1 asfdbbox.zonetransfer.me. +canberra-office.zonetransfer.me. 7200 IN A 202.14.81.230 +cmdexec.zonetransfer.me. 300 IN TXT "; ls" +contact.zonetransfer.me. 2592000 IN TXT "Remember to call or email Pippa on +44 123 4567890 or pippa@zonetransfer.me when making DNS changes" +dc-office.zonetransfer.me. 7200 IN A 143.228.181.132 +deadbeef.zonetransfer.me. 7201 IN AAAA dead:beaf:: +dr.zonetransfer.me. 300 IN LOC 53 20 56.558 N 1 38 33.526 W 0.00m 1m 10000m 10m +DZC.zonetransfer.me. 7200 IN TXT "AbCdEfG" +email.zonetransfer.me. 2222 IN NAPTR 1 1 "P" "E2U+email" "" email.zonetransfer.me.zonetransfer.me. +email.zonetransfer.me. 7200 IN A 74.125.206.26 +Hello.zonetransfer.me. 7200 IN TXT "Hi to Josh and all his class" +home.zonetransfer.me. 7200 IN A 127.0.0.1 +Info.zonetransfer.me. 7200 IN TXT "ZoneTransfer.me service provided by Robin Wood - robin@digi.ninja. See http://digi.ninja/projects/zonetransferme.php for more information." +internal.zonetransfer.me. 300 IN NS intns1.zonetransfer.me. +internal.zonetransfer.me. 300 IN NS intns2.zonetransfer.me. +intns1.zonetransfer.me. 300 IN A 81.4.108.41 +intns2.zonetransfer.me. 300 IN A 167.88.42.94 +office.zonetransfer.me. 7200 IN A 4.23.39.254 +ipv6actnow.org.zonetransfer.me. 7200 IN AAAA 2001:67c:2e8:11::c100:1332 +owa.zonetransfer.me. 7200 IN A 207.46.197.32 +robinwood.zonetransfer.me. 302 IN TXT "Robin Wood" +rp.zonetransfer.me. 321 IN RP robin.zonetransfer.me. robinwood.zonetransfer.me. +sip.zonetransfer.me. 3333 IN NAPTR 2 3 "P" "E2U+sip" "!^.*$!sip:customer-service@zonetransfer.me!" . +sqli.zonetransfer.me. 300 IN TXT "' or 1=1 --" +sshock.zonetransfer.me. 7200 IN TXT "() { :]}; echo ShellShocked" +staging.zonetransfer.me. 7200 IN CNAME www.sydneyoperahouse.com. +alltcpportsopen.firewall.test.zonetransfer.me. 301 IN A 127.0.0.1 +testing.zonetransfer.me. 301 IN CNAME www.zonetransfer.me. +vpn.zonetransfer.me. 4000 IN A 174.36.59.154 +www.zonetransfer.me. 7200 IN A 5.196.105.14 +xss.zonetransfer.me. 300 IN TXT "'>" +zonetransfer.me. 7200 IN SOA nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600 +;; Query time: 182 msec +;; SERVER: 81.4.108.41#53(81.4.108.41) +;; WHEN: Wed Mar 25 20:01:47 PDT 2020 +;; XFR size: 50 records (messages 1, bytes 1994) + + diff --git a/tests/fixtures/osx-10.14.6/dig-axfr.json b/tests/fixtures/osx-10.14.6/dig-axfr.json new file mode 100644 index 00000000..b01ba206 --- /dev/null +++ b/tests/fixtures/osx-10.14.6/dig-axfr.json @@ -0,0 +1 @@ +[{"axfr": [{"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "SOA", "data": "nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600"}, {"name": "zonetransfer.me.", "ttl": 300, "class": "IN", "type": "HINFO", "data": "\"Casio fx-700G\" \"Windows XP\""}, {"name": "zonetransfer.me.", "ttl": 301, "class": "IN", "type": "TXT", "data": "\"google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA\""}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "0 ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "10 ALT1.ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "10 ALT2.ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX2.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX3.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX4.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX5.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "5.196.105.14"}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "NS", "data": "nsztm1.digi.ninja."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "NS", "data": "nsztm2.digi.ninja."}, {"name": "_acme-challenge.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "TXT", "data": "\"6Oa05hbUJ9xSsvYy7pApQvwCUSSGgxvrbdizjePEsZI\""}, {"name": "_sip._tcp.zonetransfer.me.", "ttl": 14000, "class": "IN", "type": "SRV", "data": "0 0 5060 www.zonetransfer.me."}, {"name": "14.105.196.5.IN-ADDR.ARPA.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "PTR", "data": "www.zonetransfer.me."}, {"name": "asfdbauthdns.zonetransfer.me.", "ttl": 7900, "class": "IN", "type": "AFSDB", "data": "1 asfdbbox.zonetransfer.me."}, {"name": "asfdbbox.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "asfdbvolume.zonetransfer.me.", "ttl": 7800, "class": "IN", "type": "AFSDB", "data": "1 asfdbbox.zonetransfer.me."}, {"name": "canberra-office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "202.14.81.230"}, {"name": "contact.zonetransfer.me.", "ttl": 2592000, "class": "IN", "type": "TXT", "data": "\"Remember to call or email Pippa on +44 123 4567890 or pippa@zonetransfer.me when making DNS changes\""}, {"name": "dc-office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "143.228.181.132"}, {"name": "deadbeef.zonetransfer.me.", "ttl": 7201, "class": "IN", "type": "AAAA", "data": "dead:beaf::"}, {"name": "dr.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "LOC", "data": "53 20 56.558 N 1 38 33.526 W 0.00m 1m 10000m 10m"}, {"name": "DZC.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"AbCdEfG\""}, {"name": "email.zonetransfer.me.", "ttl": 2222, "class": "IN", "type": "NAPTR", "data": "1 1 \"P\" \"E2U+email\" \"\" email.zonetransfer.me.zonetransfer.me."}, {"name": "email.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "74.125.206.26"}, {"name": "Hello.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"Hi to Josh and all his class\""}, {"name": "home.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "Info.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"ZoneTransfer.me service provided by Robin Wood - robin@digi.ninja. See http://digi.ninja/projects/zonetransferme.php for more information.\""}, {"name": "internal.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "NS", "data": "intns1.zonetransfer.me."}, {"name": "internal.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "NS", "data": "intns2.zonetransfer.me."}, {"name": "intns1.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "A", "data": "81.4.108.41"}, {"name": "intns2.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "A", "data": "167.88.42.94"}, {"name": "office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "4.23.39.254"}, {"name": "ipv6actnow.org.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "AAAA", "data": "2001:67c:2e8:11::c100:1332"}, {"name": "owa.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "207.46.197.32"}, {"name": "robinwood.zonetransfer.me.", "ttl": 302, "class": "IN", "type": "TXT", "data": "\"Robin Wood\""}, {"name": "rp.zonetransfer.me.", "ttl": 321, "class": "IN", "type": "RP", "data": "robin.zonetransfer.me. robinwood.zonetransfer.me."}, {"name": "sip.zonetransfer.me.", "ttl": 3333, "class": "IN", "type": "NAPTR", "data": "2 3 \"P\" \"E2U+sip\" \"!^.*$!sip:customer-service@zonetransfer.me!\" ."}, {"name": "sqli.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "TXT", "data": "\"' or 1=1 --\""}, {"name": "staging.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "CNAME", "data": "www.sydneyoperahouse.com."}, {"name": "alltcpportsopen.firewall.test.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "testing.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "CNAME", "data": "www.zonetransfer.me."}, {"name": "vpn.zonetransfer.me.", "ttl": 4000, "class": "IN", "type": "A", "data": "174.36.59.154"}, {"name": "www.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "5.196.105.14"}, {"name": "xss.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "TXT", "data": "\"'>\""}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "SOA", "data": "nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600"}], "query_time": 170, "server": "81.4.108.41#53(81.4.108.41)", "when": "Thu Mar 26 16:31:06 PDT 2020", "size": "50 records (messages 1, bytes 1994)"}] diff --git a/tests/fixtures/osx-10.14.6/dig-axfr.out b/tests/fixtures/osx-10.14.6/dig-axfr.out new file mode 100644 index 00000000..37d725a8 --- /dev/null +++ b/tests/fixtures/osx-10.14.6/dig-axfr.out @@ -0,0 +1,59 @@ + +; <<>> DiG 9.10.6 <<>> @81.4.108.41 AXFR zonetransfer.me +; (1 server found) +;; global options: +cmd +zonetransfer.me. 7200 IN SOA nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600 +zonetransfer.me. 300 IN HINFO "Casio fx-700G" "Windows XP" +zonetransfer.me. 301 IN TXT "google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA" +zonetransfer.me. 7200 IN MX 0 ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 10 ALT1.ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 10 ALT2.ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX2.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX3.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX4.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX5.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN A 5.196.105.14 +zonetransfer.me. 7200 IN NS nsztm1.digi.ninja. +zonetransfer.me. 7200 IN NS nsztm2.digi.ninja. +_acme-challenge.zonetransfer.me. 301 IN TXT "6Oa05hbUJ9xSsvYy7pApQvwCUSSGgxvrbdizjePEsZI" +_sip._tcp.zonetransfer.me. 14000 IN SRV 0 0 5060 www.zonetransfer.me. +14.105.196.5.IN-ADDR.ARPA.zonetransfer.me. 7200 IN PTR www.zonetransfer.me. +asfdbauthdns.zonetransfer.me. 7900 IN AFSDB 1 asfdbbox.zonetransfer.me. +asfdbbox.zonetransfer.me. 7200 IN A 127.0.0.1 +asfdbvolume.zonetransfer.me. 7800 IN AFSDB 1 asfdbbox.zonetransfer.me. +canberra-office.zonetransfer.me. 7200 IN A 202.14.81.230 +cmdexec.zonetransfer.me. 300 IN TXT "; ls" +contact.zonetransfer.me. 2592000 IN TXT "Remember to call or email Pippa on +44 123 4567890 or pippa@zonetransfer.me when making DNS changes" +dc-office.zonetransfer.me. 7200 IN A 143.228.181.132 +deadbeef.zonetransfer.me. 7201 IN AAAA dead:beaf:: +dr.zonetransfer.me. 300 IN LOC 53 20 56.558 N 1 38 33.526 W 0.00m 1m 10000m 10m +DZC.zonetransfer.me. 7200 IN TXT "AbCdEfG" +email.zonetransfer.me. 2222 IN NAPTR 1 1 "P" "E2U+email" "" email.zonetransfer.me.zonetransfer.me. +email.zonetransfer.me. 7200 IN A 74.125.206.26 +Hello.zonetransfer.me. 7200 IN TXT "Hi to Josh and all his class" +home.zonetransfer.me. 7200 IN A 127.0.0.1 +Info.zonetransfer.me. 7200 IN TXT "ZoneTransfer.me service provided by Robin Wood - robin@digi.ninja. See http://digi.ninja/projects/zonetransferme.php for more information." +internal.zonetransfer.me. 300 IN NS intns1.zonetransfer.me. +internal.zonetransfer.me. 300 IN NS intns2.zonetransfer.me. +intns1.zonetransfer.me. 300 IN A 81.4.108.41 +intns2.zonetransfer.me. 300 IN A 167.88.42.94 +office.zonetransfer.me. 7200 IN A 4.23.39.254 +ipv6actnow.org.zonetransfer.me. 7200 IN AAAA 2001:67c:2e8:11::c100:1332 +owa.zonetransfer.me. 7200 IN A 207.46.197.32 +robinwood.zonetransfer.me. 302 IN TXT "Robin Wood" +rp.zonetransfer.me. 321 IN RP robin.zonetransfer.me. robinwood.zonetransfer.me. +sip.zonetransfer.me. 3333 IN NAPTR 2 3 "P" "E2U+sip" "!^.*$!sip:customer-service@zonetransfer.me!" . +sqli.zonetransfer.me. 300 IN TXT "' or 1=1 --" +sshock.zonetransfer.me. 7200 IN TXT "() { :]}; echo ShellShocked" +staging.zonetransfer.me. 7200 IN CNAME www.sydneyoperahouse.com. +alltcpportsopen.firewall.test.zonetransfer.me. 301 IN A 127.0.0.1 +testing.zonetransfer.me. 301 IN CNAME www.zonetransfer.me. +vpn.zonetransfer.me. 4000 IN A 174.36.59.154 +www.zonetransfer.me. 7200 IN A 5.196.105.14 +xss.zonetransfer.me. 300 IN TXT "'>" +zonetransfer.me. 7200 IN SOA nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600 +;; Query time: 170 msec +;; SERVER: 81.4.108.41#53(81.4.108.41) +;; WHEN: Thu Mar 26 16:31:06 PDT 2020 +;; XFR size: 50 records (messages 1, bytes 1994) + diff --git a/tests/fixtures/ubuntu-18.04/dig-axfr.json b/tests/fixtures/ubuntu-18.04/dig-axfr.json new file mode 100644 index 00000000..b7548c91 --- /dev/null +++ b/tests/fixtures/ubuntu-18.04/dig-axfr.json @@ -0,0 +1 @@ +[{"axfr": [{"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "SOA", "data": "nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600"}, {"name": "zonetransfer.me.", "ttl": 300, "class": "IN", "type": "HINFO", "data": "\"Casio fx-700G\" \"Windows XP\""}, {"name": "zonetransfer.me.", "ttl": 301, "class": "IN", "type": "TXT", "data": "\"google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA\""}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "0 ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "10 ALT1.ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "10 ALT2.ASPMX.L.GOOGLE.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX2.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX3.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX4.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "MX", "data": "20 ASPMX5.GOOGLEMAIL.COM."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "5.196.105.14"}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "NS", "data": "nsztm1.digi.ninja."}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "NS", "data": "nsztm2.digi.ninja."}, {"name": "_acme-challenge.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "TXT", "data": "\"6Oa05hbUJ9xSsvYy7pApQvwCUSSGgxvrbdizjePEsZI\""}, {"name": "_sip._tcp.zonetransfer.me.", "ttl": 14000, "class": "IN", "type": "SRV", "data": "0 0 5060 www.zonetransfer.me."}, {"name": "14.105.196.5.IN-ADDR.ARPA.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "PTR", "data": "www.zonetransfer.me."}, {"name": "asfdbauthdns.zonetransfer.me.", "ttl": 7900, "class": "IN", "type": "AFSDB", "data": "1 asfdbbox.zonetransfer.me."}, {"name": "asfdbbox.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "asfdbvolume.zonetransfer.me.", "ttl": 7800, "class": "IN", "type": "AFSDB", "data": "1 asfdbbox.zonetransfer.me."}, {"name": "canberra-office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "202.14.81.230"}, {"name": "contact.zonetransfer.me.", "ttl": 2592000, "class": "IN", "type": "TXT", "data": "\"Remember to call or email Pippa on +44 123 4567890 or pippa@zonetransfer.me when making DNS changes\""}, {"name": "dc-office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "143.228.181.132"}, {"name": "deadbeef.zonetransfer.me.", "ttl": 7201, "class": "IN", "type": "AAAA", "data": "dead:beaf::"}, {"name": "dr.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "LOC", "data": "53 20 56.558 N 1 38 33.526 W 0.00m 1m 10000m 10m"}, {"name": "DZC.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"AbCdEfG\""}, {"name": "email.zonetransfer.me.", "ttl": 2222, "class": "IN", "type": "NAPTR", "data": "1 1 \"P\" \"E2U+email\" \"\" email.zonetransfer.me.zonetransfer.me."}, {"name": "email.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "74.125.206.26"}, {"name": "Hello.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"Hi to Josh and all his class\""}, {"name": "home.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "Info.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "TXT", "data": "\"ZoneTransfer.me service provided by Robin Wood - robin@digi.ninja. See http://digi.ninja/projects/zonetransferme.php for more information.\""}, {"name": "internal.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "NS", "data": "intns1.zonetransfer.me."}, {"name": "internal.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "NS", "data": "intns2.zonetransfer.me."}, {"name": "intns1.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "A", "data": "81.4.108.41"}, {"name": "intns2.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "A", "data": "167.88.42.94"}, {"name": "office.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "4.23.39.254"}, {"name": "ipv6actnow.org.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "AAAA", "data": "2001:67c:2e8:11::c100:1332"}, {"name": "owa.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "207.46.197.32"}, {"name": "robinwood.zonetransfer.me.", "ttl": 302, "class": "IN", "type": "TXT", "data": "\"Robin Wood\""}, {"name": "rp.zonetransfer.me.", "ttl": 321, "class": "IN", "type": "RP", "data": "robin.zonetransfer.me. robinwood.zonetransfer.me."}, {"name": "sip.zonetransfer.me.", "ttl": 3333, "class": "IN", "type": "NAPTR", "data": "2 3 \"P\" \"E2U+sip\" \"!^.*$!sip:customer-service@zonetransfer.me!\" ."}, {"name": "sqli.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "TXT", "data": "\"' or 1=1 --\""}, {"name": "staging.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "CNAME", "data": "www.sydneyoperahouse.com."}, {"name": "alltcpportsopen.firewall.test.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "A", "data": "127.0.0.1"}, {"name": "testing.zonetransfer.me.", "ttl": 301, "class": "IN", "type": "CNAME", "data": "www.zonetransfer.me."}, {"name": "vpn.zonetransfer.me.", "ttl": 4000, "class": "IN", "type": "A", "data": "174.36.59.154"}, {"name": "www.zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "A", "data": "5.196.105.14"}, {"name": "xss.zonetransfer.me.", "ttl": 300, "class": "IN", "type": "TXT", "data": "\"'>\""}, {"name": "zonetransfer.me.", "ttl": 7200, "class": "IN", "type": "SOA", "data": "nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600"}], "query_time": 105, "server": "81.4.108.41#53(81.4.108.41)", "when": "Wed Mar 25 14:34:55 EDT 2020", "size": "50 records (messages 1, bytes 1994)"}] diff --git a/tests/fixtures/ubuntu-18.04/dig-axfr.out b/tests/fixtures/ubuntu-18.04/dig-axfr.out new file mode 100644 index 00000000..c7e6a744 --- /dev/null +++ b/tests/fixtures/ubuntu-18.04/dig-axfr.out @@ -0,0 +1,57 @@ +; <<>> DiG 9.11.14-3-Debian <<>> @81.4.108.41 axfr zonetransfer.me +nocookie +; (1 server found) +;; global options: +cmd +zonetransfer.me. 7200 IN SOA nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600 +zonetransfer.me. 300 IN HINFO "Casio fx-700G" "Windows XP" +zonetransfer.me. 301 IN TXT "google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA" +zonetransfer.me. 7200 IN MX 0 ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 10 ALT1.ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 10 ALT2.ASPMX.L.GOOGLE.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX2.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX3.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX4.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN MX 20 ASPMX5.GOOGLEMAIL.COM. +zonetransfer.me. 7200 IN A 5.196.105.14 +zonetransfer.me. 7200 IN NS nsztm1.digi.ninja. +zonetransfer.me. 7200 IN NS nsztm2.digi.ninja. +_acme-challenge.zonetransfer.me. 301 IN TXT "6Oa05hbUJ9xSsvYy7pApQvwCUSSGgxvrbdizjePEsZI" +_sip._tcp.zonetransfer.me. 14000 IN SRV 0 0 5060 www.zonetransfer.me. +14.105.196.5.IN-ADDR.ARPA.zonetransfer.me. 7200 IN PTR www.zonetransfer.me. +asfdbauthdns.zonetransfer.me. 7900 IN AFSDB 1 asfdbbox.zonetransfer.me. +asfdbbox.zonetransfer.me. 7200 IN A 127.0.0.1 +asfdbvolume.zonetransfer.me. 7800 IN AFSDB 1 asfdbbox.zonetransfer.me. +canberra-office.zonetransfer.me. 7200 IN A 202.14.81.230 +cmdexec.zonetransfer.me. 300 IN TXT "; ls" +contact.zonetransfer.me. 2592000 IN TXT "Remember to call or email Pippa on +44 123 4567890 or pippa@zonetransfer.me when making DNS changes" +dc-office.zonetransfer.me. 7200 IN A 143.228.181.132 +deadbeef.zonetransfer.me. 7201 IN AAAA dead:beaf:: +dr.zonetransfer.me. 300 IN LOC 53 20 56.558 N 1 38 33.526 W 0.00m 1m 10000m 10m +DZC.zonetransfer.me. 7200 IN TXT "AbCdEfG" +email.zonetransfer.me. 2222 IN NAPTR 1 1 "P" "E2U+email" "" email.zonetransfer.me.zonetransfer.me. +email.zonetransfer.me. 7200 IN A 74.125.206.26 +Hello.zonetransfer.me. 7200 IN TXT "Hi to Josh and all his class" +home.zonetransfer.me. 7200 IN A 127.0.0.1 +Info.zonetransfer.me. 7200 IN TXT "ZoneTransfer.me service provided by Robin Wood - robin@digi.ninja. See http://digi.ninja/projects/zonetransferme.php for more information." +internal.zonetransfer.me. 300 IN NS intns1.zonetransfer.me. +internal.zonetransfer.me. 300 IN NS intns2.zonetransfer.me. +intns1.zonetransfer.me. 300 IN A 81.4.108.41 +intns2.zonetransfer.me. 300 IN A 167.88.42.94 +office.zonetransfer.me. 7200 IN A 4.23.39.254 +ipv6actnow.org.zonetransfer.me. 7200 IN AAAA 2001:67c:2e8:11::c100:1332 +owa.zonetransfer.me. 7200 IN A 207.46.197.32 +robinwood.zonetransfer.me. 302 IN TXT "Robin Wood" +rp.zonetransfer.me. 321 IN RP robin.zonetransfer.me. robinwood.zonetransfer.me. +sip.zonetransfer.me. 3333 IN NAPTR 2 3 "P" "E2U+sip" "!^.*$!sip:customer-service@zonetransfer.me!" . +sqli.zonetransfer.me. 300 IN TXT "' or 1=1 --" +sshock.zonetransfer.me. 7200 IN TXT "() { :]}; echo ShellShocked" +staging.zonetransfer.me. 7200 IN CNAME www.sydneyoperahouse.com. +alltcpportsopen.firewall.test.zonetransfer.me. 301 IN A 127.0.0.1 +testing.zonetransfer.me. 301 IN CNAME www.zonetransfer.me. +vpn.zonetransfer.me. 4000 IN A 174.36.59.154 +www.zonetransfer.me. 7200 IN A 5.196.105.14 +xss.zonetransfer.me. 300 IN TXT "'>" +zonetransfer.me. 7200 IN SOA nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600 +;; Query time: 105 msec +;; SERVER: 81.4.108.41#53(81.4.108.41) +;; WHEN: Wed Mar 25 14:34:55 EDT 2020 +;; XFR size: 50 records (messages 1, bytes 1994) diff --git a/tests/test_dig.py b/tests/test_dig.py index 7e8ba712..6e7ad431 100644 --- a/tests/test_dig.py +++ b/tests/test_dig.py @@ -28,6 +28,33 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-aaaa.out'), 'r', encoding='utf-8') as f: self.ubuntu_18_4_dig_aaaa = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-axfr.out'), 'r', encoding='utf-8') as f: + self.centos_7_7_dig_axfr = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-axfr.out'), 'r', encoding='utf-8') as f: + self.ubuntu_18_4_dig_axfr = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig.out'), 'r', encoding='utf-8') as f: + self.osx_10_11_6_dig = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-x.out'), 'r', encoding='utf-8') as f: + self.osx_10_11_6_dig_x = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-aaaa.out'), 'r', encoding='utf-8') as f: + self.osx_10_11_6_dig_aaaa = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig.out'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_dig = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-x.out'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_dig_x = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-aaaa.out'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_dig_aaaa = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-axfr.out'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_dig_axfr = f.read() + # output with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig.json'), 'r', encoding='utf-8') as f: self.centos_7_7_dig_json = json.loads(f.read()) @@ -47,6 +74,33 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-aaaa.json'), 'r', encoding='utf-8') as f: self.ubuntu_18_4_dig_aaaa_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-axfr.json'), 'r', encoding='utf-8') as f: + self.centos_7_7_dig_axfr_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-axfr.json'), 'r', encoding='utf-8') as f: + self.ubuntu_18_4_dig_axfr_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig.json'), 'r', encoding='utf-8') as f: + self.osx_10_11_6_dig_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-x.json'), 'r', encoding='utf-8') as f: + self.osx_10_11_6_dig_x_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-aaaa.json'), 'r', encoding='utf-8') as f: + self.osx_10_11_6_dig_aaaa_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig.json'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_dig_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-x.json'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_dig_x_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-aaaa.json'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_dig_aaaa_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-axfr.json'), 'r', encoding='utf-8') as f: + self.osx_10_14_6_dig_axfr_json = json.loads(f.read()) + def test_dig_centos_7_7(self): """ Test 'dig' on Centos 7.7 @@ -83,6 +137,60 @@ class MyTests(unittest.TestCase): """ self.assertEqual(jc.parsers.dig.parse(self.ubuntu_18_4_dig_aaaa, quiet=True), self.ubuntu_18_4_dig_aaaa_json) + def test_dig_axfr_centos_7_7(self): + """ + Test 'dig axfr' on Centos 7.7 + """ + self.assertEqual(jc.parsers.dig.parse(self.centos_7_7_dig_axfr, quiet=True), self.centos_7_7_dig_axfr_json) + + def test_dig_axfr_ubuntu_18_4(self): + """ + Test 'dig axfr' on Ubuntu 18.4 + """ + self.assertEqual(jc.parsers.dig.parse(self.ubuntu_18_4_dig_axfr, quiet=True), self.ubuntu_18_4_dig_axfr_json) + + def test_dig_osx_10_11_6(self): + """ + Test 'dig' on OSX 10.11.6 + """ + self.assertEqual(jc.parsers.dig.parse(self.osx_10_11_6_dig, quiet=True), self.osx_10_11_6_dig_json) + + def test_dig_x_osx_10_11_6(self): + """ + Test 'dig -x' on OSX 10.11.6 + """ + self.assertEqual(jc.parsers.dig.parse(self.osx_10_11_6_dig_x, quiet=True), self.osx_10_11_6_dig_x_json) + + def test_dig_aaaa_osx_10_11_6(self): + """ + Test 'dig -aaaa' on OSX 10.11.6 + """ + self.assertEqual(jc.parsers.dig.parse(self.osx_10_11_6_dig_aaaa, quiet=True), self.osx_10_11_6_dig_aaaa_json) + + def test_dig_osx_10_14_6(self): + """ + Test 'dig' on OSX 10.14.6 + """ + self.assertEqual(jc.parsers.dig.parse(self.osx_10_14_6_dig, quiet=True), self.osx_10_14_6_dig_json) + + def test_dig_x_osx_10_14_6(self): + """ + Test 'dig -x' on OSX 10.14.6 + """ + self.assertEqual(jc.parsers.dig.parse(self.osx_10_14_6_dig_x, quiet=True), self.osx_10_14_6_dig_x_json) + + def test_dig_aaaa_osx_10_14_6(self): + """ + Test 'dig -aaaa' on OSX 10.14.6 + """ + self.assertEqual(jc.parsers.dig.parse(self.osx_10_14_6_dig_aaaa, quiet=True), self.osx_10_14_6_dig_aaaa_json) + + def test_dig_axfr_osx_10_14_6(self): + """ + Test 'dig axfr' on OSX 10.14.6 + """ + self.assertEqual(jc.parsers.dig.parse(self.osx_10_14_6_dig_axfr, quiet=True), self.osx_10_14_6_dig_axfr_json) + if __name__ == '__main__': unittest.main()