fix hysteria link generator #801
This commit is contained in:
+40
-20
@@ -67,7 +67,9 @@ func LinkGenerator(clientConfig json.RawMessage, i *model.Inbound, hostname stri
|
|||||||
return httpLink(userConfig["http"], *inbound, Addrs)
|
return httpLink(userConfig["http"], *inbound, Addrs)
|
||||||
case "mixed":
|
case "mixed":
|
||||||
return append(
|
return append(
|
||||||
socksLink(userConfig["socks"], *inbound, Addrs), httpLink(userConfig["http"], *inbound, Addrs)...)
|
socksLink(userConfig["socks"], *inbound, Addrs),
|
||||||
|
httpLink(userConfig["http"], *inbound, Addrs)...,
|
||||||
|
)
|
||||||
case "shadowsocks":
|
case "shadowsocks":
|
||||||
return shadowsocksLink(userConfig, *inbound, Addrs)
|
return shadowsocksLink(userConfig, *inbound, Addrs)
|
||||||
case "naive":
|
case "naive":
|
||||||
@@ -157,7 +159,7 @@ func shadowsocksLink(
|
|||||||
var links []string
|
var links []string
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
port, _ := addr["server_port"].(float64)
|
port, _ := addr["server_port"].(float64)
|
||||||
links = append(links, fmt.Sprintf("%s@%s:%d#%s", uriBase, addr["server"].(string), uint(port), addr["remark"].(string)))
|
links = append(links, fmt.Sprintf("%s@%s:%.0f#%s", uriBase, addr["server"].(string), port, addr["remark"].(string)))
|
||||||
}
|
}
|
||||||
return links
|
return links
|
||||||
}
|
}
|
||||||
@@ -198,7 +200,7 @@ func naiveLink(
|
|||||||
}
|
}
|
||||||
|
|
||||||
port, _ := addr["server_port"].(float64)
|
port, _ := addr["server_port"].(float64)
|
||||||
uri := baseUri + toBase64([]byte(fmt.Sprintf("%s:%s@%s:%d", username, password, addr["server"].(string), uint(port))))
|
uri := baseUri + toBase64([]byte(fmt.Sprintf("%s:%s@%s:%.0f", username, password, addr["server"].(string), port)))
|
||||||
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
||||||
}
|
}
|
||||||
return links
|
return links
|
||||||
@@ -214,11 +216,11 @@ func hysteriaLink(
|
|||||||
|
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
params := map[string]string{}
|
params := map[string]string{}
|
||||||
if upmbps, ok := inbound["up_mbps"].(string); ok {
|
if upmbps, ok := inbound["up_mbps"].(float64); ok {
|
||||||
params["up_mbps"] = upmbps
|
params["upmbps"] = fmt.Sprintf("%.0f", upmbps)
|
||||||
}
|
}
|
||||||
if downmbps, ok := inbound["down_mbps"].(string); ok {
|
if downmbps, ok := inbound["down_mbps"].(float64); ok {
|
||||||
params["down_mbps"] = downmbps
|
params["downmbps"] = fmt.Sprintf("%.0f", downmbps)
|
||||||
}
|
}
|
||||||
if auth, ok := userConfig["auth_str"].(string); ok {
|
if auth, ok := userConfig["auth_str"].(string); ok {
|
||||||
params["auth"] = auth
|
params["auth"] = auth
|
||||||
@@ -246,9 +248,18 @@ func hysteriaLink(
|
|||||||
} else {
|
} else {
|
||||||
params["fastopen"] = "0"
|
params["fastopen"] = "0"
|
||||||
}
|
}
|
||||||
|
var outJson map[string]interface{}
|
||||||
|
json.Unmarshal(inbound["out_json"].(json.RawMessage), &outJson)
|
||||||
|
if mport, ok := outJson["server_ports"].([]interface{}); ok {
|
||||||
|
mportList := make([]string, len(mport))
|
||||||
|
for i, v := range mport {
|
||||||
|
mportList[i] = v.(string)
|
||||||
|
}
|
||||||
|
params["mport"] = strings.Join(mportList, ",")
|
||||||
|
}
|
||||||
|
|
||||||
port, _ := addr["server_port"].(float64)
|
port, _ := addr["server_port"].(float64)
|
||||||
uri := fmt.Sprintf("%s%s:%d", baseUri, addr["server"].(string), uint(port))
|
uri := fmt.Sprintf("%s%s:%.0f", baseUri, addr["server"].(string), port)
|
||||||
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,11 +277,11 @@ func hysteria2Link(
|
|||||||
|
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
params := map[string]string{}
|
params := map[string]string{}
|
||||||
if upmbps, ok := inbound["up_mbps"].(string); ok {
|
if upmbps, ok := inbound["up_mbps"].(float64); ok {
|
||||||
params["up_mbps"] = upmbps
|
params["upmbps"] = fmt.Sprintf("%.0f", upmbps)
|
||||||
}
|
}
|
||||||
if downmbps, ok := inbound["down_mbps"].(string); ok {
|
if downmbps, ok := inbound["down_mbps"].(float64); ok {
|
||||||
params["down_mbps"] = downmbps
|
params["downmbps"] = fmt.Sprintf("%.0f", downmbps)
|
||||||
}
|
}
|
||||||
if tls, ok := addr["tls"].(map[string]interface{}); ok {
|
if tls, ok := addr["tls"].(map[string]interface{}); ok {
|
||||||
if sni, ok := tls["server_name"].(string); ok {
|
if sni, ok := tls["server_name"].(string); ok {
|
||||||
@@ -300,9 +311,18 @@ func hysteria2Link(
|
|||||||
} else {
|
} else {
|
||||||
params["fastopen"] = "0"
|
params["fastopen"] = "0"
|
||||||
}
|
}
|
||||||
|
var outJson map[string]interface{}
|
||||||
|
json.Unmarshal(inbound["out_json"].(json.RawMessage), &outJson)
|
||||||
|
if mport, ok := outJson["server_ports"].([]interface{}); ok {
|
||||||
|
mportList := make([]string, len(mport))
|
||||||
|
for i, v := range mport {
|
||||||
|
mportList[i] = v.(string)
|
||||||
|
}
|
||||||
|
params["mport"] = strings.Join(mportList, ",")
|
||||||
|
}
|
||||||
|
|
||||||
port, _ := addr["server_port"].(float64)
|
port, _ := addr["server_port"].(float64)
|
||||||
uri := fmt.Sprintf("%s%s:%d", baseUri, addr["server"].(string), uint(port))
|
uri := fmt.Sprintf("%s%s:%.0f", baseUri, addr["server"].(string), port)
|
||||||
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -336,7 +356,7 @@ func anytlsLink(
|
|||||||
}
|
}
|
||||||
|
|
||||||
port, _ := addr["server_port"].(float64)
|
port, _ := addr["server_port"].(float64)
|
||||||
uri := fmt.Sprintf("%s%s:%d", baseUri, addr["server"].(string), uint(port))
|
uri := fmt.Sprintf("%s%s:%.0f", baseUri, addr["server"].(string), port)
|
||||||
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,7 +398,7 @@ func tuicLink(
|
|||||||
}
|
}
|
||||||
|
|
||||||
port, _ := addr["server_port"].(float64)
|
port, _ := addr["server_port"].(float64)
|
||||||
uri := fmt.Sprintf("%s%s:%d", baseUri, addr["server"].(string), uint(port))
|
uri := fmt.Sprintf("%s%s:%.0f", baseUri, addr["server"].(string), port)
|
||||||
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
links = append(links, addParams(uri, params, addr["remark"].(string)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,7 +449,7 @@ func vlessLink(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
port, _ := addr["server_port"].(float64)
|
port, _ := addr["server_port"].(float64)
|
||||||
uri := fmt.Sprintf("vless://%s@%s:%d", uuid, addr["server"].(string), uint(port))
|
uri := fmt.Sprintf("vless://%s@%s:%.0f", uuid, addr["server"].(string), port)
|
||||||
uri = addParams(uri, params, addr["remark"].(string))
|
uri = addParams(uri, params, addr["remark"].(string))
|
||||||
links = append(links, uri)
|
links = append(links, uri)
|
||||||
}
|
}
|
||||||
@@ -477,7 +497,7 @@ func trojanLink(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
port, _ := addr["server_port"].(float64)
|
port, _ := addr["server_port"].(float64)
|
||||||
uri := fmt.Sprintf("trojan://%s@%s:%d", password, addr["server"].(string), uint(port))
|
uri := fmt.Sprintf("trojan://%s@%s:%.0f", password, addr["server"].(string), port)
|
||||||
uri = addParams(uri, params, addr["remark"].(string))
|
uri = addParams(uri, params, addr["remark"].(string))
|
||||||
links = append(links, uri)
|
links = append(links, uri)
|
||||||
}
|
}
|
||||||
@@ -556,11 +576,11 @@ func toBase64(d []byte) string {
|
|||||||
|
|
||||||
func addParams(uri string, params map[string]string, remark string) string {
|
func addParams(uri string, params map[string]string, remark string) string {
|
||||||
URL, _ := url.Parse(uri)
|
URL, _ := url.Parse(uri)
|
||||||
q := URL.Query()
|
var q []string
|
||||||
for k, v := range params {
|
for k, v := range params {
|
||||||
q.Add(k, v)
|
q = append(q, fmt.Sprintf("%s=%s", k, v))
|
||||||
}
|
}
|
||||||
URL.RawQuery = q.Encode()
|
URL.RawQuery = strings.Join(q, "&")
|
||||||
URL.Fragment = remark
|
URL.Fragment = remark
|
||||||
return URL.String()
|
return URL.String()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user