blob: 774be525cb2099e6808848e504a5b811e86f8ad4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
;; Initial implementation is a simple client for
;; https://developers.google.com/speed/public-dns/docs/doh/json
(defpackage #:dns
(:documentation "Simple DNS resolver in Common Lisp")
(:use #:cl)
(:export #:lookup-txt #:lookup-mx))
(defvar *doh-base-url* "https://dns.google/resolve"
"Base URL of the service providing DNS-over-HTTP(S). Defaults to the
Google-hosted API.")
(defun lookup-generic (name type)
(multiple-value-bind (body)
(drakma:http-request *doh-base-url*
:decode-content t
:want-stream t
:parameters `(("type" . ,type)
("name" . ,name)
("ct" . "application/x-javascript")))
(cl-json:decode-json body)))
(defun lookup-txt (name)
"Look up the TXT records at NAME."
(lookup-generic name "TXT"))
(defun lookup-mx (name)
"Look up the MX records at NAME."
(lookup-generic name "MX"))
|