add some helper structs

This commit is contained in:
ginuerzh 2022-08-23 21:46:27 +08:00
parent 2cc1d6f52c
commit ff51aef518
4 changed files with 61 additions and 1 deletions

View File

@ -3,3 +3,22 @@ package admission
type Admission interface {
Admit(addr string) bool
}
type admissionList struct {
admissions []Admission
}
func AdmissionList(admissions ...Admission) Admission {
return &admissionList{
admissions: admissions,
}
}
func (p *admissionList) Admit(addr string) bool {
for _, admission := range p.admissions {
if admission != nil && !admission.Admit(addr) {
return false
}
}
return true
}

View File

@ -4,3 +4,25 @@ package auth
type Authenticator interface {
Authenticate(user, password string) bool
}
type authenticatorList struct {
authers []Authenticator
}
func AuthenticatorList(authers ...Authenticator) Authenticator {
return &authenticatorList{
authers: authers,
}
}
func (p *authenticatorList) Authenticate(user, password string) bool {
if len(p.authers) == 0 {
return true
}
for _, auther := range p.authers {
if auther != nil && auther.Authenticate(user, password) {
return true
}
}
return false
}

View File

@ -5,3 +5,22 @@ type Bypass interface {
// Contains reports whether the bypass includes addr.
Contains(addr string) bool
}
type bypassList struct {
bypasses []Bypass
}
func BypassList(bypasses ...Bypass) Bypass {
return &bypassList{
bypasses: bypasses,
}
}
func (p *bypassList) Contains(addr string) bool {
for _, bypass := range p.bypasses {
if bypass != nil && bypass.Contains(addr) {
return true
}
}
return false
}

View File

@ -39,7 +39,7 @@ func resolve(ctx context.Context, network, addr string, r resolver.Resolver, hos
log.Error(err)
}
if len(ips) == 0 {
return "", fmt.Errorf("resolver: domain %s does not exists", host)
return "", fmt.Errorf("resolver: domain %s does not exist", host)
}
return net.JoinHostPort(ips[0].String(), port), nil
}