1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-26 01:15:38 +00:00

isolate sniffer config

This commit is contained in:
Shelikhoo 2021-09-04 12:37:53 +01:00
parent b8e81f01fa
commit 3e68a192f5
No known key found for this signature in database
GPG Key ID: C4D5E79D22B25316
2 changed files with 44 additions and 34 deletions

View File

@ -0,0 +1,42 @@
package sniffer
import (
"github.com/v2fly/v2ray-core/v4/app/proxyman"
"github.com/v2fly/v2ray-core/v4/infra/conf/cfgcommon"
"strings"
)
//go:generate go run github.com/v2fly/v2ray-core/v4/common/errors/errorgen
type SniffingConfig struct {
Enabled bool `json:"enabled"`
DestOverride *cfgcommon.StringList `json:"destOverride"`
MetadataOnly bool `json:"metadataOnly"`
}
// Build implements Buildable.
func (c *SniffingConfig) Build() (*proxyman.SniffingConfig, error) {
var p []string
if c.DestOverride != nil {
for _, domainOverride := range *c.DestOverride {
switch strings.ToLower(domainOverride) {
case "http":
p = append(p, "http")
case "tls", "https", "ssl":
p = append(p, "tls")
case "fakedns":
p = append(p, "fakedns")
case "fakedns+others":
p = append(p, "fakedns+others")
default:
return nil, newError("unknown protocol: ", domainOverride)
}
}
}
return &proxyman.SniffingConfig{
Enabled: c.Enabled,
DestinationOverride: p,
MetadataOnly: c.MetadataOnly,
}, nil
}

View File

@ -3,6 +3,7 @@ package v4
import (
"encoding/json"
"github.com/v2fly/v2ray-core/v4/infra/conf/cfgcommon/loader"
"github.com/v2fly/v2ray-core/v4/infra/conf/cfgcommon/sniffer"
"github.com/v2fly/v2ray-core/v4/infra/conf/synthetic/dns"
"github.com/v2fly/v2ray-core/v4/infra/conf/synthetic/log"
"github.com/v2fly/v2ray-core/v4/infra/conf/synthetic/router"
@ -57,39 +58,6 @@ func toProtocolList(s []string) ([]proxyman.KnownProtocols, error) {
return kp, nil
}
type SniffingConfig struct {
Enabled bool `json:"enabled"`
DestOverride *cfgcommon.StringList `json:"destOverride"`
MetadataOnly bool `json:"metadataOnly"`
}
// Build implements Buildable.
func (c *SniffingConfig) Build() (*proxyman.SniffingConfig, error) {
var p []string
if c.DestOverride != nil {
for _, domainOverride := range *c.DestOverride {
switch strings.ToLower(domainOverride) {
case "http":
p = append(p, "http")
case "tls", "https", "ssl":
p = append(p, "tls")
case "fakedns":
p = append(p, "fakedns")
case "fakedns+others":
p = append(p, "fakedns+others")
default:
return nil, newError("unknown protocol: ", domainOverride)
}
}
}
return &proxyman.SniffingConfig{
Enabled: c.Enabled,
DestinationOverride: p,
MetadataOnly: c.MetadataOnly,
}, nil
}
type MuxConfig struct {
Enabled bool `json:"enabled"`
Concurrency int16 `json:"concurrency"`
@ -155,7 +123,7 @@ type InboundDetourConfig struct {
Allocation *InboundDetourAllocationConfig `json:"allocate"`
StreamSetting *StreamConfig `json:"streamSettings"`
DomainOverride *cfgcommon.StringList `json:"domainOverride"`
SniffingConfig *SniffingConfig `json:"sniffing"`
SniffingConfig *sniffer.SniffingConfig `json:"sniffing"`
}
// Build implements Buildable.