mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Design difference from original vision: Skipped FQDN step to make it more generalized https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/28651#note_2787394
26 lines
559 B
Go
26 lines
559 B
Go
package namematcher
|
|
|
|
import "strings"
|
|
|
|
func NewNameMatcher(rule string) NameMatcher {
|
|
return NameMatcher{suffix: strings.TrimPrefix(rule, "^"), exact: strings.HasPrefix(rule, "^")}
|
|
}
|
|
|
|
type NameMatcher struct {
|
|
exact bool
|
|
suffix string
|
|
}
|
|
|
|
func (m *NameMatcher) IsSupersetOf(matcher NameMatcher) bool {
|
|
if m.exact {
|
|
return matcher.exact && m.suffix == matcher.suffix
|
|
}
|
|
return strings.HasSuffix(matcher.suffix, m.suffix)
|
|
}
|
|
|
|
func (m *NameMatcher) IsMember(s string) bool {
|
|
if m.exact {
|
|
return s == m.suffix
|
|
}
|
|
return strings.HasSuffix(s, m.suffix)
|
|
}
|