Files
jimleerx e605cd07bf init
2026-01-28 13:13:58 +08:00

77 lines
2.0 KiB
Go

package handler
import (
"github.com/xtls/xray-core/app/proxyman"
cnet "github.com/xtls/xray-core/common/net"
"github.com/xtls/xray-core/common/protocol"
"github.com/xtls/xray-core/common/serial"
"github.com/xtls/xray-core/common/uuid"
"github.com/xtls/xray-core/core"
"github.com/xtls/xray-core/transport/internet"
)
func receiverSettings(port uint32, enableSniff bool) *serial.TypedMessage {
pr := cnet.SinglePortRange(cnet.Port(port))
rc := &proxyman.ReceiverConfig{
PortList: &cnet.PortList{Range: []*cnet.PortRange{pr}},
Listen: cnet.NewIPOrDomain(cnet.AnyIP),
StreamSettings: &internet.StreamConfig{
ProtocolName: "tcp",
},
}
if enableSniff {
rc.SniffingSettings = &proxyman.SniffingConfig{
Enabled: true,
DestinationOverride: []string{"http", "tls"},
}
}
return serial.ToTypedMessage(rc)
}
func senderSettings() *serial.TypedMessage {
return serial.ToTypedMessage(&proxyman.SenderConfig{
StreamSettings: &internet.StreamConfig{
ProtocolName: "tcp",
},
MultiplexSettings: &proxyman.MultiplexingConfig{
Enabled: true,
Concurrency: 8,
XudpProxyUDP443: "reject",
},
TargetStrategy: internet.DomainStrategy_USE_IP,
})
}
func endpoint(address string, port uint32, user *protocol.User) *protocol.ServerEndpoint {
return &protocol.ServerEndpoint{
Address: cnet.NewIPOrDomain(cnet.ParseAddress(address)),
Port: port,
User: user,
}
}
func randomUUID() string {
u := uuid.New()
return (&u).String()
}
func cnetOrDomain(value string) *cnet.IPOrDomain {
return cnet.NewIPOrDomain(cnet.ParseAddress(value))
}
func inboundConfig(tag string, receiver *serial.TypedMessage, proxy *serial.TypedMessage) *core.InboundHandlerConfig {
return &core.InboundHandlerConfig{
Tag: tag,
ReceiverSettings: receiver,
ProxySettings: proxy,
}
}
func outboundConfig(tag string, sender *serial.TypedMessage, proxy *serial.TypedMessage) *core.OutboundHandlerConfig {
return &core.OutboundHandlerConfig{
Tag: tag,
SenderSettings: sender,
ProxySettings: proxy,
}
}