Fix the last dot in domain match

This commit is contained in:
wweir
2020-02-23 08:08:04 +08:00
parent 5d1827b2da
commit bcc6d7c504
3 changed files with 16 additions and 8 deletions
+8 -6
View File
@@ -27,8 +27,14 @@ var dynamicMu = sync.Mutex{}
// ShouldProxy check if the domain shoule request though proxy
func ShouldProxy(domain string) bool {
// break deadlook, for wildcard
if strings.Count(domain, ".") > 4 {
return false
}
domain = strings.TrimSuffix(domain, ".")
if domain == Client.Address {
return true
return false
}
if Client.Router.directRules.Match(domain) {
return false
@@ -43,11 +49,7 @@ func ShouldProxy(domain string) bool {
}
func (d *dynamic) Get(key interface{}) (err error) {
// break deadloop, for ugly wildcard setting dns setting
domain := strings.TrimSuffix(key.(string), ".")
if strings.Count(domain, ".") > 10 {
return nil
}
domain := key.(string)
domainUnderscore := strings.ReplaceAll(domain, ".", "_")
var score int
+6 -1
View File
@@ -64,7 +64,12 @@ func (c *conn) Write(b []byte) (n int, err error) {
return 0, err
}
n, err := c.Conn.Write(append(c.domain, b...))
switch c.typ {
case TGT_OTHER:
n, err = c.Conn.Write(append(c.domain, b...))
default:
n, err = c.Conn.Write(b)
}
return n - len(c.domain), err
}
+2 -1
View File
@@ -133,12 +133,13 @@ func StartServer(relayTarget, password, certFile, keyFile, email string) {
}
go func(conn net.Conn) {
defer conn.Close()
conn, domain, port, err := _http.ParseAddr(conn, passwordData)
if err != nil {
log.Errorw("parse relay target", "err", err)
return
}
defer conn.Close()
addr := relayTarget
if domain != "" {