domain.go 686 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package common
  2. import (
  3. "strings"
  4. C "github.com/metacubex/mihomo/constant"
  5. "golang.org/x/net/idna"
  6. )
  7. type Domain struct {
  8. *Base
  9. domain string
  10. adapter string
  11. }
  12. func (d *Domain) RuleType() C.RuleType {
  13. return C.Domain
  14. }
  15. func (d *Domain) Match(metadata *C.Metadata) (bool, string) {
  16. return metadata.RuleHost() == d.domain, d.adapter
  17. }
  18. func (d *Domain) Adapter() string {
  19. return d.adapter
  20. }
  21. func (d *Domain) Payload() string {
  22. return d.domain
  23. }
  24. func NewDomain(domain string, adapter string) *Domain {
  25. punycode, _ := idna.ToASCII(strings.ToLower(domain))
  26. return &Domain{
  27. Base: &Base{},
  28. domain: punycode,
  29. adapter: adapter,
  30. }
  31. }
  32. //var _ C.Rule = (*Domain)(nil)