mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2024-09-17 22:32:32 +00:00
49 lines
827 B
Go
49 lines
827 B
Go
package common
|
|
|
|
import (
|
|
"fmt"
|
|
C "github.com/Dreamacro/clash/constant"
|
|
"strings"
|
|
)
|
|
|
|
type NetworkType struct {
|
|
*Base
|
|
network C.NetWork
|
|
adapter string
|
|
}
|
|
|
|
func NewNetworkType(network, adapter string) (*NetworkType, error) {
|
|
ntType := NetworkType{
|
|
Base: &Base{},
|
|
}
|
|
|
|
ntType.adapter = adapter
|
|
switch strings.ToUpper(network) {
|
|
case "TCP":
|
|
ntType.network = C.TCP
|
|
break
|
|
case "UDP":
|
|
ntType.network = C.UDP
|
|
break
|
|
default:
|
|
return nil, fmt.Errorf("unsupported network type, only TCP/UDP")
|
|
}
|
|
|
|
return &ntType, nil
|
|
}
|
|
|
|
func (n *NetworkType) RuleType() C.RuleType {
|
|
return C.Network
|
|
}
|
|
|
|
func (n *NetworkType) Match(metadata *C.Metadata) bool {
|
|
return n.network == metadata.NetWork
|
|
}
|
|
|
|
func (n *NetworkType) Adapter() string {
|
|
return n.adapter
|
|
}
|
|
|
|
func (n *NetworkType) Payload() string {
|
|
return n.network.String()
|
|
}
|