diff --git a/package/lean/luci-app-ssr-plus/Makefile b/package/lean/luci-app-ssr-plus/Makefile index 9bfe34060..6bf2a65f4 100644 --- a/package/lean/luci-app-ssr-plus/Makefile +++ b/package/lean/luci-app-ssr-plus/Makefile @@ -1,8 +1,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-ssr-plus -PKG_VERSION:=172 -PKG_RELEASE:=2 +PKG_VERSION:=173 +PKG_RELEASE:=1 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) diff --git a/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua b/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua index bd4581381..2ae4d603e 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua @@ -12,9 +12,7 @@ function index() entry({"admin", "services", "shadowsocksr", "servers"}, arcombine(cbi("shadowsocksr/servers", {autoapply=true}), cbi("shadowsocksr/client-config")),_("Severs Nodes"), 20).leaf = true entry({"admin", "services", "shadowsocksr", "control"},cbi("shadowsocksr/control"), _("Access Control"), 30).leaf = true entry({"admin", "services", "shadowsocksr", "advanced"},cbi("shadowsocksr/advanced"),_("Advanced Settings"), 50).leaf = true - if nixio.fs.access("/usr/bin/ssr-server") then - entry({"admin", "services", "shadowsocksr", "server"},arcombine(cbi("shadowsocksr/server"), cbi("shadowsocksr/server-config")),_("SSR Server"), 60).leaf = true - end + entry({"admin", "services", "shadowsocksr", "server"},arcombine(cbi("shadowsocksr/server"), cbi("shadowsocksr/server-config")),_("SSR Server"), 60).leaf = true entry({"admin", "services", "shadowsocksr", "status"},form("shadowsocksr/status"),_("Status"), 70).leaf = true entry({"admin", "services", "shadowsocksr", "check"}, call("check_status")) entry({"admin", "services", "shadowsocksr", "refresh"}, call("refresh_data")) diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua index 27c261d13..7d984cc12 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua @@ -1,3 +1,22 @@ +local shadowsocksr = "shadowsocksr" +local uci = luci.model.uci.cursor() +local server_table = {} + +uci:foreach(shadowsocksr, "servers", function(s) + if s.alias then + server_table[s[".name"]] = "[%s]:%s" %{string.upper(s.type), s.alias} + elseif s.server and s.server_port then + server_table[s[".name"]] = "[%s]:%s:%s" %{string.upper(s.type), s.server, s.server_port} + end +end) + +local key_table = {} +for key,_ in pairs(server_table) do + table.insert(key_table,key) +end + +table.sort(key_table) + m = Map("shadowsocksr") -- [[ global ]]-- s = m:section(TypedSection, "global", translate("Server failsafe auto swith and custom update settings")) @@ -27,52 +46,36 @@ o:depends("enable_switch", "1") o.default = 3 o = s:option(Value, "chnroute_url", translate("Chnroute Update url")) +o:value("https://ispip.clang.cn/all_cn.txt", translate("https://ispip.clang.cn/all_cn.txt")) o.default = "https://ispip.clang.cn/all_cn.txt" +o = s:option(Value, "nfip_url", translate("nfip_url")) +o:value("https://raw.githubusercontent.com/QiuSimons/Netflix_IP/master/NF_only.txt", translate("https://raw.githubusercontent.com/QiuSimons/Netflix_IP/master/NF_only.txt")) +o.default = "https://raw.githubusercontent.com/QiuSimons/Netflix_IP/master/NF_only.txt" +o.description = translate("Customize Netflix IP Url") + o = s:option(Flag, "adblock", translate("Enable adblock")) o.rmempty = false -o = s:option(Value, "nfip_url", translate("nfip_url")) -o.default = "https://raw.githubusercontent.com/QiuSimons/Netflix_IP/master/NF_only.txt" -o.description = translate("Customize Netflix IP Url") - o = s:option(Value, "adblock_url", translate("adblock_url")) +o:value("https://gitee.com/privacy-protection-tools/anti-ad/raw/master/anti-ad-for-dnsmasq.conf", translate("https://gitee.com/privacy-protection-tools/anti-ad/raw/master/anti-ad-for-dnsmasq.conf")) o.default = "https://gitee.com/privacy-protection-tools/anti-ad/raw/master/anti-ad-for-dnsmasq.conf" o:depends("adblock", "1") o.description = translate("Support AdGuardHome and DNSMASQ format list") --- [[ SOCKS Proxy ]]-- -if nixio.fs.access("/usr/bin/microsocks") then -s = m:section(TypedSection, "socks5_proxy", translate("SOCKS5 Proxy Server Settings")) +-- [[ SOCKS5 Proxy ]]-- +s = m:section(TypedSection, "socks5_proxy", translate("Global SOCKS5 Proxy Server")) s.anonymous = true -o = s:option(Flag, "socks", translate("Enable SOCKS5 Proxy Server")) +o = s:option(ListValue, "server", translate("Server")) +o:value("nil", translate("Disable")) +for _,key in pairs(key_table) do o:value(key,server_table[key]) end +o.default = "nil" o.rmempty = false o = s:option(Value, "local_port", translate("Local Port")) o.datatype = "port" -o.default = 10800 -o.rmempty = true -o:depends("socks", "1") - -o = s:option(Flag, "auth_enable", translate("Enable Authentication")) +o.default = 1080 o.rmempty = false -o.default = "0" -o:depends("socks", "1") -o = s:option(Value, "username", translate("Username")) -o.default = "username" -o:depends("auth_enable", "1") - -o = s:option(Value, "password", translate("Password")) -o.password = true -o.default = "password" -o:depends("auth_enable", "1") - -o = s:option(Flag, "wan_enable", translate("Enable WAN Access")) -o.rmempty = true -o.default = "0" -o:depends("auth_enable", "1") - -end return m diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua index c1c29373d..c7d902156 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua @@ -60,6 +60,11 @@ o = s:option(Flag, "enable", translate("Enable")) o.default = 1 o.rmempty = false +o = s:option(ListValue, "type", translate("Server Type")) +o:value("ssr", translate("ShadowsocksR")) +o:value("socks5", translate("Socks5")) +o.default = "socks5" + o = s:option(Value, "server_port", translate("Server Port")) o.datatype = "port" o.default = 8388 @@ -69,6 +74,11 @@ o = s:option(Value, "timeout", translate("Connection Timeout")) o.datatype = "uinteger" o.default = 60 o.rmempty = false +o:depends("type", "ssr") + +o = s:option(Value, "username", translate("Username")) +o.rmempty = false +o:depends("type", "socks5") o = s:option(Value, "password", translate("Password")) o.password = true @@ -77,19 +87,24 @@ o.rmempty = false o = s:option(ListValue, "encrypt_method", translate("Encrypt Method")) for _, v in ipairs(encrypt_methods) do o:value(v) end o.rmempty = false +o:depends("type", "ssr") o = s:option(ListValue, "protocol", translate("Protocol")) for _, v in ipairs(protocol) do o:value(v) end o.rmempty = false +o:depends("type", "ssr") o = s:option(ListValue, "obfs", translate("Obfs")) for _, v in ipairs(obfs) do o:value(v) end o.rmempty = false +o:depends("type", "ssr") o = s:option(Value, "obfs_param", translate("Obfs param(optional)")) +o:depends("type", "ssr") o = s:option(Flag, "fast_open", translate("TCP Fast Open")) o.rmempty = false +o:depends("type", "ssr") return m diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server.lua index af00e96e5..ec273e0f3 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server.lua @@ -6,7 +6,7 @@ local shadowsocksr = "shadowsocksr" local uci = luci.model.uci.cursor() -m = Map(shadowsocksr, translate("ShadowSocksR Server")) +m = Map(shadowsocksr) local encrypt_methods = { "table", @@ -78,25 +78,35 @@ function o.cfgvalue(...) end o.rmempty = false +o = sec:option(DummyValue, "type", translate("Server Type")) +function o.cfgvalue(...) + return Value.cfgvalue(...) or "ssr" +end + o = sec:option(DummyValue, "server_port", translate("Server Port")) function o.cfgvalue(...) - return Value.cfgvalue(...) or "?" + return Value.cfgvalue(...) or "-" +end + +o = sec:option(DummyValue, "username", translate("Username")) +function o.cfgvalue(...) + return Value.cfgvalue(...) or "-" end o = sec:option(DummyValue, "encrypt_method", translate("Encrypt Method")) function o.cfgvalue(...) local v = Value.cfgvalue(...) - return v and v:upper() or "?" + return v and v:upper() or "-" end o = sec:option(DummyValue, "protocol", translate("Protocol")) function o.cfgvalue(...) - return Value.cfgvalue(...) or "?" + return Value.cfgvalue(...) or "-" end o = sec:option(DummyValue, "obfs", translate("Obfs")) function o.cfgvalue(...) - return Value.cfgvalue(...) or "?" + return Value.cfgvalue(...) or "-" end return m diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua index a2e33b57b..5b8d85482 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua @@ -67,7 +67,7 @@ if luci.sys.call("busybox ps -w | grep ssr-retcp | grep -v grep >/dev/null") == redir_run=1 end -if luci.sys.call("busybox ps -w | grep ssr-socks | grep -v grep >/dev/null") == 0 then +if luci.sys.call("busybox ps -w | grep ssr-local | grep -v grep >/dev/null") == 0 then sock5_run=1 end @@ -75,7 +75,7 @@ if luci.sys.call("pidof kcptun-client >/dev/null") == 0 then kcptun_run=1 end -if luci.sys.call("pidof ssr-server >/dev/null") == 0 then +if luci.sys.call("busybox ps -w | grep ssr-server | grep -v grep >/dev/null") == 0 then server_run=1 end @@ -117,27 +117,21 @@ s.value = translate("Not Running") end end -if uci:get_first(shadowsocksr, 'socks5_proxy', 'socks', '0') == '1' then -if nixio.fs.access("/usr/bin/microsocks") then -s=m:field(DummyValue,"sock5_run",translate("SOCKS5 Proxy Server")) +s=m:field(DummyValue,"sock5_run",translate("Global SOCKS5 Proxy Server")) s.rawhtml = true if sock5_run == 1 then s.value =font_blue .. bold_on .. translate("Running") .. bold_off .. font_off else s.value = translate("Not Running") end -end -end -if nixio.fs.access("/usr/bin/ssr-server") then -s=m:field(DummyValue,"server_run",translate("Global SSR Server")) +s=m:field(DummyValue,"server_run",translate("Local Servers")) s.rawhtml = true if server_run == 1 then s.value =font_blue .. bold_on .. translate("Running") .. bold_off .. font_off else s.value = translate("Not Running") end -end if nixio.fs.access("/usr/bin/kcptun-client") then s=m:field(DummyValue,"kcp_version",translate("KcpTun Version")) diff --git a/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po b/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po index 7cd640e9b..80b6b97c5 100644 --- a/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po +++ b/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po @@ -656,7 +656,16 @@ msgid "Netflix IP List" msgstr "Netflix 分流IP列表" msgid "External Proxy Mode" -msgstr "分流服务器套娃模式" +msgstr "分流服务器(前置)代理" msgid "Forward Netflix Proxy through Main Proxy" -msgstr "分流服务器流量通过主服务节点(前置)中转代理转发" +msgstr "分流服务器流量通过主服务节点中转代理转发" + +msgid "Server Type" +msgstr "服务端类型" + +msgid "Local Servers" +msgstr "本机服务端" + +msgid "Global SOCKS5 Proxy Server" +msgstr "SOCKS5 代理服务端(全局)" 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 ae838ac9b..506d4257a 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 @@ -533,8 +533,12 @@ start_service() { iptables -t filter -I INPUT -j SSR-SERVER-RULE fi fi - gen_service_file $1 /var/etc/${NAME}_$server_count.json - /usr/bin/ssr-server -c /var/etc/${NAME}_$server_count.json -u -f /var/run/ssr-server$server_count.pid >/dev/null 2>&1 + if [ "$(uci_get_by_name $1 type ssr)" == "ssr" ]; then + gen_service_file $1 /var/etc/${NAME}_$server_count.json + /usr/bin/ssr-server -c /var/etc/${NAME}_$server_count.json -u -f /var/run/ssr-server$server_count.pid >/dev/null 2>&1 + else + microsocks -i :: -p $(uci_get_by_name $1 server_port) -1 -u $(uci_get_by_name $1 username) -P $(uci_get_by_name $1 password) ssr-server$server_count >/dev/null 2>&1 & + fi iptables -t filter -A SSR-SERVER-RULE -p tcp --dport $(uci_get_by_name $1 server_port) -j ACCEPT iptables -t filter -A SSR-SERVER-RULE -p udp --dport $(uci_get_by_name $1 server_port) -j ACCEPT return 0 @@ -706,7 +710,7 @@ stop() { killall -q -9 v2ray killall -q -9 trojan killall -q -9 ipt2socks - killall -q -9 ssr-server + kill -9 $(busybox ps -w | grep ssr-server | grep -v grep | awk '{print $1}') >/dev/null 2>&1 killall -q -9 ssr-local killall -q -9 ss-local killall -q -9 kcptun-client diff --git a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor index d4b581293..889f1d119 100755 --- a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor +++ b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor @@ -80,10 +80,8 @@ while [ "1" == "1" ]; do #死循环 icount=$(busybox ps -w | grep ssr-server | grep -v grep | wc -l) if [ "$icount" -lt "$server_process_count" ]; then #如果进程挂掉就重启它 logger -t "$NAME" "ssr server error.restart!" - killall -q -9 ssr-server - for i in $(seq $server_process_count); do - /usr/bin/ssr-server -c /var/etc/shadowsocksr_$i.json -u -f /var/run/ssr-server$i.pid - done + kill -9 $(busybox ps -w | grep ssr-server | grep -v grep | awk '{print $1}') >/dev/null 2>&1 + /etc/init.d/shadowsocksr restart fi fi #kcptun @@ -97,16 +95,11 @@ while [ "1" == "1" ]; do #死循环 fi #localsocks if [ "$local_process" -gt 0 ]; then - icount=$(busybox ps -w | grep ssr-socks | grep -v grep | wc -l) + icount=$(busybox ps -w | grep ssr-local | grep -v grep | wc -l) if [ "$icount" -lt "$local_process" ]; then #如果进程挂掉就重启它 - logger -t "$NAME" "microsocks error.restart!" - kill -9 $(busybox ps -w | grep ssr-socks | grep -v grep | awk '{print $1}') >/dev/null 2>&1 - auth_enable=$(uci_get_by_type socks5_proxy auth_enable 0) - if [ "$auth_enable" == "1" ]; then - microsocks -i 0.0.0.0 -p $(uci_get_by_type socks5_proxy local_port 1080) -1 -u $(uci_get_by_type socks5_proxy username) -P $(uci_get_by_type socks5_proxy password) ssr-socks >/dev/null 2>&1 & - else - microsocks -i 0.0.0.0 -p $(uci_get_by_type socks5_proxy local_port 1080) ssr-socks >/dev/null 2>&1 & - fi + logger -t "$NAME" "global socks server error.restart!" + kill -9 $(busybox ps -w | grep ssr-local | grep -v grep | awk '{print $1}') >/dev/null 2>&1 + /etc/init.d/shadowsocksr restart fi fi #pdnsd