From 852bc51e9365cf1f2506a513f06a2639f246a99c Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Tue, 3 Mar 2020 04:19:59 -0800 Subject: [PATCH] luci-app-ssr-plus: add sock5 server username/password auth method --- package/lean/luci-app-ssr-plus/Makefile | 13 ++----- .../model/cbi/shadowsocksr/advanced.lua | 38 +++++++++---------- .../luasrc/model/cbi/shadowsocksr/status.lua | 6 +-- .../luasrc/view/shadowsocksr/server_list.htm | 2 +- .../luci-app-ssr-plus/po/zh-cn/ssr-plus.po | 14 ++++++- .../root/etc/init.d/shadowsocksr | 11 ++++-- .../root/usr/bin/ssr-monitor | 17 +++++---- package/lean/microsocks/Makefile | 38 +++++++++++++++++++ 8 files changed, 93 insertions(+), 46 deletions(-) create mode 100644 package/lean/microsocks/Makefile diff --git a/package/lean/luci-app-ssr-plus/Makefile b/package/lean/luci-app-ssr-plus/Makefile index c19a75dd5..3c26b58db 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:=157 -PKG_RELEASE:=2 +PKG_VERSION:=158 +PKG_RELEASE:=1 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) @@ -36,10 +36,6 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server bool "Include ShadowsocksR Server" default y if x86_64 - -config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Socks - bool "Include Socks Sever" - default y if x86_64 endef define Package/$(PKG_NAME) @@ -48,15 +44,14 @@ define Package/$(PKG_NAME) SUBMENU:=3. Applications TITLE:=SS/SSR/V2Ray/Trojan LuCI interface PKGARCH:=all - DEPENDS:=+shadowsocksr-libev-alt +ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +coreutils +coreutils-base64 +pdnsd-alt +wget +lua +ipt2socks \ + DEPENDS:=+shadowsocksr-libev-alt +ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +coreutils +coreutils-base64 +pdnsd-alt +wget +lua +ipt2socks +microsocks \ +PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks:shadowsocks-libev-ss-redir \ +PACKAGE_$(PKG_NAME)_INCLUDE_Simple_obfs:simple-obfs \ +PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_plugin:v2ray-plugin \ +PACKAGE_$(PKG_NAME)_INCLUDE_V2ray:v2ray \ +PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:trojan \ +PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun:kcptun-client \ - +PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server:shadowsocksr-libev-server \ - +PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Socks:srelay + +PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server:shadowsocksr-libev-server endef define Build/Prepare 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 7e1070cb1..3c550e084 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,22 +1,5 @@ -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) +m = Map("shadowsocksr") -- [[ global ]]-- s = m:section(TypedSection, "global", translate("Server failsafe auto swith settings")) s.anonymous = true @@ -65,11 +48,11 @@ o = s:option(Value, "chnroute_url", translate("Update url")) o.default = "https://cdn.jsdelivr.net/gh/17mon/china_ip_list/china_ip_list.txt" -- [[ SOCKS Proxy ]]-- -if nixio.fs.access("/usr/bin/srelay") then -s = m:section(TypedSection, "socks5_proxy", translate("SOCKS Proxy")) +if nixio.fs.access("/usr/bin/microsocks") then +s = m:section(TypedSection, "socks5_proxy", translate("SOCKS5 Proxy Server Settings")) s.anonymous = true -o = s:option(Flag, "socks", translate("Enable SOCKS Proxy")) +o = s:option(Flag, "socks", translate("Enable SOCKS5 Proxy Server")) o.rmempty = false o = s:option(Value, "local_port", translate("Local Port")) @@ -77,5 +60,18 @@ o.datatype = "port" o.default = 1080 o.rmempty = false +o = s:option(Flag, "auth_enable", translate("Enable Authentication")) +o.rmempty = false +o.default = "0" + +o = s:option(Value, "username", translate("Username")) +o.rmempty = false +o:depends("auth_enable", "1") + +o = s:option(Value, "password", translate("Password")) +o.password = true +o.rmempty = false +o:depends("auth_enable", "1") + 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 614a362bf..bb10379f3 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 @@ -65,7 +65,7 @@ if luci.sys.call("busybox ps -w | grep ssr-retcp | grep -v grep >/dev/null") == redir_run=1 end -if luci.sys.call("pidof srelay >/dev/null") == 0 then +if luci.sys.call("pidof microsocks >/dev/null") == 0 then sock5_run=1 end @@ -113,8 +113,8 @@ else s.value = translate("Not Running") end -if nixio.fs.access("/usr/bin/srelay") then -s=m:field(DummyValue,"sock5_run",translate("SOCKS Proxy")) +if nixio.fs.access("/usr/bin/microsocks") then +s=m:field(DummyValue,"sock5_run",translate("SOCKS5 Proxy Server")) s.rawhtml = true if sock5_run == 1 then s.value =font_blue .. bold_on .. translate("Running") .. bold_off .. font_off diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm index be523e600..ca9b70db8 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm @@ -14,7 +14,7 @@ local dsp = require "luci.dispatcher" const dom = doms[index]; const port = ports[index]; if (!dom) res() - port.innerHTML = 'connecting...'; + port.innerHTML = 'connect'; XHR.get('<%=dsp.build_url("admin/services/shadowsocksr/ping")%>', { index, 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 da1bbec08..c590f7fdb 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 @@ -422,7 +422,7 @@ msgid "Auto Update Server subscription, GFW list and CHN route" msgstr "自动更新服务器订阅、GFW列表和 CHN路由表" msgid "Subscribe URL" -msgstr "SS/SSR/V2RAY/Trojan订阅URL地址" +msgstr "SS/SSR/V2/TROJAN订阅URL" msgid "Update" msgstr "更新" @@ -603,3 +603,15 @@ msgstr "订阅新节点自动切换设置" msgid "Subscribe new add server default Auto-Switch on" msgstr "订阅加入的新节点默认开启自动切换" + +msgid "SOCKS5 Proxy Server Settings" +msgstr "SOCKS5 代理服务端设置" + +msgid "Enable SOCKS5 Proxy Server" +msgstr "启用 SOCKS5 代理服务" + +msgid "Enable Authentication" +msgstr "启用 用户名/密码 认证" + +msgid "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 4a247925e..aea402a42 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 @@ -452,10 +452,12 @@ start_server() { start_local() { local local_server=$(uci_get_by_type socks5_proxy socks 0) [ "$local_server" == "0" ] && return 0 - mkdir -p /var/run /var/etc - echo '0.0.0.0 any' >/var/etc/srelay.conf - /usr/bin/srelay -q -c /var/etc/srelay.conf \ - -i:$(uci_get_by_type socks5_proxy local_port 1080) >/dev/null 2>&1 + local 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) >/dev/null 2>&1 & + else + microsocks -i 0.0.0.0 -p $(uci_get_by_type socks5_proxy local_port 1080) >/dev/null 2>&1 & + fi local_enable=1 } @@ -538,6 +540,7 @@ stop() { killall -q -9 ssr-server killall -q -9 kcptun-client killall -q -9 srelay + killall -q -9 microsocks if [ -f /var/run/pdnsd.pid ]; then kill $(cat /var/run/pdnsd.pid) >/dev/null 2>&1 else 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 678846d79..a6d581aa6 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 @@ -40,8 +40,6 @@ password=$(uci_get_by_name $GLOBAL_SERVER kcp_password) kcp_param=$(uci_get_by_name $GLOBAL_SERVER kcp_param) [ "$password" != "" ] && password="--key "${password} -sock5_port=$(uci_get_by_type socks5_proxy local_port 1080) - if echo "$server" | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then server=${server} else @@ -97,13 +95,18 @@ while [ "1" == "1" ]; do #死循环 (/usr/bin/kcptun-client -r $server:$kcp_port -l :$server_port $password $kcp_param &) fi fi - #srelay + #microsocks if [ "$local_process" -gt 0 ]; then - icount=$(busybox ps -w | grep srelay | grep -v grep | wc -l) + icount=$(busybox ps -w | grep microsocks | grep -v grep | wc -l) if [ "$icount" -lt "$local_process" ]; then #如果进程挂掉就重启它 - logger -t "$NAME" "srelay error.restart!" - killall -q -9 srelay - (/usr/bin/srelay -q -c /etc/srelay.conf -i:$sock5_port -p /var/run/srelay.pid >/dev/null 2>&1) + logger -t "$NAME" "microsocks error.restart!" + killall -q -9 microsocks + local 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) >/dev/null 2>&1 & + else + microsocks -i 0.0.0.0 -p $(uci_get_by_type socks5_proxy local_port 1080) >/dev/null 2>&1 & + fi fi fi #pdnsd diff --git a/package/lean/microsocks/Makefile b/package/lean/microsocks/Makefile new file mode 100644 index 000000000..3153b7922 --- /dev/null +++ b/package/lean/microsocks/Makefile @@ -0,0 +1,38 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=microsocks +PKG_VERSION=1.0 +PKG_RELEASE:=1 + +PKG_MAINTAINER:=lean +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/rofl0r/microsocks.git +PKG_SOURCE_VERSION:=be545814aeca1158ae38e2d6c66b1197679dab63 + +PKG_SOURCE_SUBDIR:=$(PKG_NAME) +PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).$(PKG_RELEASE).tar.gz +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) +PKG_BUILD_PARALLEL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/microsocks + SECTION:=net + CATEGORY:=Network + TITLE:=microsocks for OpenWRT + DEPENDS:= +endef + +define Package/microsocks/description + microsocks is a Tiny Proxy in C. +endef + +define Package/microsocks/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/microsocks $(1)/usr/bin/microsocks +endef + +$(eval $(call BuildPackage,microsocks))