]> gitweb.factorcode.org Git - factor.git/blob - extra/tools/dns/dns.factor
factor: Rename GENERIC# to GENERIC#:.
[factor.git] / extra / tools / dns / dns.factor
1 ! Copyright (C) 2010 Doug Coleman.
2 ! See http://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     [ write " mail is handled by " write ]
26     [ first2 [ number>string write bl ] [ print ] bi* ] bi* ;
27
28 : mx-message. ( message -- )
29     [ message>query-name ] [ message>mxs ] bi
30     [ mx-line. ] with each ;
31
32 : host ( domain -- )
33     [ dns-A-query a-message. ]
34     [ dns-AAAA-query aaaa-message. ]
35     [ dns-MX-query mx-message. ] tri ;
36
37 GENERIC#: dns-host 1 ( servers domain -- )
38
39 M: sequence dns-host ( servers domain -- )
40     '[ _ host ] with-dns-servers ;
41
42 M: string dns-host
43     [ 1array ] dip dns-host ;
44
45 : run-host ( -- )
46     command-line get first host ;
47
48 MAIN: run-host