base_sniffer.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package sniffer
  2. import (
  3. "errors"
  4. "github.com/metacubex/mihomo/common/utils"
  5. "github.com/metacubex/mihomo/constant"
  6. "github.com/metacubex/mihomo/constant/sniffer"
  7. )
  8. type SnifferConfig struct {
  9. OverrideDest bool
  10. Ports utils.IntRanges[uint16]
  11. }
  12. type BaseSniffer struct {
  13. ports utils.IntRanges[uint16]
  14. supportNetworkType constant.NetWork
  15. }
  16. // Protocol implements sniffer.Sniffer
  17. func (*BaseSniffer) Protocol() string {
  18. return "unknown"
  19. }
  20. // SniffData implements sniffer.Sniffer
  21. func (*BaseSniffer) SniffData(bytes []byte) (string, error) {
  22. return "", errors.New("TODO")
  23. }
  24. // SupportNetwork implements sniffer.Sniffer
  25. func (bs *BaseSniffer) SupportNetwork() constant.NetWork {
  26. return bs.supportNetworkType
  27. }
  28. // SupportPort implements sniffer.Sniffer
  29. func (bs *BaseSniffer) SupportPort(port uint16) bool {
  30. return bs.ports.Check(port)
  31. }
  32. func NewBaseSniffer(ports utils.IntRanges[uint16], networkType constant.NetWork) *BaseSniffer {
  33. return &BaseSniffer{
  34. ports: ports,
  35. supportNetworkType: networkType,
  36. }
  37. }
  38. var _ sniffer.Sniffer = (*BaseSniffer)(nil)