core/bypass/bypass.go
2022-09-02 10:54:42 +08:00

27 lines
491 B
Go

package bypass
// Bypass is a filter of address (IP or domain).
type Bypass interface {
// Contains reports whether the bypass includes addr.
Contains(addr string) bool
}
type bypassGroup struct {
bypasses []Bypass
}
func BypassGroup(bypasses ...Bypass) Bypass {
return &bypassGroup{
bypasses: bypasses,
}
}
func (p *bypassGroup) Contains(addr string) bool {
for _, bypass := range p.bypasses {
if bypass != nil && bypass.Contains(addr) {
return true
}
}
return false
}