From e911cef2b2bf97ed154a6529d2cb5f768f3ecf5c Mon Sep 17 00:00:00 2001 From: Max Zhao Date: Fri, 14 Feb 2020 17:27:35 +0800 Subject: [PATCH] luci-app-ssr-plus: improve SIP003 plugin support (#3072) * luci-app-ssr-plus: improve SIP003 plugin support for subscribe * luci-app-ssr-plus: fix plugin(SIP003) can't stop when stop app --- .../root/etc/init.d/shadowsocksr | 2 ++ .../root/usr/share/shadowsocksr/subscribe.lua | 22 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr b/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr index f321d7de44..8e9f22ef43 100755 --- a/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr +++ b/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr @@ -561,6 +561,8 @@ stop() { fi killall -q -9 ssr-monitor killall -q -9 ss-redir + killall -q -9 obfs-local + killall -q -9 v2ray-plugin killall -q -9 ssr-redir killall -q -9 v2ray killall -q -9 trojan 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 effb5d5d16..30b35a2bf9 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 @@ -193,12 +193,21 @@ local function processData(szType, content) if host[2]:find("/\\?") then local query = split(host[2], "/\\?") result.server_port = query[1] - -- local params = {} - -- for _, v in pairs(split(query[2], '&')) do - -- local t = split(v, '=') - -- params[t[1]] = t[2] - -- end - -- 这里似乎没什么用 我看数据结构没有写插件的支持 先抛弃 + local params = {} + for _, v in pairs(split(query[2], '&')) do + local t = split(v, '=') + params[t[1]] = t[2] + end + if params.lugin then + local plugin_info = UrlDecode(params.lugin) + local idx_pn = plugin_info:find(";") + if idx_pn then + result.plugin = plugin_info:sub(1, idx_pn - 1) + result.plugin_opts = plugin_info:sub(idx_pn + 1, #plugin_info) + else + result.plugin = plugin_info + end + end else result.server_port = host[2] end @@ -365,3 +374,4 @@ if subscribe_url and #subscribe_url > 0 then end end) end +