diff --git a/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/controller/shadowsocksr.lua b/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/controller/shadowsocksr.lua
index 4251627f1e..75a64157d8 100644
--- a/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/controller/shadowsocksr.lua
+++ b/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/controller/shadowsocksr.lua
@@ -28,7 +28,7 @@ entry({"admin", "vpn", "shadowsocksr", "appointlist"},form("shadowsocksr/appoint
entry({"admin", "vpn", "shadowsocksr", "server"},arcombine(cbi("shadowsocksr/server"), cbi("shadowsocksr/server-config")),_("SSR Server"),22).leaf = true
end
entry({"admin", "vpn", "shadowsocksr", "status"},form("shadowsocksr/status"),_("Status"), 23).leaf = true
- entry({"admin", "vpn", "shadowsocksr", "logview"}, cbi("vssr/logview", {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), _("Log") ,30).leaf=true
+ entry({"admin", "vpn", "shadowsocksr", "logview"}, cbi("shadowsocksr/logview", {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), _("Log") ,30).leaf=true
entry({"admin", "vpn", "shadowsocksr", "fileread"}, call("act_read"), nil).leaf=true
entry({"admin", "vpn", "shadowsocksr", "refresh"}, call("refresh_data"))
entry({"admin", "vpn", "shadowsocksr", "checkport"}, call("check_port"))
diff --git a/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/model/cbi/shadowsocksr/client-config.lua b/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/model/cbi/shadowsocksr/client-config.lua
index 45fd08c0ed..6cd22090b2 100644
--- a/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/model/cbi/shadowsocksr/client-config.lua
+++ b/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/model/cbi/shadowsocksr/client-config.lua
@@ -134,6 +134,9 @@ o:value("ssr", translate("ShadowsocksR"))
if nixio.fs.access("/usr/bin/ss-redir") then
o:value("ss", translate("Shadowsocks"))
end
+if nixio.fs.access("/usr/bin/ipt2socks") then
+o:value("socks5", translate("Socks5"))
+end
o.description = translate("Using incorrect encryption mothod may causes service fail to start")
upload_conf = s:option(FileUpload, "")
@@ -155,18 +158,27 @@ o.rmempty = false
-- o.default = 60
-- o.rmempty = false
+
o = s:option(Value, "weight", translate("Weight"))
o.datatype = "uinteger"
o.default = 10
o.rmempty = false
+o = s:option(Flag, "auth_enable", translate("Enable Authentication"))
+o.rmempty = false
+o.default = "0"
+o:depends("type", "socks5")
+
+o = s:option(Value, "username", translate("Username"))
+o.rmempty = true
+o:depends("type", "socks5")
o = s:option(Value, "password", translate("Password"))
o.password = true
o.rmempty = true
o:depends("type", "ssr")
o:depends("type", "ss")
o:depends("type", "trojan")
-
+o:depends("type", "socks5")
o = s:option(ListValue, "encrypt_method", translate("Encrypt Method"))
diff --git a/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/model/cbi/shadowsocksr/subscription.lua b/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/model/cbi/shadowsocksr/subscription.lua
index 0053719f53..e790723629 100644
--- a/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/model/cbi/shadowsocksr/subscription.lua
+++ b/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/model/cbi/shadowsocksr/subscription.lua
@@ -58,12 +58,6 @@ o = s:option(DummyValue, "", "")
o.rawhtml = true
o.template = "shadowsocksr/update_subscribe"
-o = s:option(Button,"update",translate("Update All Subscribe Severs"),translate("No special needs, please click here to subscribe to update"))
-o.inputstyle = "reload"
-o.write = function()
- luci.sys.call("bash /usr/share/shadowsocksr/subscribe.sh >>/tmp/vssr.log 2>&1")
- luci.http.redirect(luci.dispatcher.build_url("admin", "vpn", "shadowsocksr", "servers"))
-end
o = s:option(Button,"delete",translate("Delete All Subscribe Severs"))
@@ -87,8 +81,3 @@ end
return m
-
-
-
-
-
diff --git a/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/view/shadowsocksr/update_subscribe.htm b/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/view/shadowsocksr/update_subscribe.htm
index 8bcbfd3f9c..5844465e21 100644
--- a/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/view/shadowsocksr/update_subscribe.htm
+++ b/package/ctcgfw/luci-app-ssr-plus-Jo/luasrc/view/shadowsocksr/update_subscribe.htm
@@ -1,109 +1,123 @@
<%+cbi/valueheader%>
-
-
+
+
">
-
+ size="0" value="<%= translate("Save And Start Subscribe") %>">
<%+cbi/valuefooter%>
\ No newline at end of file
diff --git a/package/ctcgfw/luci-app-ssr-plus-Jo/po/zh_Hans/ssr-plus.po b/package/ctcgfw/luci-app-ssr-plus-Jo/po/zh_Hans/ssr-plus.po
index 13d0c95c5c..89bcf435c5 100644
--- a/package/ctcgfw/luci-app-ssr-plus-Jo/po/zh_Hans/ssr-plus.po
+++ b/package/ctcgfw/luci-app-ssr-plus-Jo/po/zh_Hans/ssr-plus.po
@@ -11,6 +11,8 @@ msgstr "停用"
msgid "Enable Servers"
msgstr "开启服务"
+msgid "Enable Authentication"
+msgstr "启用 用户名/密码 认证"
msgid "Open v2ray split-flow"
msgstr "开启V2ray分流"
diff --git a/package/ctcgfw/luci-app-ssr-plus-Jo/root/etc/init.d/shadowsocksr b/package/ctcgfw/luci-app-ssr-plus-Jo/root/etc/init.d/shadowsocksr
index 884d47cc89..8e0d2df8c3 100755
--- a/package/ctcgfw/luci-app-ssr-plus-Jo/root/etc/init.d/shadowsocksr
+++ b/package/ctcgfw/luci-app-ssr-plus-Jo/root/etc/init.d/shadowsocksr
@@ -217,7 +217,7 @@ start_rules() {
local local_port=$(uci_get_by_name $GLOBAL_SERVER local_port)
local lan_ac_ips=$(uci_get_by_type access_control lan_ac_ips)
- local lan_ac_mode=$(uci_get_by_type access_control lan_ac_mode)
+ local lan_ac_mode="b"
local router_proxy=$(uci_get_by_type access_control router_proxy)
if [ "$GLOBAL_SERVER" = "$UDP_RELAY_SERVER" -a $kcp_flag = 0 ]; then
ARG_UDP="-u"
@@ -263,7 +263,6 @@ start_rules() {
-i "$(uci_get_by_type access_control wan_bp_list)" \
-b "$(uci_get_by_type access_control wan_bp_ips)" \
-w "$(uci_get_by_type access_control wan_fw_ips)" \
- -B "$(uci_get_by_type access_control lan_bp_ips)" \
-p "$(uci_get_by_type access_control lan_fp_ips)" \
-G "$(uci_get_by_type access_control lan_gm_ips)" \
-D "$proxyport" \
@@ -648,6 +647,8 @@ start_redir() {
sscmd="/usr/sbin/trojan"
elif [ "$stype" == "v2ray" ] ;then
sscmd="/usr/bin/v2ray/v2ray"
+ elif [ "$stype" == "socks5" ]; then
+ sscmd="/usr/bin/ipt2socks"
fi
local utype=$(uci_get_by_name $UDP_RELAY_SERVER type)
@@ -659,6 +660,8 @@ start_redir() {
ucmd="/usr/sbin/trojan"
elif [ "$utype" == "v2ray" ] ;then
ucmd="/usr/bin/v2ray/v2ray"
+ elif [ "$stype" == "socks5" ]; then
+ ucmd="/usr/bin/ipt2socks"
fi
if [ "$(uci_get_by_type global threads 0)" = "0" ] ;then
@@ -683,10 +686,20 @@ start_redir() {
echo "$(date "+%Y-%m-%d %H:%M:%S") $($sscmd --version 2>&1 | head -1) $threads Threads Started!" >> /tmp/ssrplus.log
elif [ "$stype" == "v2ray" ] ;then
- for i in $(seq 1 $threads); do
+ for i in $(seq 1 $threads); do
$sscmd -config /var/etc/v2-ssr-retcp.json >/dev/null 2>&1 &
- done
+ done
echo "$(date "+%Y-%m-%d %H:%M:%S") $($sscmd -version | head -1) $threads Threads Started!" >> /tmp/ssrplus.log
+ elif [ "$stype" == "socks5" ]; then
+ for i in $(seq 1 $threads); do
+ if [ "$(uci_get_by_name $GLOBAL_SERVER auth_enable 0)" == "0" ]; then
+ $sscmd -T -4 -b 0.0.0.0 -s $(uci_get_by_name $GLOBAL_SERVER server) -p $(uci_get_by_name $GLOBAL_SERVER server_port) -l $(uci_get_by_name $GLOBAL_SERVER local_port) -R ssr-retcp >/dev/null 2>&1 &
+ else
+ $sscmd -T -4 -b 0.0.0.0 -s $(uci_get_by_name $GLOBAL_SERVER server) -p $(uci_get_by_name $GLOBAL_SERVER server_port) -a $(uci_get_by_name $GLOBAL_SERVER username) \
+ -k $(uci_get_by_name $GLOBAL_SERVER password) -l $(uci_get_by_name $GLOBAL_SERVER local_port) -R ssr-retcp >/dev/null 2>&1 &
+ fi
+ done
+ echo "$(date "+%Y-%m-%d %H:%M:%S") Socks5 REDIRECT/TPROXY, $threads 线程 已启动!" >>/tmp/ssrplus.log
fi
@@ -710,6 +723,14 @@ start_redir() {
lua /usr/share/shadowsocksr/genv2config.lua $UDP_RELAY_SERVER udp $(uci_get_by_name $UDP_RELAY_SERVER local_port) > /var/etc/v2-ssr-reudp.json
sed -i 's/\\//g' /var/etc/v2-ssr-reudp.json
$ucmd -config /var/etc/v2-ssr-reudp.json >/dev/null 2>&1 &
+ elif [ "$utype" == "socks5" ]; then
+ if [ "$(uci_get_by_name $GLOBAL_SERVER auth_enable 0)" == "0" ]; then
+ $ucmd -4 -b 0.0.0.0 -s $(uci_get_by_name $UDP_RELAY_SERVER server) -p $(uci_get_by_name $UDP_RELAY_SERVER server_port) -l $(uci_get_by_name $UDP_RELAY_SERVER local_port) -U ssr-reudp >/dev/null 2>&1 &
+ else
+ $ucmd -4 -b 0.0.0.0 -s $(uci_get_by_name $UDP_RELAY_SERVER server) -p $(uci_get_by_name $UDP_RELAY_SERVER server_port) -a $(uci_get_by_name $GLOBAL_SERVER username) \
+ -k $(uci_get_by_name $GLOBAL_SERVER password) -l $(uci_get_by_name $UDP_RELAY_SERVER local_port) -U ssr-reudp >/dev/null 2>&1 &
+
+ fi
fi
fi
@@ -1103,6 +1124,7 @@ stop() {
killall -q -9 gq-client
killall -q -9 gq-server
killall -q -9 obfs-local
+ killall -q -9 ipt2socks
killall -q -9 obfs-server
killall -q -9 chinadns
killall -q -9 udp2raw
@@ -1138,3 +1160,4 @@ stop() {
del_cron
}
+
diff --git a/package/ctcgfw/luci-app-ssr-plus-Jo/root/usr/bin/ssr-rules b/package/ctcgfw/luci-app-ssr-plus-Jo/root/usr/bin/ssr-rules
index 694101aa51..1764424553 100755
--- a/package/ctcgfw/luci-app-ssr-plus-Jo/root/usr/bin/ssr-rules
+++ b/package/ctcgfw/luci-app-ssr-plus-Jo/root/usr/bin/ssr-rules
@@ -26,7 +26,6 @@ usage() {
define access control mode
-b wan ip of will be bypassed
-w wan ip of will be forwarded
- -B lan ip of will be bypassed proxy
-p lan ip of will be global proxy
-G lan ip of will be game mode proxy
-D proxy ports
@@ -89,7 +88,7 @@ ipset_r() {
EOF
ipset -N gfwlist hash:net 2>/dev/null
$IPT -N SS_SPEC_WAN_AC
- $IPT -I SS_SPEC_WAN_AC -p tcp ! --dport 53 -d $server -j RETURN
+ $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN
$IPT -A SS_SPEC_WAN_AC -m set --match-set ss_spec_wan_ac dst -j RETURN
$IPT -A SS_SPEC_WAN_AC -j SS_SPEC_WAN_FW
@@ -100,7 +99,7 @@ EOF
$IPT -A SS_SPEC_WAN_AC -m set --match-set china dst -j RETURN
$IPT -A SS_SPEC_WAN_AC -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW
$IPT -A SS_SPEC_WAN_AC -m set --match-set gmlan src -m set ! --match-set china dst -j SS_SPEC_WAN_FW
- $IPT -I SS_SPEC_WAN_AC -p tcp ! --dport 53 -d $server -j RETURN
+ $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN
elif [ "$RUNMODE" = "oversea" ] ;then
ipset -N oversea hash:net 2>/dev/null
@@ -111,7 +110,7 @@ EOF
for ip in $LAN_GM_IP; do ipset -! add gmlan $ip ; done
$IPT -A SS_SPEC_WAN_AC -m set --match-set gmlan src -m set --match-set china dst -j SS_SPEC_WAN_FW
- $IPT -I SS_SPEC_WAN_AC -p tcp ! --dport 53 -d $server -j RETURN
+ $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN
elif [ "$RUNMODE" = "routers" ] ;then
ipset -! -R <<-EOF || return 1
@@ -128,16 +127,14 @@ EOF
elif [ "$RUNMODE" = "all" ] ;then
$IPT -N SS_SPEC_WAN_AC
$IPT -A SS_SPEC_WAN_AC -j SS_SPEC_WAN_FW
- $IPT -I SS_SPEC_WAN_AC -p tcp ! --dport 53 -d $server -j RETURN
+ $IPT -I SS_SPEC_WAN_AC -d $server -j RETURN
fi
ipset -N fplan hash:net 2>/dev/null
for ip in $LAN_FP_IP; do ipset -! add fplan $ip ; done
$IPT -I SS_SPEC_WAN_AC -m set --match-set fplan src -j SS_SPEC_WAN_FW
- ipset -N bplan hash:net 2>/dev/null
- for ip in $LAN_BP_IP; do ipset -! add bplan $ip; done
- $IPT -I SS_SPEC_WAN_AC -m set --match-set bplan src -j RETURN
+
ipset -N whitelist hash:net 2>/dev/null
ipset -N blacklist hash:net 2>/dev/null
$IPT -I SS_SPEC_WAN_AC -m set --match-set blacklist src -j SS_SPEC_WAN_FW
@@ -160,7 +157,6 @@ fw_rule() {
$IPT -A SS_SPEC_WAN_FW -d 224.0.0.0/4 -j RETURN
$IPT -A SS_SPEC_WAN_FW -d 240.0.0.0/4 -j RETURN
$IPT -A SS_SPEC_WAN_FW -p tcp $PROXY_PORTS \
- $IPT -A SS_SPEC_WAN_FW -p tcp $PROXY_PORTS \
-j REDIRECT --to-ports $local_port 2>/dev/null || {
loger 3 "Can't redirect, please check the iptables."
exit 1
@@ -221,8 +217,8 @@ tp_rule() {
$ipt -A SS_SPEC_TPROXY -p udp -d 192.168.0.0/16 -j RETURN
$ipt -A SS_SPEC_TPROXY -p udp -d 224.0.0.0/4 -j RETURN
$ipt -A SS_SPEC_TPROXY -p udp -d 240.0.0.0/4 -j RETURN
- $ipt -A SS_SPEC_TPROXY -p udp ! --dport 53 -d $server -j RETURN
- $ipt -A SS_SPEC_TPROXY -p udp -m set --match-set bplan src -j RETURN
+ $ipt -A SS_SPEC_TPROXY -p udp -d $SERVER -j RETURN
+
$ipt -A SS_SPEC_TPROXY -p udp $PROXY_PORTS -m set --match-set fplan src \
-j TPROXY --on-port "$LOCAL_PORT" --tproxy-mark 0x01/0x01
@@ -330,7 +326,7 @@ EOF
return 0
}
-while getopts ":s:l:S:L:i:e:a:B:b:w:p:G:D:k:oOuUfgrRczh" arg; do
+while getopts ":s:l:S:L:i:e:a:b:w:p:G:D:k:oOuUfgrRczh" arg; do
case "$arg" in
s)
server=$OPTARG
@@ -353,11 +349,6 @@ while getopts ":s:l:S:L:i:e:a:B:b:w:p:G:D:k:oOuUfgrRczh" arg; do
a)
LAN_AC_IP=$OPTARG
;;
-
- B)
- LAN_BP_IP=$OPTARG
- ;;
-
b)
WAN_BP_IP=$(for ip in $OPTARG; do echo $ip; done)
;;