chore: adjust sniffer constant

This commit is contained in:
MetaCubeX 2022-05-02 08:46:24 +08:00
parent ebbce4d061
commit 0cf539fb82
3 changed files with 21 additions and 14 deletions

View File

@ -2,6 +2,7 @@ package sniffer
import (
"errors"
"github.com/Dreamacro/clash/constant/sniffer"
"net"
"net/netip"
"strconv"
@ -28,7 +29,7 @@ type (
SnifferDispatcher struct {
enable bool
sniffers []C.Sniffer
sniffers []sniffer.Sniffer
foreDomain *trie.DomainTrie[bool]
skipSNI *trie.DomainTrie[bool]
@ -136,7 +137,7 @@ func NewCloseSnifferDispatcher() (*SnifferDispatcher, error) {
return &dispatcher, nil
}
func NewSnifferDispatcher(needSniffer []C.SnifferType, forceDomain *trie.DomainTrie[bool],
func NewSnifferDispatcher(needSniffer []sniffer.Type, forceDomain *trie.DomainTrie[bool],
skipSNI *trie.DomainTrie[bool], ports *[]utils.Range[uint16]) (*SnifferDispatcher, error) {
dispatcher := SnifferDispatcher{
enable: true,
@ -158,10 +159,12 @@ func NewSnifferDispatcher(needSniffer []C.SnifferType, forceDomain *trie.DomainT
return &dispatcher, nil
}
func NewSniffer(name C.SnifferType) (C.Sniffer, error) {
func NewSniffer(name sniffer.Type) (sniffer.Sniffer, error) {
switch name {
case C.TLS:
case sniffer.TLS:
return &TLSSniffer{}, nil
case sniffer.HTTP:
return &HTTPSniffer{}, nil
default:
return nil, ErrorUnsupportedSniffer
}

View File

@ -4,6 +4,7 @@ import (
"container/list"
"errors"
"fmt"
"github.com/Dreamacro/clash/constant/sniffer"
"github.com/Dreamacro/clash/listener/tun/ipstack/commons"
"net"
"net/netip"
@ -30,6 +31,7 @@ import (
"github.com/Dreamacro/clash/component/trie"
C "github.com/Dreamacro/clash/constant"
providerTypes "github.com/Dreamacro/clash/constant/provider"
snifferTypes "github.com/Dreamacro/clash/constant/sniffer"
"github.com/Dreamacro/clash/dns"
"github.com/Dreamacro/clash/log"
T "github.com/Dreamacro/clash/tunnel"
@ -128,7 +130,7 @@ type IPTables struct {
type Sniffer struct {
Enable bool
Force bool
Sniffers []C.SnifferType
Sniffers []sniffer.Type
Reverses *trie.DomainTrie[bool]
ForceDomain *trie.DomainTrie[bool]
SkipSNI *trie.DomainTrie[bool]
@ -954,11 +956,11 @@ func parseSniffer(snifferRaw SnifferRaw) (*Sniffer, error) {
sniffer.Ports = &ports
loadSniffer := make(map[C.SnifferType]struct{})
loadSniffer := make(map[snifferTypes.Type]struct{})
for _, snifferName := range snifferRaw.Sniffing {
find := false
for _, snifferType := range C.SnifferList {
for _, snifferType := range snifferTypes.List {
if snifferType.String() == strings.ToUpper(snifferName) {
find = true
loadSniffer[snifferType] = struct{}{}

View File

@ -1,23 +1,25 @@
package constant
package sniffer
import "github.com/Dreamacro/clash/constant"
type Sniffer interface {
SupportNetwork() NetWork
SupportNetwork() constant.NetWork
SniffTCP(bytes []byte) (string, error)
Protocol() string
}
const (
TLS SnifferType = iota
HTTP SnifferType
TLS Type = iota
HTTP
)
var (
SnifferList = []SnifferType{TLS, HTTP}
List = []Type{TLS, HTTP}
)
type SnifferType int
type Type int
func (rt SnifferType) String() string {
func (rt Type) String() string {
switch rt {
case TLS:
return "TLS"