clash/adapter/inbound/auth.go

46 lines
812 B
Go
Raw Normal View History

2023-10-10 11:43:26 +00:00
package inbound
import (
"net"
"net/netip"
2023-10-11 14:54:19 +00:00
C "github.com/Dreamacro/clash/constant"
2023-10-10 11:43:26 +00:00
)
var skipAuthPrefixes []netip.Prefix
func SetSkipAuthPrefixes(prefixes []netip.Prefix) {
skipAuthPrefixes = prefixes
}
func SkipAuthPrefixes() []netip.Prefix {
return skipAuthPrefixes
}
func SkipAuthRemoteAddr(addr net.Addr) bool {
2023-10-11 14:54:19 +00:00
m := C.Metadata{}
if err := m.SetRemoteAddr(addr); err != nil {
return false
}
return skipAuth(m.AddrPort().Addr())
}
func SkipAuthRemoteAddress(addr string) bool {
m := C.Metadata{}
if err := m.SetRemoteAddress(addr); err != nil {
return false
}
return skipAuth(m.AddrPort().Addr())
}
func skipAuth(addr netip.Addr) bool {
if addr.IsValid() {
2023-10-10 11:43:26 +00:00
for _, prefix := range skipAuthPrefixes {
2023-10-11 14:54:19 +00:00
if prefix.Contains(addr.Unmap()) {
2023-10-10 11:43:26 +00:00
return true
}
}
}
return false
}