small-package/luci-app-ssr-mudb-server/root/etc/init.d/ssr_mudb_server

104 lines
2.6 KiB
Plaintext
Raw Normal View History

2021-09-24 23:37:27 +08:00
#!/bin/sh /etc/rc.common
# Copyright (C) 2018-2020 Lienol <lawlienol@gmail.com>
START=99
CONFIG=ssr_mudb_server
ssr_path=/usr/share/$CONFIG
config_t_get() {
local index=0
[ -n "$4" ] && index=$4
local ret=$(uci -q get $CONFIG.@$1[$index].$2 2>/dev/null)
echo ${ret:=$3}
}
add_rule() {
iptables -N SSR_MUDB-SERVER
iptables -I INPUT -j SSR_MUDB-SERVER
lua $ssr_path/firewall.lua
}
del_rule() {
count=$(iptables -n -L INPUT 2>/dev/null | grep -c "SSR_MUDB-SERVER")
if [ -n "$count" ]; then
until [ "$count" = 0 ]
do
rules=$(iptables -n -L INPUT --line-num 2>/dev/null | grep "SSR_MUDB-SERVER" | awk '{print $1}')
for rule in $rules
do
iptables -D INPUT $rule 2>/dev/null
break
done
count=$(expr $count - 1)
done
fi
iptables -F SSR_MUDB-SERVER 2>/dev/null && iptables -X SSR_MUDB-SERVER 2>/dev/null
}
gen_include() {
echo '#!/bin/sh' > /var/etc/$CONFIG.include
extract_rules() {
echo "*$1"
iptables-save -t $1 | grep "SSR_MUDB-SERVER" | \
sed -e "s/^-A \(INPUT\)/-I \1 1/"
echo 'COMMIT'
}
cat <<-EOF >> /var/etc/$CONFIG.include
iptables-save -c | grep -v "SSR_MUDB-SERVER" | iptables-restore -c
iptables-restore -n <<-EOT
$(extract_rules filter)
EOT
EOF
return 0
}
set_ssr_python_crontab() {
if [ "$1" -eq 1 ];then
auto_clear_transfer=$(config_t_get global auto_clear_transfer 0)
if [ "$auto_clear_transfer" = "0" ];then
sed -i '/clear_traffic_all_users.sh/d' /etc/crontabs/root >/dev/null 2>&1 &
else
auto_clear_transfer_time=$(config_t_get global auto_clear_transfer_time)
[ -n "$auto_clear_transfer_time" ] && auto_clear_transfer_time=$(echo $auto_clear_transfer_time | tr ',' ' ')
echo "$auto_clear_transfer_time $ssr_path/clear_traffic_all_users.sh >/dev/null 2>&1" >> /etc/crontabs/root
fi
else
sed -i '/clear_traffic_all_users.sh/d' /etc/crontabs/root >/dev/null 2>&1 &
fi
/etc/init.d/cron restart
}
start_ssr_python_server() {
/usr/bin/python3 $ssr_path/server.py >> /var/log/$CONFIG.log 2>&1 &
set_ssr_python_crontab 1
add_rule
gen_include
}
stop_ssr_python_server() {
2022-08-09 20:22:33 +08:00
busybox ps -w | grep "$ssr_path/server.py" | grep -v "grep" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 &
2021-09-24 23:37:27 +08:00
set_ssr_python_crontab 0
del_rule
rm -rf /var/log/$CONFIG.log /var/etc/$CONFIG.include
}
start() {
enable=$(config_t_get global enable 0)
if [ "$enable" -eq 1 ];then
users_config=$(cat $ssr_path/userapiconfig.py | grep "MUDB_FILE" | cut -d "'" -f 2)
[ -n "$users_config" ] && cp -rf $users_config $ssr_path/mudb_backup.json
start_ssr_python_server
else
stop_ssr_python_server
fi
}
stop() {
stop_ssr_python_server
}
restart() {
stop
start
}