diff --git a/CHANGELOG b/CHANGELOG
index 7353e840..ca44d9af 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -15,6 +15,7 @@ jc changelog
change_time_epoch, change_time_epoch_utc, birth_time_epoch, birth_time_epoch_utc fields
- Update timedatectl parser to add epoch_utc field
- Update who parser to add epoch field
+- Update dig parser to add when_epoch and when_epoch_utc fields
- Add -h option to display the help text. Piping errors no longer show the help text.
- Add -v option to display version information.
- Make all external python library dependencies optional: pygments, ruamel.yaml, xmltodict
diff --git a/EXAMPLES.md b/EXAMPLES.md
index a9eb7319..756449a5 100644
--- a/EXAMPLES.md
+++ b/EXAMPLES.md
@@ -548,7 +548,7 @@ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p # or: jc -p dig
```json
[
{
- "id": 5509,
+ "id": 52172,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -570,38 +570,40 @@ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p # or: jc -p dig
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
+ "ttl": 27,
+ "data": "151.101.65.67"
+ },
+ {
+ "name": "cnn.com.",
+ "class": "IN",
+ "type": "A",
+ "ttl": 27,
"data": "151.101.129.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
- "data": "151.101.193.67"
- },
- {
- "name": "cnn.com.",
- "class": "IN",
- "type": "A",
- "ttl": 60,
+ "ttl": 27,
"data": "151.101.1.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
- "data": "151.101.65.67"
+ "ttl": 27,
+ "data": "151.101.193.67"
}
],
- "query_time": 28,
+ "query_time": 38,
"server": "2600",
- "when": "Tue Nov 12 07:13:03 PST 2019",
- "rcvd": 100
+ "when": "Tue Mar 30 20:07:59 PDT 2021",
+ "rcvd": 100,
+ "when_epoch": 1617160079,
+ "when_epoch_utc": null
},
{
- "id": 62696,
+ "id": 36292,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -657,10 +659,12 @@ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p # or: jc -p dig
"data": "ns-576.awsdns-08.net."
}
],
- "query_time": 29,
+ "query_time": 27,
"server": "205.251.194.64#53(205.251.194.64)",
- "when": "Tue Nov 12 07:13:03 PST 2019",
- "rcvd": 212
+ "when": "Tue Mar 30 20:07:59 PDT 2021",
+ "rcvd": 212,
+ "when_epoch": 1617160079,
+ "when_epoch_utc": null
}
]
```
@@ -670,7 +674,7 @@ dig -x 1.1.1.1 | jc --dig -p # or: jc -p dig -x 1.1.1.1
```json
[
{
- "id": 50324,
+ "id": 22191,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -692,14 +696,16 @@ dig -x 1.1.1.1 | jc --dig -p # or: jc -p dig -x 1.1.1.1
"name": "1.1.1.1.in-addr.arpa.",
"class": "IN",
"type": "PTR",
- "ttl": 1634,
+ "ttl": 1800,
"data": "one.one.one.one."
}
],
- "query_time": 36,
+ "query_time": 44,
"server": "2600",
- "when": "Tue Nov 12 07:13:49 PST 2019",
- "rcvd": 78
+ "when": "Tue Mar 30 20:10:34 PDT 2021",
+ "rcvd": 78,
+ "when_epoch": 1617160234,
+ "when_epoch_utc": null
}
]
```
diff --git a/README.md b/README.md
index 11636d8f..13cc39a1 100644
--- a/README.md
+++ b/README.md
@@ -350,7 +350,7 @@ dig cnn.com @205.251.194.64 | jc --dig -p # or: jc -p dig cnn.com @205
```json
[
{
- "id": 5509,
+ "id": 52172,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -372,14 +372,16 @@ dig cnn.com @205.251.194.64 | jc --dig -p # or: jc -p dig cnn.com @205
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
- "data": "151.101.129.67"
+ "ttl": 27,
+ "data": "151.101.65.67"
}
],
- "query_time": 28,
+ "query_time": 38,
"server": "2600",
- "when": "Tue Nov 12 07:13:03 PST 2019",
- "rcvd": 100
+ "when": "Tue Mar 30 20:07:59 PDT 2021",
+ "rcvd": 100,
+ "when_epoch": 1617160079,
+ "when_epoch_utc": null
}
]
```
diff --git a/docs/parsers/dig.md b/docs/parsers/dig.md
index 74789309..e3ad01e8 100644
--- a/docs/parsers/dig.md
+++ b/docs/parsers/dig.md
@@ -2,6 +2,10 @@
# jc.parsers.dig
jc - JSON CLI output utility `dig` command output parser
+The `when_epoch` calculated timestamp field is naive (i.e. based on the local time of the system the parser is run on)
+
+The `when_epoch_utc` calculated timestamp field is timezone-aware and is only available if the timezone field is UTC.
+
Usage (cli):
$ dig example.com | jc --dig
@@ -24,7 +28,7 @@ Examples:
$ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p
[
{
- "id": 34128,
+ "id": 52172,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -46,38 +50,40 @@ Examples:
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
+ "ttl": 27,
"data": "151.101.65.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
- "data": "151.101.193.67"
+ "ttl": 27,
+ "data": "151.101.129.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
+ "ttl": 27,
"data": "151.101.1.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
- "data": "151.101.129.67"
+ "ttl": 27,
+ "data": "151.101.193.67"
}
],
- "query_time": 37,
+ "query_time": 38,
"server": "2600",
- "when": "Tue Nov 12 07:14:42 PST 2019",
- "rcvd": 100
+ "when": "Tue Mar 30 20:07:59 PDT 2021",
+ "rcvd": 100,
+ "when_epoch": 1617160079,
+ "when_epoch_utc": null
},
{
- "id": 15273,
+ "id": 36292,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -133,10 +139,12 @@ Examples:
"data": "ns-576.awsdns-08.net."
}
],
- "query_time": 23,
+ "query_time": 27,
"server": "205.251.194.64#53(205.251.194.64)",
- "when": "Tue Nov 12 07:14:42 PST 2019",
- "rcvd": 212
+ "when": "Tue Mar 30 20:07:59 PDT 2021",
+ "rcvd": 212,
+ "when_epoch": 1617160079,
+ "when_epoch_utc": null
}
]
@@ -262,7 +270,7 @@ Examples:
$ dig -x 1.1.1.1 | jc --dig -p
[
{
- "id": 34898,
+ "id": 22191,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -284,14 +292,16 @@ Examples:
"name": "1.1.1.1.in-addr.arpa.",
"class": "IN",
"type": "PTR",
- "ttl": 952,
+ "ttl": 1800,
"data": "one.one.one.one."
}
],
- "query_time": 103,
+ "query_time": 44,
"server": "2600",
- "when": "Tue Nov 12 07:15:33 PST 2019",
- "rcvd": 78
+ "when": "Tue Mar 30 20:10:34 PDT 2021",
+ "rcvd": 78,
+ "when_epoch": 1617160234,
+ "when_epoch_utc": null
}
]
@@ -400,6 +410,8 @@ Returns:
"query_time": integer, # in msec
"server": string,
"when": string,
+ "when_epoch": integer, # naive timestamp if when field is parsable, else null
+ "when_epoch_utc": integer, # timezone aware timestamp availabe for UTC, else null
"rcvd": integer
"size": string
}
diff --git a/jc/parsers/dig.py b/jc/parsers/dig.py
index 93ffdbc8..929038cf 100644
--- a/jc/parsers/dig.py
+++ b/jc/parsers/dig.py
@@ -1,5 +1,9 @@
"""jc - JSON CLI output utility `dig` command output parser
+The `when_epoch` calculated timestamp field is naive (i.e. based on the local time of the system the parser is run on)
+
+The `when_epoch_utc` calculated timestamp field is timezone-aware and is only available if the timezone field is UTC.
+
Usage (cli):
$ dig example.com | jc --dig
@@ -22,7 +26,7 @@ Examples:
$ dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p
[
{
- "id": 34128,
+ "id": 52172,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -44,38 +48,40 @@ Examples:
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
+ "ttl": 27,
"data": "151.101.65.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
- "data": "151.101.193.67"
+ "ttl": 27,
+ "data": "151.101.129.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
+ "ttl": 27,
"data": "151.101.1.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
- "ttl": 60,
- "data": "151.101.129.67"
+ "ttl": 27,
+ "data": "151.101.193.67"
}
],
- "query_time": 37,
+ "query_time": 38,
"server": "2600",
- "when": "Tue Nov 12 07:14:42 PST 2019",
- "rcvd": 100
+ "when": "Tue Mar 30 20:07:59 PDT 2021",
+ "rcvd": 100,
+ "when_epoch": 1617160079,
+ "when_epoch_utc": null
},
{
- "id": 15273,
+ "id": 36292,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -131,10 +137,12 @@ Examples:
"data": "ns-576.awsdns-08.net."
}
],
- "query_time": 23,
+ "query_time": 27,
"server": "205.251.194.64#53(205.251.194.64)",
- "when": "Tue Nov 12 07:14:42 PST 2019",
- "rcvd": 212
+ "when": "Tue Mar 30 20:07:59 PDT 2021",
+ "rcvd": 212,
+ "when_epoch": 1617160079,
+ "when_epoch_utc": null
}
]
@@ -260,7 +268,7 @@ Examples:
$ dig -x 1.1.1.1 | jc --dig -p
[
{
- "id": 34898,
+ "id": 22191,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
@@ -282,14 +290,16 @@ Examples:
"name": "1.1.1.1.in-addr.arpa.",
"class": "IN",
"type": "PTR",
- "ttl": 952,
+ "ttl": 1800,
"data": "one.one.one.one."
}
],
- "query_time": 103,
+ "query_time": 44,
"server": "2600",
- "when": "Tue Nov 12 07:15:33 PST 2019",
- "rcvd": 78
+ "when": "Tue Mar 30 20:10:34 PDT 2021",
+ "rcvd": 78,
+ "when_epoch": 1617160234,
+ "when_epoch_utc": null
}
]
@@ -333,7 +343,7 @@ import jc.utils
class info():
- version = '1.5'
+ version = '1.6'
description = 'dig command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
@@ -405,6 +415,8 @@ def process(proc_data):
"query_time": integer, # in msec
"server": string,
"when": string,
+ "when_epoch": integer, # naive timestamp if when field is parsable, else null
+ "when_epoch_utc": integer, # timezone aware timestamp availabe for UTC, else null
"rcvd": integer
"size": string
}
@@ -452,6 +464,10 @@ def process(proc_data):
except (ValueError):
entry['query_time'] = None
+ if 'when' in entry:
+ entry['when_epoch'] = jc.utils.parse_datetime_to_timestamp(entry['when'])['timestamp_naive']
+ entry['when_epoch_utc'] = jc.utils.parse_datetime_to_timestamp(entry['when'])['timestamp_utc']
+
return proc_data
diff --git a/tests/fixtures/centos-7.7/dig-aaaa.json b/tests/fixtures/centos-7.7/dig-aaaa.json
index 82b1d744..70b7e04c 100644
--- a/tests/fixtures/centos-7.7/dig-aaaa.json
+++ b/tests/fixtures/centos-7.7/dig-aaaa.json
@@ -1 +1 @@
-[{"id": 25779, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "www.google.com.", "class": "IN", "type": "AAAA"}, "answer": [{"name": "www.google.com.", "class": "IN", "type": "AAAA", "ttl": 5, "data": "2607:f8b0:4000:808::2004"}], "query_time": 28, "server": "192.168.71.2#53(192.168.71.2)", "when": "Wed Oct 30 05:12:53 PDT 2019", "rcvd": 71}]
+[{"id":25779,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"www.google.com.","class":"IN","type":"AAAA"},"answer":[{"name":"www.google.com.","class":"IN","type":"AAAA","ttl":5,"data":"2607:f8b0:4000:808::2004"}],"query_time":28,"server":"192.168.71.2#53(192.168.71.2)","when":"Wed Oct 30 05:12:53 PDT 2019","rcvd":71,"when_epoch":1572437573,"when_epoch_utc":null}]
diff --git a/tests/fixtures/centos-7.7/dig-axfr.json b/tests/fixtures/centos-7.7/dig-axfr.json
index b5e2c669..85beac27 100644
--- a/tests/fixtures/centos-7.7/dig-axfr.json
+++ b/tests/fixtures/centos-7.7/dig-axfr.json
@@ -1 +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)"}]
+[{"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)","when_epoch":1585191707,"when_epoch_utc":null}]
diff --git a/tests/fixtures/centos-7.7/dig-x.json b/tests/fixtures/centos-7.7/dig-x.json
index c9acd6cb..b71f5dd8 100644
--- a/tests/fixtures/centos-7.7/dig-x.json
+++ b/tests/fixtures/centos-7.7/dig-x.json
@@ -1 +1 @@
-[{"id": 36298, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "1.1.1.1.in-addr.arpa.", "class": "IN", "type": "PTR"}, "answer": [{"name": "1.1.1.1.in-addr.arpa.", "class": "IN", "type": "PTR", "ttl": 5, "data": "one.one.one.one."}], "query_time": 32, "server": "192.168.71.2#53(192.168.71.2)", "when": "Wed Oct 30 05:13:36 PDT 2019", "rcvd": 78}]
+[{"id":36298,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"1.1.1.1.in-addr.arpa.","class":"IN","type":"PTR"},"answer":[{"name":"1.1.1.1.in-addr.arpa.","class":"IN","type":"PTR","ttl":5,"data":"one.one.one.one."}],"query_time":32,"server":"192.168.71.2#53(192.168.71.2)","when":"Wed Oct 30 05:13:36 PDT 2019","rcvd":78,"when_epoch":1572437616,"when_epoch_utc":null}]
diff --git a/tests/fixtures/centos-7.7/dig.json b/tests/fixtures/centos-7.7/dig.json
index 904426bd..bf25b3c5 100644
--- a/tests/fixtures/centos-7.7/dig.json
+++ b/tests/fixtures/centos-7.7/dig.json
@@ -1 +1 @@
-[{"id": 44295, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 2, "authority_num": 0, "additional_num": 1, "question": {"name": "www.cnn.com.", "class": "IN", "type": "A"}, "answer": [{"name": "www.cnn.com.", "class": "IN", "type": "CNAME", "ttl": 5, "data": "turner-tls.map.fastly.net."}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 5, "data": "151.101.189.67"}], "query_time": 25, "server": "192.168.71.2#53(192.168.71.2)", "when": "Wed Oct 30 05:13:22 PDT 2019", "rcvd": 95}, {"id": 34074, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "www.google.com.", "class": "IN", "type": "A"}, "answer": [{"name": "www.google.com.", "class": "IN", "type": "A", "ttl": 5, "data": "216.58.194.100"}], "query_time": 25, "server": "192.168.71.2#53(192.168.71.2)", "when": "Wed Oct 30 05:13:22 PDT 2019", "rcvd": 59}]
+[{"id":44295,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":2,"authority_num":0,"additional_num":1,"question":{"name":"www.cnn.com.","class":"IN","type":"A"},"answer":[{"name":"www.cnn.com.","class":"IN","type":"CNAME","ttl":5,"data":"turner-tls.map.fastly.net."},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":5,"data":"151.101.189.67"}],"query_time":25,"server":"192.168.71.2#53(192.168.71.2)","when":"Wed Oct 30 05:13:22 PDT 2019","rcvd":95,"when_epoch":1572437602,"when_epoch_utc":null},{"id":34074,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"www.google.com.","class":"IN","type":"A"},"answer":[{"name":"www.google.com.","class":"IN","type":"A","ttl":5,"data":"216.58.194.100"}],"query_time":25,"server":"192.168.71.2#53(192.168.71.2)","when":"Wed Oct 30 05:13:22 PDT 2019","rcvd":59,"when_epoch":1572437602,"when_epoch_utc":null}]
diff --git a/tests/fixtures/generic/dig-answer-spaces.json b/tests/fixtures/generic/dig-answer-spaces.json
index c22963ed..7a22b7e8 100644
--- a/tests/fixtures/generic/dig-answer-spaces.json
+++ b/tests/fixtures/generic/dig-answer-spaces.json
@@ -1 +1 @@
-[{"id": 26965, "opcode": "QUERY", "status": "NXDOMAIN", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 0, "authority_num": 1, "additional_num": 1, "question": {"name": "x.y.z.w.bl.spamcop.net.", "class": "IN", "type": "TXT"}, "authority": [{"name": "bl.spamcop.net.", "class": "IN", "type": "SOA", "ttl": 0, "data": "bl.spamcop.net."}], "answer": [{"name": "x.y.z.w.bl.spamcop.net.", "class": "IN", "type": "TXT", "ttl": 2100, "data": "Blocked - see https://www.spamcop.net/bl.shtml?w.z.y.x"}], "query_time": 297, "server": "192.168.1.254#53(192.168.1.254)", "when": "Fri Feb 05 06:28:58 PST 2021", "rcvd": 104}]
+[{"id":26965,"opcode":"QUERY","status":"NXDOMAIN","flags":["qr","rd","ra"],"query_num":1,"answer_num":0,"authority_num":1,"additional_num":1,"question":{"name":"x.y.z.w.bl.spamcop.net.","class":"IN","type":"TXT"},"authority":[{"name":"bl.spamcop.net.","class":"IN","type":"SOA","ttl":0,"data":"bl.spamcop.net."}],"answer":[{"name":"x.y.z.w.bl.spamcop.net.","class":"IN","type":"TXT","ttl":2100,"data":"Blocked - see https://www.spamcop.net/bl.shtml?w.z.y.x"}],"query_time":297,"server":"192.168.1.254#53(192.168.1.254)","when":"Fri Feb 05 06:28:58 PST 2021","rcvd":104,"when_epoch":1612535338,"when_epoch_utc":null}]
diff --git a/tests/fixtures/osx-10.11.6/dig-aaaa.json b/tests/fixtures/osx-10.11.6/dig-aaaa.json
index 4452eb46..c652d512 100644
--- a/tests/fixtures/osx-10.11.6/dig-aaaa.json
+++ b/tests/fixtures/osx-10.11.6/dig-aaaa.json
@@ -1 +1 @@
-[{"id": 41369, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "www.google.com.", "class": "IN", "type": "AAAA"}, "answer": [{"name": "www.google.com.", "class": "IN", "type": "AAAA", "ttl": 197, "data": "2607:f8b0:4000:817::2004"}], "query_time": 30, "server": "2600", "when": "Wed Dec 11 16:57:37 PST 2019", "rcvd": 71}]
+[{"id":41369,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"www.google.com.","class":"IN","type":"AAAA"},"answer":[{"name":"www.google.com.","class":"IN","type":"AAAA","ttl":197,"data":"2607:f8b0:4000:817::2004"}],"query_time":30,"server":"2600","when":"Wed Dec 11 16:57:37 PST 2019","rcvd":71,"when_epoch":1576112257,"when_epoch_utc":null}]
diff --git a/tests/fixtures/osx-10.11.6/dig-x.json b/tests/fixtures/osx-10.11.6/dig-x.json
index 447e72e9..30225102 100644
--- a/tests/fixtures/osx-10.11.6/dig-x.json
+++ b/tests/fixtures/osx-10.11.6/dig-x.json
@@ -1 +1 @@
-[{"id": 15549, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "1.1.1.1.in-addr.arpa.", "class": "IN", "type": "PTR"}, "answer": [{"name": "1.1.1.1.in-addr.arpa.", "class": "IN", "type": "PTR", "ttl": 1800, "data": "one.one.one.one."}], "query_time": 34, "server": "2600", "when": "Wed Dec 11 16:57:37 PST 2019", "rcvd": 78}]
+[{"id":15549,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"1.1.1.1.in-addr.arpa.","class":"IN","type":"PTR"},"answer":[{"name":"1.1.1.1.in-addr.arpa.","class":"IN","type":"PTR","ttl":1800,"data":"one.one.one.one."}],"query_time":34,"server":"2600","when":"Wed Dec 11 16:57:37 PST 2019","rcvd":78,"when_epoch":1576112257,"when_epoch_utc":null}]
diff --git a/tests/fixtures/osx-10.11.6/dig.json b/tests/fixtures/osx-10.11.6/dig.json
index 6c8a2d30..1d151b57 100644
--- a/tests/fixtures/osx-10.11.6/dig.json
+++ b/tests/fixtures/osx-10.11.6/dig.json
@@ -1 +1 @@
-[{"id": 57483, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 5, "authority_num": 0, "additional_num": 1, "question": {"name": "www.cnn.com.", "class": "IN", "type": "A"}, "answer": [{"name": "www.cnn.com.", "class": "IN", "type": "CNAME", "ttl": 199, "data": "turner-tls.map.fastly.net."}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 13, "data": "151.101.193.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 13, "data": "151.101.65.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 13, "data": "151.101.1.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 13, "data": "151.101.129.67"}], "query_time": 30, "server": "2600", "when": "Wed Dec 11 16:57:37 PST 2019", "rcvd": 143}, {"id": 53268, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "www.google.com.", "class": "IN", "type": "A"}, "answer": [{"name": "www.google.com.", "class": "IN", "type": "A", "ttl": 194, "data": "172.217.9.164"}], "query_time": 30, "server": "2600", "when": "Wed Dec 11 16:57:37 PST 2019", "rcvd": 59}]
+[{"id":57483,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":5,"authority_num":0,"additional_num":1,"question":{"name":"www.cnn.com.","class":"IN","type":"A"},"answer":[{"name":"www.cnn.com.","class":"IN","type":"CNAME","ttl":199,"data":"turner-tls.map.fastly.net."},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":13,"data":"151.101.193.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":13,"data":"151.101.65.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":13,"data":"151.101.1.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":13,"data":"151.101.129.67"}],"query_time":30,"server":"2600","when":"Wed Dec 11 16:57:37 PST 2019","rcvd":143,"when_epoch":1576112257,"when_epoch_utc":null},{"id":53268,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"www.google.com.","class":"IN","type":"A"},"answer":[{"name":"www.google.com.","class":"IN","type":"A","ttl":194,"data":"172.217.9.164"}],"query_time":30,"server":"2600","when":"Wed Dec 11 16:57:37 PST 2019","rcvd":59,"when_epoch":1576112257,"when_epoch_utc":null}]
diff --git a/tests/fixtures/osx-10.14.6/dig-aaaa.json b/tests/fixtures/osx-10.14.6/dig-aaaa.json
index 34917b23..3dc515b3 100644
--- a/tests/fixtures/osx-10.14.6/dig-aaaa.json
+++ b/tests/fixtures/osx-10.14.6/dig-aaaa.json
@@ -1 +1 @@
-[{"id": 61441, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "www.google.com.", "class": "IN", "type": "AAAA"}, "answer": [{"name": "www.google.com.", "class": "IN", "type": "AAAA", "ttl": 63, "data": "2607:f8b0:4000:817::2004"}], "query_time": 30, "server": "2600", "when": "Wed Dec 11 16:54:50 PST 2019", "rcvd": 71}]
+[{"id":61441,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"www.google.com.","class":"IN","type":"AAAA"},"answer":[{"name":"www.google.com.","class":"IN","type":"AAAA","ttl":63,"data":"2607:f8b0:4000:817::2004"}],"query_time":30,"server":"2600","when":"Wed Dec 11 16:54:50 PST 2019","rcvd":71,"when_epoch":1576112090,"when_epoch_utc":null}]
diff --git a/tests/fixtures/osx-10.14.6/dig-axfr.json b/tests/fixtures/osx-10.14.6/dig-axfr.json
index b01ba206..6187877b 100644
--- a/tests/fixtures/osx-10.14.6/dig-axfr.json
+++ b/tests/fixtures/osx-10.14.6/dig-axfr.json
@@ -1 +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)"}]
+[{"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)","when_epoch":1585265466,"when_epoch_utc":null}]
diff --git a/tests/fixtures/osx-10.14.6/dig-x.json b/tests/fixtures/osx-10.14.6/dig-x.json
index 43725576..2d6aedaa 100644
--- a/tests/fixtures/osx-10.14.6/dig-x.json
+++ b/tests/fixtures/osx-10.14.6/dig-x.json
@@ -1 +1 @@
-[{"id": 27071, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "1.1.1.1.in-addr.arpa.", "class": "IN", "type": "PTR"}, "answer": [{"name": "1.1.1.1.in-addr.arpa.", "class": "IN", "type": "PTR", "ttl": 1800, "data": "one.one.one.one."}], "query_time": 39, "server": "2600", "when": "Wed Dec 11 16:54:51 PST 2019", "rcvd": 78}]
+[{"id":27071,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"1.1.1.1.in-addr.arpa.","class":"IN","type":"PTR"},"answer":[{"name":"1.1.1.1.in-addr.arpa.","class":"IN","type":"PTR","ttl":1800,"data":"one.one.one.one."}],"query_time":39,"server":"2600","when":"Wed Dec 11 16:54:51 PST 2019","rcvd":78,"when_epoch":1576112091,"when_epoch_utc":null}]
diff --git a/tests/fixtures/osx-10.14.6/dig.json b/tests/fixtures/osx-10.14.6/dig.json
index f7b7e263..f2414abb 100644
--- a/tests/fixtures/osx-10.14.6/dig.json
+++ b/tests/fixtures/osx-10.14.6/dig.json
@@ -1 +1 @@
-[{"id": 54065, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 5, "authority_num": 0, "additional_num": 1, "question": {"name": "www.cnn.com.", "class": "IN", "type": "A"}, "answer": [{"name": "www.cnn.com.", "class": "IN", "type": "CNAME", "ttl": 72, "data": "turner-tls.map.fastly.net."}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 1, "data": "151.101.65.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 1, "data": "151.101.1.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 1, "data": "151.101.193.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 1, "data": "151.101.129.67"}], "query_time": 41, "server": "2600", "when": "Wed Dec 11 16:54:50 PST 2019", "rcvd": 143}, {"id": 64484, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "www.google.com.", "class": "IN", "type": "A"}, "answer": [{"name": "www.google.com.", "class": "IN", "type": "A", "ttl": 64, "data": "172.217.12.68"}], "query_time": 31, "server": "2600", "when": "Wed Dec 11 16:54:50 PST 2019", "rcvd": 59}]
+[{"id":54065,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":5,"authority_num":0,"additional_num":1,"question":{"name":"www.cnn.com.","class":"IN","type":"A"},"answer":[{"name":"www.cnn.com.","class":"IN","type":"CNAME","ttl":72,"data":"turner-tls.map.fastly.net."},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":1,"data":"151.101.65.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":1,"data":"151.101.1.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":1,"data":"151.101.193.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":1,"data":"151.101.129.67"}],"query_time":41,"server":"2600","when":"Wed Dec 11 16:54:50 PST 2019","rcvd":143,"when_epoch":1576112090,"when_epoch_utc":null},{"id":64484,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"www.google.com.","class":"IN","type":"A"},"answer":[{"name":"www.google.com.","class":"IN","type":"A","ttl":64,"data":"172.217.12.68"}],"query_time":31,"server":"2600","when":"Wed Dec 11 16:54:50 PST 2019","rcvd":59,"when_epoch":1576112090,"when_epoch_utc":null}]
diff --git a/tests/fixtures/ubuntu-18.04/dig-aaaa.json b/tests/fixtures/ubuntu-18.04/dig-aaaa.json
index 3df39f73..1474d3e5 100644
--- a/tests/fixtures/ubuntu-18.04/dig-aaaa.json
+++ b/tests/fixtures/ubuntu-18.04/dig-aaaa.json
@@ -1 +1 @@
-[{"id": 45806, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "www.google.com.", "class": "IN", "type": "AAAA"}, "answer": [{"name": "www.google.com.", "class": "IN", "type": "AAAA", "ttl": 5, "data": "2607:f8b0:4000:812::2004"}], "query_time": 39, "server": "127.0.0.53#53(127.0.0.53)", "when": "Thu Oct 31 14:21:04 UTC 2019", "rcvd": 71}]
+[{"id":45806,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"www.google.com.","class":"IN","type":"AAAA"},"answer":[{"name":"www.google.com.","class":"IN","type":"AAAA","ttl":5,"data":"2607:f8b0:4000:812::2004"}],"query_time":39,"server":"127.0.0.53#53(127.0.0.53)","when":"Thu Oct 31 14:21:04 UTC 2019","rcvd":71,"when_epoch":1572556864,"when_epoch_utc":1572531664}]
diff --git a/tests/fixtures/ubuntu-18.04/dig-axfr.json b/tests/fixtures/ubuntu-18.04/dig-axfr.json
index b7548c91..1e09a863 100644
--- a/tests/fixtures/ubuntu-18.04/dig-axfr.json
+++ b/tests/fixtures/ubuntu-18.04/dig-axfr.json
@@ -1 +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)"}]
+[{"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)","when_epoch":1585172095,"when_epoch_utc":null}]
diff --git a/tests/fixtures/ubuntu-18.04/dig-x.json b/tests/fixtures/ubuntu-18.04/dig-x.json
index 04d8bab9..d0ee3c31 100644
--- a/tests/fixtures/ubuntu-18.04/dig-x.json
+++ b/tests/fixtures/ubuntu-18.04/dig-x.json
@@ -1 +1 @@
-[{"id": 28514, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "1.1.1.1.in-addr.arpa.", "class": "IN", "type": "PTR"}, "answer": [{"name": "1.1.1.1.in-addr.arpa.", "class": "IN", "type": "PTR", "ttl": 5, "data": "one.one.one.one."}], "query_time": 37, "server": "127.0.0.53#53(127.0.0.53)", "when": "Thu Oct 31 14:21:05 UTC 2019", "rcvd": 78}]
+[{"id":28514,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"1.1.1.1.in-addr.arpa.","class":"IN","type":"PTR"},"answer":[{"name":"1.1.1.1.in-addr.arpa.","class":"IN","type":"PTR","ttl":5,"data":"one.one.one.one."}],"query_time":37,"server":"127.0.0.53#53(127.0.0.53)","when":"Thu Oct 31 14:21:05 UTC 2019","rcvd":78,"when_epoch":1572556865,"when_epoch_utc":1572531665}]
diff --git a/tests/fixtures/ubuntu-18.04/dig.json b/tests/fixtures/ubuntu-18.04/dig.json
index a2f6b360..7cef87a3 100644
--- a/tests/fixtures/ubuntu-18.04/dig.json
+++ b/tests/fixtures/ubuntu-18.04/dig.json
@@ -1 +1 @@
-[{"id": 52284, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 5, "authority_num": 0, "additional_num": 1, "question": {"name": "www.cnn.com.", "class": "IN", "type": "A"}, "answer": [{"name": "www.cnn.com.", "class": "IN", "type": "CNAME", "ttl": 5, "data": "turner-tls.map.fastly.net."}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 4, "data": "151.101.65.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 4, "data": "151.101.1.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 4, "data": "151.101.193.67"}, {"name": "turner-tls.map.fastly.net.", "class": "IN", "type": "A", "ttl": 4, "data": "151.101.129.67"}], "query_time": 31, "server": "127.0.0.53#53(127.0.0.53)", "when": "Thu Oct 31 14:21:04 UTC 2019", "rcvd": 143}, {"id": 47686, "opcode": "QUERY", "status": "NOERROR", "flags": ["qr", "rd", "ra"], "query_num": 1, "answer_num": 1, "authority_num": 0, "additional_num": 1, "question": {"name": "www.google.com.", "class": "IN", "type": "A"}, "answer": [{"name": "www.google.com.", "class": "IN", "type": "A", "ttl": 5, "data": "172.217.1.228"}], "query_time": 32, "server": "127.0.0.53#53(127.0.0.53)", "when": "Thu Oct 31 14:21:04 UTC 2019", "rcvd": 59}]
+[{"id":52284,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":5,"authority_num":0,"additional_num":1,"question":{"name":"www.cnn.com.","class":"IN","type":"A"},"answer":[{"name":"www.cnn.com.","class":"IN","type":"CNAME","ttl":5,"data":"turner-tls.map.fastly.net."},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":4,"data":"151.101.65.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":4,"data":"151.101.1.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":4,"data":"151.101.193.67"},{"name":"turner-tls.map.fastly.net.","class":"IN","type":"A","ttl":4,"data":"151.101.129.67"}],"query_time":31,"server":"127.0.0.53#53(127.0.0.53)","when":"Thu Oct 31 14:21:04 UTC 2019","rcvd":143,"when_epoch":1572556864,"when_epoch_utc":1572531664},{"id":47686,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"question":{"name":"www.google.com.","class":"IN","type":"A"},"answer":[{"name":"www.google.com.","class":"IN","type":"A","ttl":5,"data":"172.217.1.228"}],"query_time":32,"server":"127.0.0.53#53(127.0.0.53)","when":"Thu Oct 31 14:21:04 UTC 2019","rcvd":59,"when_epoch":1572556864,"when_epoch_utc":1572531664}]