Files
sing-box-extended/parser/link/utils.go

47 lines
1.2 KiB
Go

package link
import (
"regexp"
"strings"
"github.com/sagernet/sing-box/common"
"github.com/sagernet/sing-box/option"
F "github.com/sagernet/sing/common/format"
"github.com/sagernet/sing/common/json/badoption"
)
func shadowsocksPluginName(plugin string) string {
if index := strings.Index(plugin, ";"); index != -1 {
return plugin[:index]
}
return plugin
}
func shadowsocksPluginOptions(plugin string) string {
if index := strings.Index(plugin, ";"); index != -1 {
return plugin[index+1:]
}
return ""
}
func v2rayTransportWsPath(WebsocketOptions *option.V2RayWebsocketOptions, path string) {
reg := regexp.MustCompile(`^(.*?)(?:\?ed=(\d*))?$`)
result := reg.FindStringSubmatch(path)
WebsocketOptions.Path = result[1]
if result[2] != "" {
WebsocketOptions.EarlyDataHeaderName = "Sec-WebSocket-Protocol"
WebsocketOptions.MaxEarlyData = common.StringToType[uint32](result[2])
}
}
func v2rayTransportWs(host string, path string) option.V2RayWebsocketOptions {
var WebsocketOptions option.V2RayWebsocketOptions
if host != "" {
WebsocketOptions.Headers = common.StringToType[badoption.HTTPHeader](F.ToString("Host: ", host))
}
if path != "" {
v2rayTransportWsPath(&WebsocketOptions, path)
}
return WebsocketOptions
}