From 1631d29f8746b8eb70e9270e6ede7a3ece9b99fa Mon Sep 17 00:00:00 2001 From: gbcwbz Date: Thu, 6 Feb 2020 21:47:20 +0800 Subject: [PATCH] luci-app-ssr-plus: fix ssr subscribe (#2960) - fix protoparam parse error in ssr subscribe - in function split, when sep='/\\?', slen(sep)=3, but matched string len is 2, fix by get end position of matched string --- .../root/usr/share/shadowsocksr/subscribe.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua index 8b9b759543..a785d88e32 100644 --- a/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua +++ b/package/lean/luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua @@ -31,16 +31,16 @@ local function split(full, sep) full = full:gsub("%z", "") -- 这里不是很清楚 有时候结尾带个\0 local off, result = 1, {} while true do - local nEnd = full:find(sep, off) - if not nEnd then + local nStart, nEnd = full:find(sep, off) + if not nStart then local res = ssub(full, off, slen(full)) if #res > 0 then -- 过滤掉 \0 tinsert(result, res) end break else - tinsert(result, ssub(full, off, nEnd - 1)) - off = nEnd + slen(sep) + tinsert(result, ssub(full, off, nStart - 1)) + off = nEnd + 1 end end return result @@ -107,7 +107,7 @@ local function processData(szType, content) } result.hashkey = type(content) == 'string' and md5(content) or md5(jsonStringify(content)) if szType == 'ssr' then - local dat = split(content, "/\\?") + local dat = split(content, "/%?") local hostInfo = split(dat[1], ':') result.server = hostInfo[1] result.server_port = hostInfo[2] @@ -191,7 +191,7 @@ local function processData(szType, content) result.type = "ss" result.server = host[1] if host[2]:find("/\\?") then - local query = split(host[2], "/\\?") + local query = split(host[2], "/%?") result.server_port = query[1] -- local params = {} -- for _, v in pairs(split(query[2], '&')) do