]> gitweb.factorcode.org Git - factor.git/blob - extra/tools/dns/dns.factor
Switch to https urls
[factor.git] / extra / tools / dns / dns.factor
1 ! Copyright (C) 2010 Doug Coleman.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: arrays command-line dns fry io kernel math.parser
4 namespaces sequences strings ;
5 IN: tools.dns
6
7 : a-line. ( host ip -- )
8     [ write " has address " write ] [ print ] bi* ;
9
10 : aaaa-line. ( host ip -- )
11     [ write " has IPv6 address " write ] [ print ] bi* ;
12
13 : a-message. ( message -- )
14     [ message>query-name ] [ message>a-names ] bi
15     [ a-line. ] with each ;
16
17 : (aaaa-message.) ( message -- )
18     [ message>query-name ] [ message>aaaa-names ] bi
19     [ aaaa-line. ] with each ;
20
21 : aaaa-message. ( message -- )
22     [ a-message. ] [ (aaaa-message.) ] bi ;
23
24 : mx-line. ( host pair -- )
25     dup length 1 = [
26         [ write " is an alias for " write ]
27         [ first print ] bi*
28     ] [
29         [ write " mail is handled by " write ]
30         [ first2 [ number>string write bl ] [ print ] bi* ] bi*
31     ] if ;
32
33 : mx-message. ( message -- )
34     [ message>query-name ] [ message>mxs ] bi
35     [ mx-line. ] with each ;
36
37 : host ( domain -- )
38     [ dns-A-query a-message. ]
39     [ dns-AAAA-query aaaa-message. ]
40     [ dns-MX-query mx-message. ] tri ;
41
42 GENERIC#: dns-host 1 ( servers domain -- )
43
44 M: sequence dns-host ( servers domain -- )
45     '[ _ host ] with-dns-servers ;
46
47 M: string dns-host
48     [ 1array ] dip dns-host ;
49
50 : run-host ( -- )
51     command-line get first host ;
52
53 MAIN: run-host