dns.forwarding: Refactor a bit. Add a main.
parent
34ba89025b
commit
904f91298e
|
@ -2,10 +2,12 @@
|
||||||
USING: kernel
|
USING: kernel
|
||||||
combinators
|
combinators
|
||||||
vectors
|
vectors
|
||||||
|
sequences
|
||||||
io.sockets
|
io.sockets
|
||||||
accessors
|
accessors
|
||||||
|
combinators.lib
|
||||||
newfx
|
newfx
|
||||||
dns dns.cache ;
|
dns dns.cache dns.misc ;
|
||||||
|
|
||||||
IN: dns.forwarding
|
IN: dns.forwarding
|
||||||
|
|
||||||
|
@ -17,7 +19,10 @@ IN: dns.forwarding
|
||||||
|
|
||||||
: socket ( -- socket ) (socket) 1st ;
|
: socket ( -- socket ) (socket) 1st ;
|
||||||
|
|
||||||
: init-socket ( -- ) f 5353 <inet4> <datagram> 0 (socket) as-mutate ;
|
: init-socket-on-port ( port -- )
|
||||||
|
f swap <inet4> <datagram> 0 (socket) as-mutate ;
|
||||||
|
|
||||||
|
: init-socket ( -- ) 53 init-socket-on-port ;
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
@ -27,30 +32,37 @@ IN: dns.forwarding
|
||||||
|
|
||||||
: set-upstream-server ( ip -- ) 0 (upstream-server) as-mutate ;
|
: set-upstream-server ( ip -- ) 0 (upstream-server) as-mutate ;
|
||||||
|
|
||||||
|
: init-upstream-server ( -- )
|
||||||
|
upstream-server not
|
||||||
|
[ resolv-conf-server set-upstream-server ]
|
||||||
|
when ;
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
: 1&& <-&& ;
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
: rrs? ( obj -- ? ) { [ NX = not ] [ f = not ] } 1&& ;
|
||||||
|
|
||||||
: query->answer/cache ( query -- rrs/NX/f )
|
: query->answer/cache ( query -- rrs/NX/f )
|
||||||
{
|
dup cache-get* dup { [ rrs? ] [ NX = ] } 1||
|
||||||
{ [ dup type>> CNAME = ] [ cache-get* ] }
|
[ nip ]
|
||||||
{
|
[
|
||||||
[ dup clone CNAME >>type cache-get* vector? ]
|
drop
|
||||||
[
|
dup clone CNAME >>type cache-get* dup { [ NX = ] [ f = ] } 1||
|
||||||
dup clone CNAME >>type cache-get* 1st ! query rr/cname
|
[ nip ]
|
||||||
dup rdata>> ! query rr/cname cname
|
[ ! query rrs
|
||||||
>r swap clone r> ! rr/cname query cname
|
tuck ! rrs query rrs
|
||||||
>>name ! rr/cname query
|
1st ! rrs query rr/cname
|
||||||
query->answer/cache ! rr/cname rrs/NX/f
|
rdata>> ! rrs query name
|
||||||
{
|
>r clone r> >>name ! rrs query
|
||||||
{ [ dup vector? ] [ clone push-on ] }
|
query->answer/cache ! rrs rrs/NX/f
|
||||||
{ [ dup NX = ] [ nip ] }
|
dup rrs? [ append ] [ nip ] if
|
||||||
{ [ dup f = ] [ nip ] }
|
|
||||||
}
|
|
||||||
cond
|
|
||||||
]
|
]
|
||||||
}
|
if
|
||||||
{ [ t ] [ cache-get* ] }
|
]
|
||||||
}
|
if ;
|
||||||
cond ;
|
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
@ -89,3 +101,9 @@ IN: dns.forwarding
|
||||||
swap ! byte-array addr-spec
|
swap ! byte-array addr-spec
|
||||||
socket send
|
socket send
|
||||||
loop ;
|
loop ;
|
||||||
|
|
||||||
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
: start ( -- ) init-socket init-upstream-server loop ;
|
||||||
|
|
||||||
|
MAIN: start
|
Loading…
Reference in New Issue