Browse Source

luci-app-ssr-plus: Resolve `ss` and `ss-rust` overlay display issues.

zxlhhyccc 9 months ago
parent
commit
6929073d12

+ 14 - 5
luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua

@@ -146,11 +146,8 @@ end
 if is_finded("ssr-redir") then
 	o:value("ssr", translate("ShadowsocksR"))
 end
-if is_finded("ss-local") or is_finded("ss-redir") then
-	o:value("ss", translate("Shadowsocks-libev Version"))
-end
-if is_finded("sslocal") or is_finded("ssmanager") then
-	o:value("ss", translate("Shadowsocks-rust Version"))
+if is_finded("ss-local") or is_finded("ss-redir") or is_finded("sslocal") or is_finded("ssmanager") then
+    o:value("ss", translate("Shadowsocks"))
 end
 if is_finded("trojan") then
 	o:value("trojan", translate("Trojan"))
@@ -187,6 +184,18 @@ end
 o:depends("type", "tun")
 o.description = translate("Redirect traffic to this network interface")
 
+-- 新增一个选择框,用于选择 Shadowsocks 版本
+o = s:option(ListValue, "ss_variant", translate("Shadowsocks Variant"))
+local isSSRust = is_finded("sslocal") or is_finded("ssmanager")
+local isSSLibev = is_finded("ss-local") or is_finded("ss-redir")
+if isSSRust then
+    o:value("isSSRust", translate("Shadowsocks-rust Version"))
+end
+if isSSLibev then
+    o:value("isSSLibev", translate("Shadowsocks-libev Version"))
+end
+o:depends("type", "ss")
+
 o = s:option(ListValue, "v2ray_protocol", translate("V2Ray/XRay protocol"))
 o:value("vless", translate("VLESS"))
 o:value("vmess", translate("VMess"))

+ 3 - 0
luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm

@@ -155,6 +155,9 @@ function import_ssr_url(btn, urlname, sid) {
 				}
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].value = ssu[0];
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.type')[0].dispatchEvent(event);
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.ss_variant')[0].value = 
+					(ssu[0] === "ss") ? "isSSRust" : "isSSLibev";
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.ss_variant')[0].dispatchEvent(event);
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.server')[0].value = server;
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.server_port')[0].value = port;
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0].value = password || "";

+ 9 - 3
luci-app-ssr-plus/po/zh_Hans/ssr-plus.po

@@ -208,13 +208,13 @@ msgid "Certificate fingerprint"
 msgstr "证书指纹"
 
 msgid "shadowTLS protocol Version"
-msgstr "ShadowTLS协议版本"
+msgstr "ShadowTLS 协议版本"
 
 msgid "TLS 1.3 Strict mode"
 msgstr "TLS 1.3 限定模式"
 
 msgid "Disable TCP No_delay"
-msgstr "禁用TCP无延迟"
+msgstr "禁用 TCP 无延迟"
 
 msgid "shadow-TLS SNI"
 msgstr "服务器名称指示"
@@ -222,11 +222,17 @@ msgstr "服务器名称指示"
 msgid "Shadow-TLS ChainPoxy type"
 msgstr "代理链类型"
 
+msgid "Shadowsocks Variant"
+msgstr "shadowsocks 变体"
+
 msgid "Shadowsocks-rust Version"
 msgstr "shadowsocks rust 版本"
 
+msgid "Shadowsocks-libev Version"
+msgstr "Shadowsocks-libev 版本"
+
 msgid "Vmess Protocol"
-msgstr "VMESS协议"
+msgstr "VMESS 协议"
 
 msgid "Shadowsocks password"
 msgstr "shadowsocks密码"

+ 3 - 1
luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua

@@ -28,7 +28,8 @@ local allow_insecure = ucic:get_first(name, 'server_subscribe', 'allow_insecure'
 local subscribe_url = ucic:get_first(name, 'server_subscribe', 'subscribe_url', {})
 local filter_words = ucic:get_first(name, 'server_subscribe', 'filter_words', '过期时间/剩余流量')
 local save_words = ucic:get_first(name, 'server_subscribe', 'save_words', '')
-local v2_ss = luci.sys.exec('type -t -p ss-redir sslocal') ~= "" and "ss" or "v2ray"
+local v2_ss = luci.sys.exec('type -t -p sslocal ss-redir') ~= "" and "ss" or "v2ray"
+local ss_variant = luci.sys.exec('type -t -p sslocal') ~= "" and "isSSRust" or luci.sys.exec('type -t -p ss-redir') ~= "" and "isSSLibev"
 local v2_tj = luci.sys.exec('type -t -p trojan') ~= "" and "trojan" or "v2ray"
 local log = function(...)
 	print(os.date("%Y-%m-%d %H:%M:%S ") .. table.concat({...}, " "))
@@ -278,6 +279,7 @@ local function processData(szType, content)
 		result.alias = UrlDecode(alias)
 		result.type = v2_ss
 		result.v2ray_protocol = (v2_ss == "v2ray") and "shadowsocks" or nil
+		result.ss_variant = ss_variant
 		result.encrypt_method_ss = method
 		result.password = password
 		result.server = host[1]