glider/dnstun.go

36 lines
521 B
Go
Raw Normal View History

// https://tools.ietf.org/html/rfc1035
2017-07-13 21:55:41 +08:00
package main
// DNSTun struct
2017-08-16 22:37:42 +08:00
type DNSTun struct {
2018-03-24 19:57:46 +08:00
dialer Dialer
addr string
2017-07-13 21:55:41 +08:00
raddr string
2018-01-08 22:28:11 +08:00
dns *DNS
tcp *TCPTun
2017-07-13 21:55:41 +08:00
}
// NewDNSTun returns a dns tunnel forwarder.
2018-03-24 19:57:46 +08:00
func NewDNSTun(addr, raddr string, dialer Dialer) (*DNSTun, error) {
2017-08-16 22:37:42 +08:00
s := &DNSTun{
2018-03-24 19:57:46 +08:00
dialer: dialer,
addr: addr,
2017-07-13 21:55:41 +08:00
raddr: raddr,
}
2018-03-24 19:57:46 +08:00
s.dns, _ = NewDNS(addr, raddr, dialer, true)
2017-07-13 21:55:41 +08:00
return s, nil
}
// ListenAndServe .
2017-08-16 22:37:42 +08:00
func (s *DNSTun) ListenAndServe() {
2018-01-08 22:28:11 +08:00
if s.dns != nil {
go s.dns.ListenAndServe()
}
}