djbdns-logparse: make tinydns and dnscache logs human-readable

== What is it? ==

djbdns is Daniel J. Bernstein's suite of DNS software from,

  https://cr.yp.to/djbdns.html

Two of its daemons, tinydns and dnscache, resolve DNS queries while
simultaneously logging obscure gibberish to a file. For example, this
is what tinydns logs if I request the 'A' record for www.example.com:

  @4000000063227a320c4f3114 7f000001:9d61:be69 - 0001 www.example.com

djbdns-logparse converts these into something that you can actually
read. The line above gets turned into,

  2022-09-14 21:04:40.206516500 dropped query (no authority) from
  127.0.0.1:40289 (id 48745): a www.example.com

and surely you agree that this is preferable.


== Usage ==

Either,

  $ djbdns-logparse < logfile

or

  $  djbdns-logparse log1 [log2 [log3 ...]]


== Requirements ==

There are only two:

  a) python-3.6 or later, for f-strings support
  b) the tai64nlocal program from DJB's daemontools on your PATH


== History ==

This is a modernish fork of Greg Ward's parse_djbdns_log program
from,

  https://www.gerg.ca/hacks/parse_djbdns_log

The original was inspired by Faried Nawaz's dnscache log parser,

      http://www.hungry.com/~fn/dnscache-log.pl.txt

with heavy assistance from Rob Mayoff's documentation:

  * https://www.dqd.com/~mayoff/notes/djbdns/tinydns-log.html
  * https://www.dqd.com/~mayoff/notes/djbdns/dnscache-log.html


== Tests ==

The (doctest) test suite can be run with either setuptools,

  $ python setup.py test

or using tox,

  $ tox

Or, you can just run them manually:

  $ python -m doctest -v djbdns/*.py
