2020-11-25 13:01:53 +02:00
|
|
|
package proxyman
|
|
|
|
|
2021-03-26 10:56:43 +02:00
|
|
|
import (
|
|
|
|
"github.com/xtls/xray-core/common/matcher/domain"
|
|
|
|
"github.com/xtls/xray-core/common/matcher/geoip"
|
|
|
|
)
|
|
|
|
|
|
|
|
//go:generate go run github.com/xtls/xray-core/common/errors/errorgen
|
|
|
|
|
2020-11-25 13:01:53 +02:00
|
|
|
func (s *AllocationStrategy) GetConcurrencyValue() uint32 {
|
|
|
|
if s == nil || s.Concurrency == nil {
|
|
|
|
return 3
|
|
|
|
}
|
|
|
|
return s.Concurrency.Value
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *AllocationStrategy) GetRefreshValue() uint32 {
|
|
|
|
if s == nil || s.Refresh == nil {
|
|
|
|
return 5
|
|
|
|
}
|
|
|
|
return s.Refresh.Value
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *ReceiverConfig) GetEffectiveSniffingSettings() *SniffingConfig {
|
|
|
|
if c.SniffingSettings != nil {
|
|
|
|
return c.SniffingSettings
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(c.DomainOverride) > 0 {
|
|
|
|
var p []string
|
|
|
|
for _, kd := range c.DomainOverride {
|
|
|
|
switch kd {
|
|
|
|
case KnownProtocols_HTTP:
|
|
|
|
p = append(p, "http")
|
|
|
|
case KnownProtocols_TLS:
|
|
|
|
p = append(p, "tls")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return &SniffingConfig{
|
|
|
|
Enabled: true,
|
|
|
|
DestinationOverride: p,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
2021-03-26 10:56:43 +02:00
|
|
|
|
|
|
|
type SniffingMatcher struct {
|
|
|
|
ExDomain *domain.DomainMatcher
|
|
|
|
ExIP *geoip.MultiGeoIPMatcher
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewSniffingMatcher(sc *SniffingConfig) (*SniffingMatcher, error) {
|
|
|
|
m := new(SniffingMatcher)
|
|
|
|
|
2021-03-26 11:19:09 +02:00
|
|
|
if sc == nil {
|
|
|
|
return m, nil
|
|
|
|
}
|
|
|
|
|
2021-03-26 10:56:43 +02:00
|
|
|
if sc.DomainsExcluded != nil {
|
|
|
|
exDomain, err := domain.NewDomainMatcher(sc.DomainsExcluded)
|
|
|
|
if err != nil {
|
|
|
|
return nil, newError("failed to parse domain").Base(err)
|
|
|
|
}
|
|
|
|
m.ExDomain = exDomain
|
|
|
|
}
|
|
|
|
if sc.IpsExcluded != nil {
|
|
|
|
exIP, err := geoip.NewMultiGeoIPMatcher(sc.IpsExcluded, true)
|
|
|
|
if err != nil {
|
|
|
|
return nil, newError("failed to parse ip").Base(err)
|
|
|
|
}
|
|
|
|
m.ExIP = exIP
|
|
|
|
}
|
|
|
|
return m, nil
|
|
|
|
}
|