mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 17:35:40 +08:00
dns: add dnsalwaystcp
config. #49
This commit is contained in:
parent
2f239d60f1
commit
529786acf6
1
conf.go
1
conf.go
@ -50,6 +50,7 @@ func confInit() {
|
|||||||
flag.StringVar(&conf.RulesDir, "rules-dir", "", "rule file folder")
|
flag.StringVar(&conf.RulesDir, "rules-dir", "", "rule file folder")
|
||||||
|
|
||||||
flag.StringVar(&conf.DNS, "dns", "", "dns forwarder server listen address")
|
flag.StringVar(&conf.DNS, "dns", "", "dns forwarder server listen address")
|
||||||
|
flag.BoolVar(&conf.DNSConfig.AlwaysTCP, "dnsalwaystcp", false, "always use tcp to query upstream dns servers no matter there's a forwarder or not")
|
||||||
flag.StringSliceUniqVar(&conf.DNSConfig.Servers, "dnsserver", []string{"8.8.8.8:53"}, "remote dns server")
|
flag.StringSliceUniqVar(&conf.DNSConfig.Servers, "dnsserver", []string{"8.8.8.8:53"}, "remote dns server")
|
||||||
flag.IntVar(&conf.DNSConfig.Timeout, "dnstimeout", 3, "timeout value used in multiple dnsservers switch(seconds)")
|
flag.IntVar(&conf.DNSConfig.Timeout, "dnstimeout", 3, "timeout value used in multiple dnsservers switch(seconds)")
|
||||||
flag.IntVar(&conf.DNSConfig.MaxTTL, "dnsmaxttl", 1800, "maximum TTL value for entries in the CACHE(seconds)")
|
flag.IntVar(&conf.DNSConfig.MaxTTL, "dnsmaxttl", 1800, "maximum TTL value for entries in the CACHE(seconds)")
|
||||||
|
@ -18,11 +18,12 @@ type HandleFunc func(Domain, ip string) error
|
|||||||
|
|
||||||
// Config for dns
|
// Config for dns
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Servers []string
|
Servers []string
|
||||||
Timeout int
|
Timeout int
|
||||||
MaxTTL int
|
MaxTTL int
|
||||||
MinTTL int
|
MinTTL int
|
||||||
Records []string
|
Records []string
|
||||||
|
AlwaysTCP bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Client is a dns client struct
|
// Client is a dns client struct
|
||||||
@ -133,7 +134,7 @@ func (c *Client) exchange(qname string, reqBytes []byte, preferTCP bool) (server
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If client uses udp and no forwarders specified, use udp
|
// If client uses udp and no forwarders specified, use udp
|
||||||
if !preferTCP && dialer.Addr() == "DIRECT" {
|
if !preferTCP && !c.config.AlwaysTCP && dialer.Addr() == "DIRECT" {
|
||||||
network = "udp"
|
network = "udp"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ func (f *Forwarder) Dial(network, addr string) (c net.Conn, err error) {
|
|||||||
f.IncFailures()
|
f.IncFailures()
|
||||||
if f.Failures() >= f.MaxFailures() {
|
if f.Failures() >= f.MaxFailures() {
|
||||||
f.Disable()
|
f.Disable()
|
||||||
log.F("[forwarder] %s reaches maxfailures, set to disabled", f.addr)
|
log.F("[forwarder] %s reaches maxfailures, set to DISABLED", f.addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,16 +165,14 @@ func (d *Dialer) onStatusChanged(fwdr *proxy.Forwarder) {
|
|||||||
defer d.mu.Unlock()
|
defer d.mu.Unlock()
|
||||||
|
|
||||||
if fwdr.Enabled() {
|
if fwdr.Enabled() {
|
||||||
log.F("[strategy] %s changed from Disabled to Enabled ", fwdr.Addr())
|
log.F("[strategy] %s changed status from Disabled to Enabled ", fwdr.Addr())
|
||||||
if fwdr.Priority() == d.Priority() {
|
if fwdr.Priority() == d.Priority() {
|
||||||
d.available = append(d.available, fwdr)
|
d.available = append(d.available, fwdr)
|
||||||
} else if fwdr.Priority() > d.Priority() {
|
} else if fwdr.Priority() > d.Priority() {
|
||||||
d.initAvailable()
|
d.initAvailable()
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
log.F("[strategy] %s changed status from Enabled to Disabled", fwdr.Addr())
|
||||||
if !fwdr.Enabled() {
|
|
||||||
log.F("[strategy] %s changed from Enabled to Disabled", fwdr.Addr())
|
|
||||||
for i, f := range d.available {
|
for i, f := range d.available {
|
||||||
if f == fwdr {
|
if f == fwdr {
|
||||||
d.available[i], d.available = d.available[len(d.available)-1], d.available[:len(d.available)-1]
|
d.available[i], d.available = d.available[len(d.available)-1], d.available[:len(d.available)-1]
|
||||||
|
Loading…
Reference in New Issue
Block a user