diff --git a/package/lienol/luci-app-passwall/Makefile b/package/lienol/luci-app-passwall/Makefile
index 98b66bf641..1ea690e96f 100644
--- a/package/lienol/luci-app-passwall/Makefile
+++ b/package/lienol/luci-app-passwall/Makefile
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall
PKG_VERSION:=3.3
-PKG_RELEASE:=33-20200122
+PKG_RELEASE:=36-20200124
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -66,7 +66,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_pdnsd
config PACKAGE_$(PKG_NAME)_INCLUDE_dns2socks
bool "Include dns2socks"
- default n
+ default y
endmenu
endef
@@ -85,6 +85,7 @@ define Package/$(PKG_NAME)
+PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_socks:shadowsocksr-libev-ssr-local \
+PACKAGE_$(PKG_NAME)_INCLUDE_V2ray:v2ray \
+PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:trojan \
+ +PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:ipt2socks \
+PACKAGE_$(PKG_NAME)_INCLUDE_Brook:brook \
+PACKAGE_$(PKG_NAME)_INCLUDE_kcptun:kcptun-client \
+PACKAGE_$(PKG_NAME)_INCLUDE_haproxy:haproxy \
diff --git a/package/lienol/luci-app-passwall/luasrc/controller/passwall.lua b/package/lienol/luci-app-passwall/luasrc/controller/passwall.lua
index b797a3208b..997dbfdf18 100644
--- a/package/lienol/luci-app-passwall/luasrc/controller/passwall.lua
+++ b/package/lienol/luci-app-passwall/luasrc/controller/passwall.lua
@@ -225,8 +225,7 @@ function check_port()
local uci = luci.model.uci.cursor()
local retstring = "
"
- retstring = retstring ..
- "暂时不支持UDP检测
"
+ -- retstring = retstring .. "暂时不支持UDP检测
"
if luci.sys.exec("echo -n `uci -q get %s.@global_other[0].use_tcping`" %
appname) == "1" and
@@ -239,23 +238,24 @@ function check_port()
if (s.use_kcp and s.use_kcp == "1" and s.kcp_port) or
(s.v2ray_transport and s.v2ray_transport == "mkcp" and s.port) then
else
- if s.type and s.address and s.port and s.remarks then
+ local type = s.type
+ if type and type ~= "V2ray_balancing" and s.address and s.port and
+ s.remarks then
node_name = "[%s] [%s:%s]" % {s.remarks, s.address, s.port}
+ result = luci.sys.exec(
+ "echo -n `tcping -q -c 1 -i 1 -p " .. s.port ..
+ " " .. s.address ..
+ " 2>&1 | grep -o 'time=[0-9]*' | awk -F '=' '{print$2}'`")
+ if result and result ~= "" then
+ retstring = retstring .. "" ..
+ node_name .. " " .. result ..
+ "ms.
"
+ else
+ retstring = retstring .. "" ..
+ node_name .. " Error.
"
+ end
+ ret = ""
end
-
- result = luci.sys.exec("echo -n `tcping -q -c 1 -i 3 -p " ..
- s.port .. " " .. s.address ..
- " 2>&1 | grep -o 'time=[0-9]*' | awk -F '=' '{print$2}'`")
- if result and result ~= "" then
- retstring =
- retstring .. "" .. node_name ..
- " " .. result .. "ms.
"
- else
- retstring =
- retstring .. "" .. node_name ..
- " Error.
"
- end
- ret = ""
end
end)
else
@@ -268,24 +268,24 @@ function check_port()
if (s.use_kcp and s.use_kcp == "1" and s.kcp_port) or
(s.v2ray_transport and s.v2ray_transport == "mkcp" and s.port) then
else
- if s.type and s.address and s.port and s.remarks then
+ local type = s.type
+ if type and type ~= "V2ray_balancing" and s.address and s.port and
+ s.remarks then
node_name = "%s:[%s] %s:%s" %
{s.type, s.remarks, s.address, s.port}
+ tcp_socket = nixio.socket("inet", "stream")
+ tcp_socket:setopt("socket", "rcvtimeo", 3)
+ tcp_socket:setopt("socket", "sndtimeo", 3)
+ ret = tcp_socket:connect(s.address, s.port)
+ if tostring(ret) == "true" then
+ retstring = retstring .. "" ..
+ node_name .. " OK.
"
+ else
+ retstring = retstring .. "" ..
+ node_name .. " Error.
"
+ end
+ ret = ""
end
- tcp_socket = nixio.socket("inet", "stream")
- tcp_socket:setopt("socket", "rcvtimeo", 3)
- tcp_socket:setopt("socket", "sndtimeo", 3)
- ret = tcp_socket:connect(s.address, s.port)
- if tostring(ret) == "true" then
- retstring =
- retstring .. "" .. node_name ..
- " OK.
"
- else
- retstring =
- retstring .. "" .. node_name ..
- " Error.
"
- end
- ret = ""
end
if tcp_socket then tcp_socket:close() end
if udp_socket then udp_socket:close() end
diff --git a/package/lienol/luci-app-passwall/root/etc/config/passwall b/package/lienol/luci-app-passwall/root/etc/config/passwall
index e75dfce1c5..d98b76991a 100644
--- a/package/lienol/luci-app-passwall/root/etc/config/passwall
+++ b/package/lienol/luci-app-passwall/root/etc/config/passwall
@@ -22,7 +22,7 @@ config global_delay
config global_forwarding
option udp_redir_ports '1:65535'
- option tcp_redir_ports '80,443'
+ option tcp_redir_ports '1:65535'
option process '1'
config global_proxy
diff --git a/package/lienol/luci-app-passwall/root/etc/config/passwall_rule/blacklist_host b/package/lienol/luci-app-passwall/root/etc/config/passwall_rule/blacklist_host
index 9ea3d6783c..f40e9d7c67 100644
--- a/package/lienol/luci-app-passwall/root/etc/config/passwall_rule/blacklist_host
+++ b/package/lienol/luci-app-passwall/root/etc/config/passwall_rule/blacklist_host
@@ -1,4 +1,5 @@
formyip.com
-myepisodecalendar.com
-subhd.com
-msi.com
\ No newline at end of file
+msi.com
+github.com
+github.io
+githubusercontent.com
\ No newline at end of file
diff --git a/package/lienol/luci-app-passwall/root/etc/config/passwall_rule/router b/package/lienol/luci-app-passwall/root/etc/config/passwall_rule/router
index f95a840650..75d07845c0 100644
--- a/package/lienol/luci-app-passwall/root/etc/config/passwall_rule/router
+++ b/package/lienol/luci-app-passwall/root/etc/config/passwall_rule/router
@@ -1,7 +1,8 @@
google.com
youtube.com
github.com
-raw.githubusercontent.com
+github.io
+githubusercontent.com
github-production-release-asset-2e65be.s3.amazonaws.com
openwrt.proxy.ustclug.org
easylist-downloads.adblockplus.org
diff --git a/package/lienol/luci-app-passwall/root/etc/uci-defaults/luci-app-passwall b/package/lienol/luci-app-passwall/root/etc/uci-defaults/luci-app-passwall
index b7a1cb7f64..89932c7dd0 100755
--- a/package/lienol/luci-app-passwall/root/etc/uci-defaults/luci-app-passwall
+++ b/package/lienol/luci-app-passwall/root/etc/uci-defaults/luci-app-passwall
@@ -7,6 +7,8 @@ uci -q batch <<-EOF >/dev/null
commit ucitrack
EOF
-killall -9 kcptun haproxy shadowsocks-libev shadowsocksr-libev
+echo "" > /etc/dnsmasq.conf
+killall -q -9 kcptun haproxy shadowsocks-libev shadowsocksr-libev
+/etc/init.d/haproxy disable && /etc/init.d/haproxy stop
rm -f /tmp/luci-indexcache
exit 0
diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh
index 7d7f747a33..122866fe59 100755
--- a/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh
+++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh
@@ -23,7 +23,7 @@ APP_PATH=/usr/share/$CONFIG
TMP_DNSMASQ_PATH=/var/etc/dnsmasq-passwall.d
DNSMASQ_PATH=/etc/dnsmasq.d
RESOLVFILE=/tmp/resolv.conf.d/resolv.conf.auto
-lanip=$(uci get network.lan.ipaddr)
+lanip=$(uci -q get network.lan.ipaddr)
DNS_PORT=7913
API_GEN_V2RAY=/usr/lib/lua/luci/model/cbi/passwall/api/gen_v2ray_client_config_file.lua
API_GEN_TROJAN=/usr/lib/lua/luci/model/cbi/passwall/api/gen_trojan_client_config_file.lua
@@ -48,14 +48,14 @@ find_bin() {
}
config_n_get() {
- local ret=$(uci get $CONFIG.$1.$2 2>/dev/null)
+ local ret=$(uci -q get $CONFIG.$1.$2 2>/dev/null)
echo ${ret:=$3}
}
config_t_get() {
local index=0
[ -n "$4" ] && index=$4
- local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
+ local ret=$(uci -q get $CONFIG.@$1[$index].$2 2>/dev/null)
echo ${ret:=$3}
}
@@ -78,10 +78,10 @@ get_host_ip() {
if [ -z "$isip" ]; then
vpsrip=""
if [ "$use_ipv6" == "1" ]; then
- vpsrip=$(resolveip -6 -t 2 $host | awk 'NR==1{print}')
+ vpsrip=$(resolveip -6 -t 3 $host | awk 'NR==1{print}')
[ -z "$vpsrip" ] && vpsrip=$(dig @208.67.222.222 $host AAAA 2>/dev/null | grep 'IN' | awk -F ' ' '{print $5}' | grep -E "([a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){0,7}::[a-f0-9]{0,4}(:[a-f0-9]{1,4}){0,7})" | head -n1)
else
- vpsrip=$(resolveip -4 -t 2 $host | awk 'NR==1{print}')
+ vpsrip=$(resolveip -4 -t 3 $host | awk 'NR==1{print}')
[ -z "$vpsrip" ] && vpsrip=$(dig @208.67.222.222 $host 2>/dev/null | grep 'IN' | awk -F ' ' '{print $5}' | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | head -n1)
fi
ip=$vpsrip
@@ -94,11 +94,11 @@ check_port_exists() {
protocol=$2
result=
if [ "$protocol" = "tcp" ]; then
- result=$(netstat -tlpn | grep "\<$port\>")
+ result=$(netstat -tln | grep -c ":$port")
elif [ "$protocol" = "udp" ]; then
- result=$(netstat -ulpn | grep "\<$port\>")
+ result=$(netstat -uln | grep -c ":$port")
fi
- if [ -n "$result" ]; then
+ if [ "$result" = 1 ]; then
echo 1
else
echo 0
@@ -805,7 +805,7 @@ add_dnsmasq() {
# sed -i '/except-interface/d' /etc/dnsmasq.conf >/dev/null 2>&1 &
# for wanname in $(cat /var/state/network |grep pppoe|awk -F '.' '{print $2}')
# do
- # echo "except-interface=$(uci get network.$wanname.ifname)" >>/etc/dnsmasq.conf
+ # echo "except-interface=$(uci -q get network.$wanname.ifname)" >>/etc/dnsmasq.conf
# done
# fi
@@ -842,7 +842,6 @@ add_dnsmasq() {
rm -rf $TMP_DNSMASQ_PATH/whitelist_host.conf
fi
- echo "" > /etc/dnsmasq.conf
server="server=127.0.0.1#$DNS_PORT"
[ "$DNS_MODE" != "chinadns-ng" ] && {
local china_dns1=$(echo $UP_CHINA_DNS | awk -F "," '{print $1}')
@@ -859,7 +858,7 @@ add_dnsmasq() {
EOF
cp -rf /var/dnsmasq.d/dnsmasq-$CONFIG.conf $DNSMASQ_PATH/dnsmasq-$CONFIG.conf
echolog "dnsmasq:生成配置文件并重启服务。"
- /etc/init.d/dnsmasq restart 2>/dev/null
+ /etc/init.d/dnsmasq restart >/dev/null 2>&1 &
}
gen_redsocks_config() {
@@ -1005,7 +1004,7 @@ stop_dnsmasq() {
rm -rf /var/dnsmasq.d/dnsmasq-$CONFIG.conf
rm -rf $DNSMASQ_PATH/dnsmasq-$CONFIG.conf
rm -rf $TMP_DNSMASQ_PATH
- /etc/init.d/dnsmasq restart 2>/dev/null
+ /etc/init.d/dnsmasq restart >/dev/null 2>&1 &
}
start_haproxy() {
@@ -1147,7 +1146,6 @@ start() {
start_redir TCP REDIR tcp
start_redir UDP REDIR udp
source $APP_PATH/iptables.sh start
- /etc/init.d/dnsmasq restart >/dev/null 2>&1 &
start_crontab
set_cru
rm -f "$LOCK_FILE"
diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/iptables.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/iptables.sh
index e32c2829d9..fb2b5d6eb8 100755
--- a/package/lienol/luci-app-passwall/root/usr/share/passwall/iptables.sh
+++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/iptables.sh
@@ -244,12 +244,14 @@ add_firewall_rule() {
$iptables_nat -A PSW $(dst $IPSET_VPSIPLIST) -j RETURN
$iptables_nat -A PSW $(dst $IPSET_WHITELIST) -j RETURN
$iptables_nat -N PSW_ACL
+ $iptables_nat -N PSW_OUTPUT
$iptables_mangle -N PSW
$iptables_mangle -A PSW $(dst $IPSET_LANIPLIST) -j RETURN
$iptables_mangle -A PSW $(dst $IPSET_VPSIPLIST) -j RETURN
$iptables_mangle -A PSW $(dst $IPSET_WHITELIST) -j RETURN
$iptables_mangle -N PSW_ACL
+ $iptables_mangle -N PSW_OUTPUT
if [[ "$TCP_NODE_NUM" -ge 1 ]] || [[ "$UDP_NODE_NUM" -ge 1 ]]; then
local max_num=1
@@ -322,7 +324,7 @@ add_firewall_rule() {
# 用于本机流量转发,默认只走router
$iptables_mangle -A PSW -s $lan_ip -p tcp $(dst $IPSET_ROUTER) -j TPROXY --tproxy-mark 0x1/0x1 --on-port $local_port
- $iptables_mangle -A OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $(dst $IPSET_ROUTER) $iptables_comment -j MARK --set-mark 1
+ $iptables_mangle -A PSW_OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $(dst $IPSET_ROUTER) -j MARK --set-mark 1
else
# 全局模式
$iptables_nat -A PSW_GLO$k -p tcp -j REDIRECT --to-ports $local_port
@@ -382,27 +384,27 @@ add_firewall_rule() {
fi
$iptables_nat -I PREROUTING $PR_INDEX -j PSW
fi
- # 用于本机流量转发,默认只走router
- #$iptables_nat -I OUTPUT -j PSW
- $iptables_nat -A OUTPUT $(dst $IPSET_LANIPLIST) $iptables_comment -j RETURN
+ # 用于本机流量转发
+ $iptables_nat -A OUTPUT -j PSW_OUTPUT
+ $iptables_nat -A PSW_OUTPUT $(dst $IPSET_LANIPLIST) -j RETURN
[ "$use_tcp_node_resolve_dns" == 1 -a -n "$DNS_FORWARD" ] && {
for dns in $DNS_FORWARD
do
local dns_ip=$(echo $dns | awk -F "#" '{print $1}')
local dns_port=$(echo $dns | awk -F "#" '{print $2}')
[ -z "$dns_port" ] && dns_port=53
- $iptables_nat -A OUTPUT -p tcp -d $dns_ip --dport $dns_port $iptables_comment -j REDIRECT --to-ports $TCP_REDIR_PORT1
+ $iptables_nat -A PSW_OUTPUT -p tcp -d $dns_ip --dport $dns_port -j REDIRECT --to-ports $TCP_REDIR_PORT1
done
}
- $iptables_nat -A OUTPUT $(dst $IPSET_VPSIPLIST) $iptables_comment -j RETURN
- $iptables_nat -A OUTPUT $(dst $IPSET_WHITELIST) $iptables_comment -j RETURN
- $iptables_nat -A OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $(dst $IPSET_ROUTER) $iptables_comment -j REDIRECT --to-ports $TCP_REDIR_PORT1
- $iptables_nat -A OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $(dst $IPSET_BLACKLIST) $iptables_comment -j REDIRECT --to-ports $TCP_REDIR_PORT1
+ $iptables_nat -A PSW_OUTPUT $(dst $IPSET_VPSIPLIST) -j RETURN
+ $iptables_nat -A PSW_OUTPUT $(dst $IPSET_WHITELIST) -j RETURN
+ $iptables_nat -A PSW_OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $(dst $IPSET_ROUTER) -j REDIRECT --to-ports $TCP_REDIR_PORT1
+ $iptables_nat -A PSW_OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $(dst $IPSET_BLACKLIST) -j REDIRECT --to-ports $TCP_REDIR_PORT1
- [ "$LOCALHOST_PROXY_MODE" == "global" ] && $iptables_nat -A OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $iptables_comment -j REDIRECT --to-ports $TCP_REDIR_PORT1
- [ "$LOCALHOST_PROXY_MODE" == "gfwlist" ] && $iptables_nat -A OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $(dst $IPSET_GFW) $iptables_comment -j REDIRECT --to-ports $TCP_REDIR_PORT1
+ [ "$LOCALHOST_PROXY_MODE" == "global" ] && $iptables_nat -A PSW_OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS -j REDIRECT --to-ports $TCP_REDIR_PORT1
+ [ "$LOCALHOST_PROXY_MODE" == "gfwlist" ] && $iptables_nat -A PSW_OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS $(dst $IPSET_GFW) -j REDIRECT --to-ports $TCP_REDIR_PORT1
[ "$LOCALHOST_PROXY_MODE" == "chnroute" ] && {
- $iptables_nat -A OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS -m set ! --match-set $IPSET_CHN dst $iptables_comment -j REDIRECT --to-ports $TCP_REDIR_PORT1
+ $iptables_nat -A PSW_OUTPUT -p tcp -m multiport --dport $TCP_REDIR_PORTS -m set ! --match-set $IPSET_CHN dst -j REDIRECT --to-ports $TCP_REDIR_PORT1
}
}
# 重定所有流量到透明代理端口
@@ -467,27 +469,28 @@ add_firewall_rule() {
$iptables_mangle -A PSW_GAME$k -p udp $(dst $IPSET_CHN) -j RETURN
$iptables_mangle -A PSW_GAME$k -p udp -j TPROXY --tproxy-mark 0x1/0x1 --on-port $local_port
- # 用于本机流量转发,默认只走router
- $iptables_mangle -A OUTPUT -p udp $(dst $IPSET_LANIPLIST) $iptables_comment -j RETURN
+ # 用于本机流量转发
+ $iptables_mangle -A OUTPUT -j PSW_OUTPUT
+ $iptables_mangle -A PSW_OUTPUT -p udp $(dst $IPSET_LANIPLIST) -j RETURN
[ "$use_udp_node_resolve_dns" == 1 -a -n "$DNS_FORWARD" ] && {
for dns in $DNS_FORWARD
do
local dns_ip=$(echo $dns | awk -F "#" '{print $1}')
local dns_port=$(echo $dns | awk -F "#" '{print $2}')
[ -z "$dns_port" ] && dns_port=53
- $iptables_mangle -A OUTPUT -p udp -d $dns_ip --dport $dns_port $iptables_comment -j MARK --set-mark 1
- $iptables_mangle -I PSW 2 -p udp -d $dns_ip --dport $dns_port $iptables_comment -j TPROXY --tproxy-mark 0x1/0x1 --on-port $local_port
+ $iptables_mangle -A PSW_OUTPUT -p udp -d $dns_ip --dport $dns_port -j MARK --set-mark 1
+ $iptables_mangle -I PSW 2 -p udp -d $dns_ip --dport $dns_port -j TPROXY --tproxy-mark 0x1/0x1 --on-port $local_port
done
}
- $iptables_mangle -A OUTPUT -p udp $(dst $IPSET_VPSIPLIST) $iptables_comment -j RETURN
- $iptables_mangle -A OUTPUT -p udp $(dst $IPSET_WHITELIST) $iptables_comment -j RETURN
- $iptables_mangle -A OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS $(dst $IPSET_ROUTER) $iptables_comment -j MARK --set-mark 1
- $iptables_mangle -A OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS $(dst $IPSET_BLACKLIST) $iptables_comment -j MARK --set-mark 1
+ $iptables_mangle -A PSW_OUTPUT -p udp $(dst $IPSET_VPSIPLIST) -j RETURN
+ $iptables_mangle -A PSW_OUTPUT -p udp $(dst $IPSET_WHITELIST) -j RETURN
+ $iptables_mangle -A PSW_OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS $(dst $IPSET_ROUTER) -j MARK --set-mark 1
+ $iptables_mangle -A PSW_OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS $(dst $IPSET_BLACKLIST) -j MARK --set-mark 1
- [ "$LOCALHOST_PROXY_MODE" == "global" ] && $iptables_mangle -A OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS $iptables_comment -j MARK --set-mark 1
- [ "$LOCALHOST_PROXY_MODE" == "gfwlist" ] && $iptables_mangle -A OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS $(dst $IPSET_GFW) $iptables_comment -j MARK --set-mark 1
+ [ "$LOCALHOST_PROXY_MODE" == "global" ] && $iptables_mangle -A PSW_OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS -j MARK --set-mark 1
+ [ "$LOCALHOST_PROXY_MODE" == "gfwlist" ] && $iptables_mangle -A PSW_OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS $(dst $IPSET_GFW) -j MARK --set-mark 1
[ "$LOCALHOST_PROXY_MODE" == "chnroute" ] && {
- $iptables_mangle -A OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS -m set ! --match-set $IPSET_CHN dst $iptables_comment -j MARK --set-mark 1
+ $iptables_mangle -A PSW_OUTPUT -p udp -m multiport --dport $UDP_REDIR_PORTS -m set ! --match-set $IPSET_CHN dst -j MARK --set-mark 1
}
echolog "IPv4 防火墙UDP转发规则加载完成!"
@@ -505,9 +508,9 @@ add_firewall_rule() {
local ip=$(echo $balancing_node | awk -F ":" '{print $1}')
local port=$(echo $balancing_node | awk -F ":" '{print $2}')
$iptables_nat -I PSW 2 -p tcp -d $ip --dport $port -j RETURN
- $iptables_nat -I OUTPUT 2 -p tcp -d $ip --dport $port $iptables_comment -j RETURN
+ $iptables_nat -I PSW_OUTPUT 2 -p tcp -d $ip --dport $port -j RETURN
$iptables_mangle -I PSW 2 -p udp -d $ip --dport $port -j RETURN
- $iptables_mangle -I OUTPUT 2 -p udp -d $ip --dport $port $iptables_comment -j RETURN
+ $iptables_mangle -I PSW_OUTPUT 2 -p udp -d $ip --dport $port -j RETURN
done
fi
@@ -534,30 +537,6 @@ add_firewall_rule() {
del_firewall_rule() {
echolog "删除所有防火墙规则..."
- ipv4_output_exist=$($iptables_nat -L OUTPUT 2>/dev/null | grep -c -E "PassWall")
- [ -n "$ipv4_output_exist" ] && {
- until [ "$ipv4_output_exist" = 0 ]; do
- rules=$($iptables_nat -L OUTPUT --line-numbers | grep -E "PassWall" | awk '{print $1}')
- for rule in $rules; do
- $iptables_nat -D OUTPUT $rule 2>/dev/null
- break
- done
- ipv4_output_exist=$(expr $ipv4_output_exist - 1)
- done
- }
-
- ipv4_output_exist=$($iptables_mangle -L OUTPUT 2>/dev/null | grep -c -E "PassWall")
- [ -n "$ipv4_output_exist" ] && {
- until [ "$ipv4_output_exist" = 0 ]; do
- rules=$($iptables_mangle -L OUTPUT --line-numbers | grep -E "PassWall" | awk '{print $1}')
- for rule in $rules; do
- $iptables_mangle -D OUTPUT $rule 2>/dev/null
- break
- done
- ipv4_output_exist=$(expr $ipv4_output_exist - 1)
- done
- }
-
ipv6_output_ss_exist=$($ip6tables_nat -L OUTPUT 2>/dev/null | grep -c "PSW")
[ -n "$ipv6_output_ss_exist" ] && {
until [ "$ipv6_output_ss_exist" = 0 ]; do
@@ -571,16 +550,22 @@ del_firewall_rule() {
}
$iptables_nat -D PREROUTING -j PSW 2>/dev/null
+ $iptables_nat -D OUTPUT -j PSW_OUTPUT 2>/dev/null
$iptables_nat -F PSW 2>/dev/null && $iptables_nat -X PSW 2>/dev/null
$iptables_nat -F PSW_ACL 2>/dev/null && $iptables_nat -X PSW_ACL 2>/dev/null
+ $iptables_nat -F PSW_OUTPUT 2>/dev/null && $iptables_nat -X PSW_OUTPUT 2>/dev/null
- $iptables_mangle -D PREROUTING -j PSW$k 2>/dev/null
+ $iptables_mangle -D PREROUTING -j PSW 2>/dev/null
+ $iptables_mangle -D OUTPUT -j PSW_OUTPUT 2>/dev/null
$iptables_mangle -F PSW 2>/dev/null && $iptables_mangle -X PSW 2>/dev/null
$iptables_mangle -F PSW_ACL 2>/dev/null && $iptables_mangle -X PSW_ACL 2>/dev/null
+ $iptables_mangle -F PSW_OUTPUT 2>/dev/null && $iptables_mangle -X PSW_OUTPUT 2>/dev/null
$ip6tables_nat -D PREROUTING -j PSW 2>/dev/null
+ $ip6tables_nat -D OUTPUT -j PSW_OUTPUT 2>/dev/null
$ip6tables_nat -F PSW 2>/dev/null && $ip6tables_nat -X PSW 2>/dev/null
$ip6tables_nat -F PSW_ACL 2>/dev/null && $ip6tables_nat -X PSW_ACL 2>/dev/null
+ $ip6tables_nat -F PSW_OUTPUT 2>/dev/null && $ip6tables_nat -X PSW_OUTPUT 2>/dev/null
local max_num=5
if [ "$max_num" -ge 1 ]; then
diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh
index 6f8bc69ef6..f767d9fa92 100755
--- a/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh
+++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh
@@ -4,14 +4,14 @@ CONFIG=passwall
CONFIG_PATH=/var/etc/$CONFIG
config_n_get() {
- local ret=$(uci get $CONFIG.$1.$2 2>/dev/null)
+ local ret=$(uci -q get $CONFIG.$1.$2 2>/dev/null)
echo ${ret:=$3}
}
config_t_get() {
local index=0
[ -n "$4" ] && index=$4
- local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
+ local ret=$(uci -q get $CONFIG.@$1[$index].$2 2>/dev/null)
echo ${ret:=$3}
}
diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/rule_update.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/rule_update.sh
index b612df6e5c..4117ed9cec 100755
--- a/package/lienol/luci-app-passwall/root/usr/share/passwall/rule_update.sh
+++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/rule_update.sh
@@ -15,9 +15,9 @@ if [ -n "$update" ]; then
[ -n "$(echo $update | grep "chnroute_update")" ] && chnroute_update=1
[ -n "$(echo $update | grep "chnlist_update")" ] && chnlist_update=1
else
- gfwlist_update=$(uci get $CONFIG.@global_rules[0].gfwlist_update)
- chnroute_update=$(uci get $CONFIG.@global_rules[0].chnroute_update)
- chnlist_update=$(uci get $CONFIG.@global_rules[0].chnlist_update)
+ gfwlist_update=$(uci -q get $CONFIG.@global_rules[0].gfwlist_update)
+ chnroute_update=$(uci -q get $CONFIG.@global_rules[0].chnroute_update)
+ chnlist_update=$(uci -q get $CONFIG.@global_rules[0].chnlist_update)
fi
if [ "$gfwlist_update" == 0 -a "$chnroute_update" == 0 -a "$chnlist_update" == 0 ]; then
@@ -29,7 +29,7 @@ uci_get_by_type() {
if [ -n $4 ]; then
index=$4
fi
- local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
+ local ret=$(uci -q get $CONFIG.@$1[$index].$2 2>/dev/null)
echo ${ret:=$3}
}
diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/subscription.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/subscription.sh
index 60a9721427..2f570c6686 100755
--- a/package/lienol/luci-app-passwall/root/usr/share/passwall/subscription.sh
+++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/subscription.sh
@@ -11,7 +11,7 @@ LOG_FILE=/var/log/$CONFIG.log
config_t_get() {
local index=0
[ -n "$3" ] && index=$3
- local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
+ local ret=$(uci -q get $CONFIG.@$1[$index].$2 2>/dev/null)
#echo ${ret:=$3}
echo $ret
}
@@ -413,7 +413,7 @@ del_config(){
[ "`cat /usr/share/${CONFIG}/sub/all_onlinenodes |grep -c "$localaddress"`" -eq 0 ] && {
for localindex in $(uci show $CONFIG | grep -w "$localaddress" | grep -w "address=" |cut -d '[' -f2|cut -d ']' -f1)
do
- del_type=$(uci get $CONFIG.@nodes[$localindex].type)
+ del_type=$(uci -q get $CONFIG.@nodes[$localindex].type)
uci delete $CONFIG.@nodes[$localindex]
uci commit $CONFIG
if [ "$del_type" == "SS" ]; then
@@ -434,17 +434,20 @@ del_config(){
del_all_config(){
get_node_index
[ "`uci show $CONFIG | grep -c 'is_sub'`" -eq 0 ] && exit 0
- TCP_NODE_NUM=$(uci get $CONFIG.@global_other[0].tcp_node_num)
+ TCP_NODE_NUM=$(uci -q get $CONFIG.@global_other[0].tcp_node_num)
+ [ -z "$TCP_NODE_NUM" ] && TCP_NODE_NUM=1
for i in $(seq 1 $TCP_NODE_NUM); do
eval TCP_NODE$i=$(config_t_get global tcp_node$i)
done
- UDP_NODE_NUM=$(uci get $CONFIG.@global_other[0].udp_node_num)
+ UDP_NODE_NUM=$(uci -q get $CONFIG.@global_other[0].udp_node_num)
+ [ -z "$UDP_NODE_NUM" ] && UDP_NODE_NUM=1
for i in $(seq 1 $UDP_NODE_NUM); do
eval UDP_NODE$i=$(config_t_get global udp_node$i)
done
- SOCKS5_NODE_NUM=$(uci get $CONFIG.@global_other[0].socks5_node_num)
+ SOCKS5_NODE_NUM=$(uci -q get $CONFIG.@global_other[0].socks5_node_num)
+ [ -z "$SOCKS5_NODE_NUM" ] && SOCKS5_NODE_NUM=1
for i in $(seq 1 $SOCKS5_NODE_NUM); do
eval SOCKS5_NODE$i=$(config_t_get global socks5_node$i)
done
diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/test.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/test.sh
index 13df42f446..366b4aff6f 100755
--- a/package/lienol/luci-app-passwall/root/usr/share/passwall/test.sh
+++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/test.sh
@@ -56,7 +56,7 @@ test_auto_switch() {
let "failcount++"
[ "$failcount" -ge 5 ] && {
echolog "自动切换检测:检测异常,切换节点"
- TCP_NODES=$(uci get $CONFIG.@auto_switch[0].tcp_node)
+ TCP_NODES=$(uci -q get $CONFIG.@auto_switch[0].tcp_node)
has_backup_server=$(echo $TCP_NODES | grep $TCP_NODES1)
setserver=
if [ -z "$has_backup_server" ]; then