mirror of
https://github.com/wyx2685/V2bX.git
synced 2025-01-23 10:28:13 -05:00
695da4f4c5
change to uniproxy api refactor build inbound refactor limiter and rule add ss2022 support add speedlimit support and more...
46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
package controller
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/Yuzuki616/V2bX/api/panel"
|
|
conf2 "github.com/Yuzuki616/V2bX/conf"
|
|
"github.com/goccy/go-json"
|
|
|
|
"github.com/xtls/xray-core/common/net"
|
|
"github.com/xtls/xray-core/core"
|
|
"github.com/xtls/xray-core/infra/conf"
|
|
)
|
|
|
|
// buildOutbound build freedom outbund config for addoutbound
|
|
func buildOutbound(config *conf2.ControllerConfig, nodeInfo *panel.NodeInfo, tag string) (*core.OutboundHandlerConfig, error) {
|
|
outboundDetourConfig := &conf.OutboundDetourConfig{}
|
|
outboundDetourConfig.Protocol = "freedom"
|
|
outboundDetourConfig.Tag = tag
|
|
|
|
// Build Send IP address
|
|
if config.SendIP != "" {
|
|
ipAddress := net.ParseAddress(config.SendIP)
|
|
outboundDetourConfig.SendThrough = &conf.Address{Address: ipAddress}
|
|
}
|
|
|
|
// Freedom Protocol setting
|
|
var domainStrategy = "Asis"
|
|
if config.EnableDNS {
|
|
if config.DNSType != "" {
|
|
domainStrategy = config.DNSType
|
|
} else {
|
|
domainStrategy = "UseIP"
|
|
}
|
|
}
|
|
proxySetting := &conf.FreedomConfig{
|
|
DomainStrategy: domainStrategy,
|
|
}
|
|
var setting json.RawMessage
|
|
setting, err := json.Marshal(proxySetting)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("marshal proxy %s config fialed: %s", nodeInfo.NodeType, err)
|
|
}
|
|
outboundDetourConfig.Settings = &setting
|
|
return outboundDetourConfig.Build()
|
|
}
|