V2bX/node/controller/outbound.go

46 lines
1.3 KiB
Go
Raw Normal View History

2022-10-09 23:31:15 -04:00
package controller
2022-06-01 13:35:41 -04:00
import (
"fmt"
"github.com/Yuzuki616/V2bX/api/panel"
conf2 "github.com/Yuzuki616/V2bX/conf"
"github.com/goccy/go-json"
2022-06-01 13:35:41 -04:00
"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) {
2022-06-01 13:35:41 -04:00
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}
2022-06-01 13:35:41 -04:00
}
// Freedom Protocol setting
var domainStrategy = "Asis"
2022-06-01 13:35:41 -04:00
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)
2022-06-01 13:35:41 -04:00
}
outboundDetourConfig.Settings = &setting
return outboundDetourConfig.Build()
}