Commit c11b5ddc authored by ginuerzh's avatar ginuerzh

add special wildcard support for domain bypass

parent 9345a2dc
......@@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"net"
"strings"
glob "github.com/gobwas/glob"
)
......@@ -83,11 +84,16 @@ type domainMatcher struct {
}
// DomainMatcher creates a Matcher for a specific domain pattern,
// the pattern can be a plain domain such as 'example.com'
// or a wildcard such as '*.exmaple.com'.
// the pattern can be a plain domain such as 'example.com',
// a wildcard such as '*.exmaple.com' or a special wildcard '.example.com'.
func DomainMatcher(pattern string) Matcher {
p := pattern
if strings.HasPrefix(pattern, ".") {
p = pattern[1:] // trim the prefix '.'
pattern = "*" + pattern
}
return &domainMatcher{
pattern: pattern,
pattern: p,
glob: glob.MustCompile(pattern),
}
}
......@@ -96,6 +102,10 @@ func (m *domainMatcher) Match(domain string) bool {
if m == nil || m.glob == nil {
return false
}
if domain == m.pattern {
return true
}
return m.glob.Match(domain)
}
......
......@@ -317,6 +317,7 @@ func parseChainNode(ns string) (nodes []gost.Node, err error) {
node.Addr = ip
// override the default node address
node.HandshakeOptions = append(handshakeOptions, gost.AddrHandshakeOption(ip))
// One node per IP
nodes = append(nodes, node)
}
if len(ips) == 0 {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment