luci-app-passwall: sync with upstream source
This commit is contained in:
parent
525af8988d
commit
0a9ce83a9c
@ -134,8 +134,10 @@ define Package/$(PKG_NAME)/conffiles
|
||||
/etc/config/passwall_server
|
||||
/usr/share/passwall/rules/proxy_host
|
||||
/usr/share/passwall/rules/proxy_ip
|
||||
/usr/share/passwall/rules/direct_host
|
||||
/usr/share/passwall/rules/direct_ip
|
||||
/usr/share/passwall/rules/proxy_host2
|
||||
/usr/share/passwall/rules/proxy_ip2
|
||||
/usr/share/passwall/rules/proxy_host3
|
||||
/usr/share/passwall/rules/proxy_ip3
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
|
||||
@ -2,7 +2,10 @@ local fs = require "nixio.fs"
|
||||
local appname = "passwall"
|
||||
|
||||
m = Map(appname)
|
||||
|
||||
m.apply_on_parse=true
|
||||
function m.on_apply(self)
|
||||
luci.sys.call("/etc/init.d/passwall reload > /dev/null 2>&1 &")
|
||||
end
|
||||
-- [[ Rule List Settings ]]--
|
||||
s = m:section(TypedSection, "global_rules")
|
||||
s.anonymous = true
|
||||
|
||||
@ -9,6 +9,7 @@ TMP_PATH=/var/etc/$CONFIG
|
||||
TMP_BIN_PATH=$TMP_PATH/bin
|
||||
TMP_ID_PATH=$TMP_PATH/id
|
||||
TMP_PORT_PATH=$TMP_PATH/port
|
||||
LOCK_FILE=/var/lock/$CONFIG.lock
|
||||
LOG_FILE=/var/log/$CONFIG.log
|
||||
APP_PATH=/usr/share/$CONFIG
|
||||
RULES_PATH=/usr/share/${CONFIG}/rules
|
||||
@ -48,6 +49,38 @@ config_t_get() {
|
||||
echo "${ret:=${3}}"
|
||||
}
|
||||
|
||||
set_lock(){
|
||||
exec 1000>"$LOCK_FILE"
|
||||
flock -x 1000
|
||||
}
|
||||
|
||||
trap 'rm -f "$LOCK_FILE"; exit $?' INT TERM EXIT
|
||||
|
||||
unlock() {
|
||||
failcount=1
|
||||
while [ "$failcount" -le 10 ]; do
|
||||
if [ -f "$LOCK_FILE" ]; then
|
||||
let "failcount++"
|
||||
sleep 1s
|
||||
[ "$failcount" -ge 10 ] && unset_lock
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
unset_lock(){
|
||||
flock -u 1000
|
||||
rm -rf "$LOCK_FILE"
|
||||
}
|
||||
|
||||
_exit()
|
||||
{
|
||||
local rc=$1
|
||||
unset_lock
|
||||
exit ${rc}
|
||||
}
|
||||
|
||||
get_enabled_anonymous_secs() {
|
||||
uci -q show "${CONFIG}" | grep "${1}\[.*\.enabled='1'" | cut -d '.' -sf2
|
||||
}
|
||||
@ -1201,6 +1234,8 @@ boot() {
|
||||
}
|
||||
|
||||
start() {
|
||||
#加锁防止并发开启服务
|
||||
set_lock
|
||||
load_config
|
||||
start_socks
|
||||
start_haproxy
|
||||
@ -1215,9 +1250,12 @@ start() {
|
||||
}
|
||||
start_crontab
|
||||
echolog "运行完成!\n"
|
||||
unset_lock
|
||||
}
|
||||
|
||||
stop() {
|
||||
unlock
|
||||
set_lock
|
||||
clean_log
|
||||
source $APP_PATH/iptables.sh stop
|
||||
kill_all v2ray-plugin obfs-local
|
||||
@ -1231,6 +1269,7 @@ stop() {
|
||||
/etc/init.d/dnsmasq restart >/dev/null 2>&1
|
||||
echolog "重启 dnsmasq 服务[$?]"
|
||||
echolog "清空并关闭相关程序和缓存完成。"
|
||||
unset_lock
|
||||
}
|
||||
|
||||
arg1=$1
|
||||
|
||||
@ -635,24 +635,32 @@ add_firewall_rule() {
|
||||
}
|
||||
|
||||
del_firewall_rule() {
|
||||
$ipt_n -D PREROUTING -p tcp -j PSW 2>/dev/null
|
||||
$ipt_n -D OUTPUT -p tcp -j PSW_OUTPUT 2>/dev/null
|
||||
ib_nat_exist=`$ipt_n -L PREROUTING | grep -c PSW`
|
||||
if [ ! -z "$ib_nat_exist" ];then
|
||||
until [ "$ib_nat_exist" = 0 ]
|
||||
do
|
||||
$ipt_n -D PREROUTING -p tcp -j PSW 2>/dev/null
|
||||
$ipt_n -D OUTPUT -p tcp -j PSW_OUTPUT 2>/dev/null
|
||||
|
||||
$ipt_m -D PREROUTING -j PSW 2>/dev/null
|
||||
$ipt_m -D OUTPUT -p tcp -j PSW_OUTPUT 2>/dev/null
|
||||
$ipt_m -D OUTPUT -p udp -j PSW_OUTPUT 2>/dev/null
|
||||
|
||||
$ip6t_n -D PREROUTING -j PSW 2>/dev/null
|
||||
$ip6t_n -D OUTPUT -p tcp -j PSW_OUTPUT 2>/dev/null
|
||||
|
||||
$ip6t_m -D PREROUTING -j PSW 2>/dev/null
|
||||
$ip6t_m -D OUTPUT -p tcp -j PSW_OUTPUT 2>/dev/null
|
||||
|
||||
ib_nat_exist=`expr $ib_nat_exist - 1`
|
||||
done
|
||||
fi
|
||||
$ipt_n -F PSW 2>/dev/null && $ipt_n -X PSW 2>/dev/null
|
||||
$ipt_n -F PSW_OUTPUT 2>/dev/null && $ipt_n -X PSW_OUTPUT 2>/dev/null
|
||||
|
||||
$ipt_m -D PREROUTING -j PSW 2>/dev/null
|
||||
$ipt_m -D OUTPUT -p tcp -j PSW_OUTPUT 2>/dev/null
|
||||
$ipt_m -D OUTPUT -p udp -j PSW_OUTPUT 2>/dev/null
|
||||
$ipt_m -F PSW 2>/dev/null && $ipt_m -X PSW 2>/dev/null
|
||||
$ipt_m -F PSW_OUTPUT 2>/dev/null && $ipt_m -X PSW_OUTPUT 2>/dev/null
|
||||
|
||||
$ip6t_n -D PREROUTING -j PSW 2>/dev/null
|
||||
$ip6t_n -D OUTPUT -p tcp -j PSW_OUTPUT 2>/dev/null
|
||||
$ip6t_n -F PSW 2>/dev/null && $ip6t_n -X PSW 2>/dev/null
|
||||
$ip6t_n -F PSW_OUTPUT 2>/dev/null && $ip6t_n -X PSW_OUTPUT 2>/dev/null
|
||||
|
||||
$ip6t_m -D PREROUTING -j PSW 2>/dev/null
|
||||
$ip6t_m -D OUTPUT -p tcp -j PSW_OUTPUT 2>/dev/null
|
||||
$ip6t_m -F PSW 2>/dev/null && $ip6t_m -X PSW 2>/dev/null
|
||||
$ip6t_m -F PSW_OUTPUT 2>/dev/null && $ip6t_m -X PSW_OUTPUT 2>/dev/null
|
||||
|
||||
@ -670,7 +678,7 @@ del_firewall_rule() {
|
||||
#ipset -F $IPSET_BLACKLIST2 >/dev/null 2>&1 && ipset -X $IPSET_BLACKLIST2 >/dev/null 2>&1 &
|
||||
#ipset -F $IPSET_BLACKLIST3 >/dev/null 2>&1 && ipset -X $IPSET_BLACKLIST3 >/dev/null 2>&1 &
|
||||
ipset -F $IPSET_WHITELIST >/dev/null 2>&1 && ipset -X $IPSET_WHITELIST >/dev/null 2>&1 &
|
||||
#echolog "删除相关防火墙规则完成。"
|
||||
echolog "删除相关防火墙规则完成。"
|
||||
}
|
||||
|
||||
flush_ipset() {
|
||||
@ -693,26 +701,8 @@ flush_include() {
|
||||
|
||||
gen_include() {
|
||||
flush_include
|
||||
extract_rules() {
|
||||
local _ipt="iptables"
|
||||
[ "$1" == "6" ] && _ipt="ip6tables"
|
||||
|
||||
echo "*$2"
|
||||
${_ipt}-save -t $2 | grep PSW | \
|
||||
sed -e "s/^-A \(OUTPUT\|PREROUTING\)/-I \1 1/"
|
||||
echo 'COMMIT'
|
||||
}
|
||||
cat <<-EOF >>$FWI
|
||||
iptables-save -c | grep -v "PSW" | iptables-restore -c
|
||||
iptables-restore -n <<-EOT
|
||||
$(extract_rules 4 nat)
|
||||
$(extract_rules 4 mangle)
|
||||
EOT
|
||||
ip6tables-save -c | grep -v "PSW" | ip6tables-restore -c
|
||||
ip6tables-restore -n <<-EOT
|
||||
$(extract_rules 6 nat)
|
||||
$(extract_rules 6 mangle)
|
||||
EOT
|
||||
/etc/init.d/passwall reload
|
||||
EOF
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -606,7 +606,6 @@ local function curl(url)
|
||||
end
|
||||
|
||||
local function truncate_nodes()
|
||||
local is_stop = 0
|
||||
local function clear(type)
|
||||
local node_num = ucic2:get(application, "@global_other[0]", type .. "_node_num") or 1
|
||||
for i = 1, node_num, 1 do
|
||||
@ -614,7 +613,6 @@ local function truncate_nodes()
|
||||
if node then
|
||||
local is_sub_node = ucic2:get(application, node, "is_sub") or 0
|
||||
if is_sub_node == "1" then
|
||||
is_stop = 1
|
||||
ucic2:set(application, '@global[0]', type .. "_node" .. i, "nil")
|
||||
end
|
||||
end
|
||||
@ -628,7 +626,6 @@ local function truncate_nodes()
|
||||
if node then
|
||||
local is_sub_node = ucic2:get(application, node, "is_sub") or 0
|
||||
if is_sub_node == "1" then
|
||||
is_stop = 1
|
||||
ucic2:set(application, t[".name"], "node", "nil")
|
||||
end
|
||||
end
|
||||
@ -641,9 +638,6 @@ local function truncate_nodes()
|
||||
end)
|
||||
ucic2:commit(application)
|
||||
|
||||
if is_stop == 1 then
|
||||
luci.sys.call("/etc/init.d/" .. application .. " restart > /dev/null 2>&1 &") -- 不加&的话日志会出现的更早
|
||||
end
|
||||
log('在线订阅节点已全部删除')
|
||||
end
|
||||
|
||||
@ -808,7 +802,7 @@ local function update_node(manual)
|
||||
]]--
|
||||
|
||||
ucic2:commit(application)
|
||||
luci.sys.call("/etc/init.d/" .. application .. " restart > /dev/null 2>&1 &") -- 不加&的话日志会出现的更早
|
||||
--luci.sys.call("/etc/init.d/" .. application .. " restart > /dev/null 2>&1 &") -- 不加&的话日志会出现的更早
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -136,32 +136,27 @@ test_auto_switch() {
|
||||
}
|
||||
|
||||
start() {
|
||||
(
|
||||
flock -xn 200
|
||||
[ "$?" != "0" ] && exit 0
|
||||
|
||||
ENABLED=$(config_t_get global enabled 0)
|
||||
[ "$ENABLED" != 1 ] && return 1
|
||||
ENABLED=$(config_t_get auto_switch enable 0)
|
||||
[ "$ENABLED" != 1 ] && return 1
|
||||
ENABLED=$(config_t_get global enabled 0)
|
||||
[ "$ENABLED" != 1 ] && _return 1
|
||||
ENABLED=$(config_t_get auto_switch enable 0)
|
||||
[ "$ENABLED" != 1 ] && _return 1
|
||||
delay=$(config_t_get auto_switch testing_time 1)
|
||||
sleep ${delay}m
|
||||
while [ "$ENABLED" -eq 1 ]
|
||||
do
|
||||
# TCP_NODE_NUM=$(config_t_get global_other tcp_node_num 1)
|
||||
# 暂时只能检测TCP1
|
||||
TCP_NODE_NUM=1
|
||||
for i in $(seq 1 $TCP_NODE_NUM); do
|
||||
eval TCP_NODE$i=\"$(config_t_get auto_switch tcp_node$i nil)\"
|
||||
eval tmp=\$TCP_NODE$i
|
||||
[ -n "$tmp" -a "$tmp" != "nil" ] && {
|
||||
test_auto_switch TCP tcp $i "$tmp"
|
||||
}
|
||||
done
|
||||
delay=$(config_t_get auto_switch testing_time 1)
|
||||
sleep ${delay}m
|
||||
while [ "$ENABLED" -eq 1 ]
|
||||
do
|
||||
# TCP_NODE_NUM=$(config_t_get global_other tcp_node_num 1)
|
||||
# 暂时只能检测TCP1
|
||||
TCP_NODE_NUM=1
|
||||
for i in $(seq 1 $TCP_NODE_NUM); do
|
||||
eval TCP_NODE$i=\"$(config_t_get auto_switch tcp_node$i nil)\"
|
||||
eval tmp=\$TCP_NODE$i
|
||||
[ -n "$tmp" -a "$tmp" != "nil" ] && {
|
||||
test_auto_switch TCP tcp $i "$tmp"
|
||||
}
|
||||
done
|
||||
delay=$(config_t_get auto_switch testing_time 1)
|
||||
sleep ${delay}m
|
||||
done
|
||||
) 200>"/var/lock/passwall_auto_switch.lock"
|
||||
done
|
||||
}
|
||||
|
||||
case $1 in
|
||||
|
||||
Loading…
Reference in New Issue
Block a user