docs(lisp/dns): Add initial README file
This commit is contained in:
parent
90dd824606
commit
ca1217655d
1 changed files with 75 additions and 0 deletions
75
lisp/dns/README.md
Normal file
75
lisp/dns/README.md
Normal file
|
@ -0,0 +1,75 @@
|
|||
dns
|
||||
===
|
||||
|
||||
This library is a DNS-over-HTTPS client for Common Lisp.
|
||||
|
||||
The ambition is to transform it into a fully-featured DNS resolver
|
||||
instead of piggy-backing on the HTTPS implementation, but ...
|
||||
baby-steps!
|
||||
|
||||
Note that there is no Common Lisp HTTP client that fully supports the
|
||||
HTTP2 protocol at the moment, so you can not expect this library to
|
||||
provide equivalent performance to a native DNS resolver (yet).
|
||||
|
||||
## API
|
||||
|
||||
The API is kept as simple as it can be.
|
||||
|
||||
### Types
|
||||
|
||||
The types of this library are implemented as several structs that
|
||||
support binary (de-)serialisation via [lisp-binary][].
|
||||
|
||||
The existing structs are as follows and directly implement the
|
||||
corresponding definitions from [RFC 1035][]:
|
||||
|
||||
* `dns-header`
|
||||
* `dns-question`
|
||||
* `dns-rr`
|
||||
* `dns-message`
|
||||
|
||||
All relevant field accessors for these structs are exported and can be
|
||||
used to inspect query results.
|
||||
|
||||
### Functions
|
||||
|
||||
All lookup functions are of the type `(function (string &key doh-url)
|
||||
(dns-message))` and signal a `dns:doh-error` condition for
|
||||
unsuccessful requests.
|
||||
|
||||
If `:doh-url` is unspecified, Google's public DNS-over-HTTPS servers
|
||||
at [dns.google][https://dns.google] will be used.
|
||||
|
||||
Currently implemented lookup functions:
|
||||
|
||||
* `lookup-a`
|
||||
* `lookup-mx`
|
||||
* `lookup-txt`
|
||||
|
||||
## Example usage
|
||||
|
||||
```lisp
|
||||
DNS> (dns-message-answer (lookup-a "git.tazj.in."))
|
||||
#(#S(DNS-RR
|
||||
:NAME #S(QNAME :START-AT 29 :NAMES #(12))
|
||||
:TYPE A
|
||||
:CLASS 1
|
||||
:TTL 286
|
||||
:RDLENGTH 4
|
||||
:RDATA #(34 98 120 189)))
|
||||
```
|
||||
|
||||
## TODO
|
||||
|
||||
Various things in this library are currently broken because I only
|
||||
implemented it to work for my blog setup, but these things will be
|
||||
ironed out.
|
||||
|
||||
Most importantly, the following needs to be fixed:
|
||||
|
||||
* Each qname *fragment* needs to track its offset, not each qname.
|
||||
* The RDATA for a TXT record can have multiple counted strings.
|
||||
* qnames should be canonicalised after parsing.
|
||||
|
||||
[lisp-binary]: https://github.com/j3pic/lisp-binary
|
||||
[RFC 1035]: https://tools.ietf.org/html/rfc1035
|
Loading…
Reference in a new issue