feat(adapter): add V2rayN adapter and build method for proxy management
This commit is contained in:
+38
-13
@@ -69,7 +69,10 @@ func buildProxy(data proxy.Proxy, uuid string) string {
|
||||
}
|
||||
|
||||
func ShadowsocksUri(data proxy.Proxy, uuid string) string {
|
||||
ss := data.Option.(proxy.Shadowsocks)
|
||||
ss, ok := data.Option.(proxy.Shadowsocks)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
// sip002
|
||||
u := &url.URL{
|
||||
Scheme: "ss",
|
||||
@@ -94,10 +97,20 @@ func VmessUri(data proxy.Proxy, uuid string) string {
|
||||
Port: fmt.Sprint(data.Port),
|
||||
ID: uuid,
|
||||
Aid: "0",
|
||||
Net: vmess.Transport,
|
||||
// Type: "?",
|
||||
Host: transport.Host,
|
||||
Path: transport.Path,
|
||||
}
|
||||
|
||||
switch vmess.Transport {
|
||||
case "websocket":
|
||||
s.Net = "ws"
|
||||
s.Path = transport.Path
|
||||
s.Host = transport.Host
|
||||
case "grpc":
|
||||
s.Net = "grpc"
|
||||
s.Path = transport.ServiceName
|
||||
case "httpupgrade":
|
||||
s.Net = "http"
|
||||
s.Path = transport.Path
|
||||
s.Host = transport.Host
|
||||
}
|
||||
|
||||
if vmess.Security == "tls" {
|
||||
@@ -117,23 +130,35 @@ func VlessUri(data proxy.Proxy, uuid string) string {
|
||||
|
||||
var query = make(url.Values)
|
||||
setQuery(&query, "flow", vless.Flow)
|
||||
setQuery(&query, "type", vless.Transport)
|
||||
setQuery(&query, "security", vless.Security)
|
||||
|
||||
switch vless.Transport {
|
||||
case "ws", "http", "httpupgrade":
|
||||
case "websocket":
|
||||
setQuery(&query, "type", "ws")
|
||||
setQuery(&query, "host", transportConfig.Host)
|
||||
setQuery(&query, "path", transportConfig.Path)
|
||||
|
||||
case "http2", "httpupgrade":
|
||||
setQuery(&query, "type", vless.Transport)
|
||||
setQuery(&query, "path", transportConfig.Path)
|
||||
setQuery(&query, "host", transportConfig.Host)
|
||||
case "grpc":
|
||||
setQuery(&query, "type", "grpc")
|
||||
setQuery(&query, "serviceName", transportConfig.ServiceName)
|
||||
case "meek":
|
||||
setQuery(&query, "url", transportConfig.Host)
|
||||
}
|
||||
|
||||
setQuery(&query, "sni", securityConfig.SNI)
|
||||
setQuery(&query, "fp", securityConfig.Fingerprint)
|
||||
setQuery(&query, "pbk", securityConfig.RealityPublicKey)
|
||||
setQuery(&query, "sid", securityConfig.RealityShortId)
|
||||
if vless.Security == "tls" {
|
||||
setQuery(&query, "sni", securityConfig.SNI)
|
||||
setQuery(&query, "fp", securityConfig.Fingerprint)
|
||||
} else if vless.Security == "reality" {
|
||||
setQuery(&query, "pbk", securityConfig.RealityPublicKey)
|
||||
setQuery(&query, "sid", securityConfig.RealityShortId)
|
||||
setQuery(&query, "sni", securityConfig.SNI)
|
||||
setQuery(&query, "fp", securityConfig.Fingerprint)
|
||||
setQuery(&query, "servername", securityConfig.SNI)
|
||||
setQuery(&query, "spx", "/")
|
||||
|
||||
}
|
||||
|
||||
u := url.URL{
|
||||
Scheme: "vless",
|
||||
|
||||
Reference in New Issue
Block a user