luci-app-ssr-plus: add sock5 server username/password auth method

This commit is contained in:
LEAN-ESX 2020-03-03 04:19:59 -08:00
parent 0f352ab567
commit 852bc51e93
8 changed files with 93 additions and 46 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -14,7 +14,7 @@ local dsp = require "luci.dispatcher"
const dom = doms[index];
const port = ports[index];
if (!dom) res()
port.innerHTML = '<font color="#0072c3">connecting...</font>';
port.innerHTML = '<font color="#0072c3">connect</font>';
XHR.get('<%=dsp.build_url("admin/services/shadowsocksr/ping")%>', {
index,

View File

@ -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 代理服务端"

View File

@ -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

View File

@ -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

View File

@ -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))