mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-13 20:08:05 +08:00
🌴 Sync 2026-10-16 01:08:07
This commit is contained in:
1 parent
f95bba4fb6
commit
16f740db5d
186 files changed
+9575
-5557
No files matched your search
@@ -1,23 +1,36 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
START=99
|
||||
STOP=10
|
||||
LOGIN_GUARD=/usr/lib/minigate/login_guard.sh
|
||||
|
||||
# === 启动登录防护 watcher(独立子进程) ===
|
||||
start_login_guard() {
|
||||
local lg_en=$(uci -q get minigate.login_guard.enabled)
|
||||
[ "$lg_en" = "1" ] || return 0
|
||||
# 已在跑则跳过
|
||||
pgrep -f '/usr/lib/minigate/login_guard.sh run' >/dev/null 2>&1 && return 0
|
||||
/bin/sh /usr/lib/minigate/login_guard.sh run >/dev/null 2>&1 &
|
||||
pgrep -f "^/bin/sh ${LOGIN_GUARD} run" >/dev/null 2>&1 && return 0
|
||||
/bin/sh "$LOGIN_GUARD" run >/dev/null 2>&1 &
|
||||
logger -t minigate "登录防护已启动"
|
||||
}
|
||||
|
||||
# 先结束子进程:logread -f / tail -f 忽略 SIGPIPE,父 shell 退出后不会自行结束
|
||||
stop_process_tree() {
|
||||
local child
|
||||
for child in $(pgrep -P "$1" 2>/dev/null); do
|
||||
stop_process_tree "$child"
|
||||
done
|
||||
kill "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# 只匹配实际启动形式;调用方命令行里恰好含有这段文本时(BusyBox pgrep 不排除祖先),不能结束调用方
|
||||
stop_login_guard() {
|
||||
local pids
|
||||
pids=$(pgrep -f '/usr/lib/minigate/login_guard.sh run' 2>/dev/null)
|
||||
[ -n "$pids" ] && kill $pids >/dev/null 2>&1
|
||||
local pids pid
|
||||
pids=$(pgrep -f "^/bin/sh ${LOGIN_GUARD} run" 2>/dev/null)
|
||||
for pid in $pids; do
|
||||
stop_process_tree "$pid"
|
||||
done
|
||||
sleep 1
|
||||
pids=$(pgrep -f '/usr/lib/minigate/login_guard.sh run' 2>/dev/null)
|
||||
pids=$(pgrep -f "^/bin/sh ${LOGIN_GUARD} run" 2>/dev/null)
|
||||
[ -n "$pids" ] && kill -9 $pids >/dev/null 2>&1
|
||||
# 移除 nft 中的 drop 规则(保留 set,让现有封禁继续生效到自然过期)
|
||||
local handle=$(nft -a list chain inet fw4 input 2>/dev/null | grep "minigate-login-guard" | grep -oE 'handle [0-9]+' | awk '{print $2}')
|
||||
@@ -39,6 +52,7 @@ start() {
|
||||
echo "*/5 * * * * /bin/sh /usr/lib/minigate/ddns.sh" >> /etc/crontabs/root
|
||||
echo "0 3 * * * /bin/sh /usr/lib/minigate/acme.sh renew" >> /etc/crontabs/root
|
||||
echo "*/2 * * * * /bin/sh /usr/lib/minigate/geofence.sh scan" >> /etc/crontabs/root
|
||||
echo "*/10 * * * * /bin/sh /usr/lib/minigate/proxy.sh trim-logs" >> /etc/crontabs/root
|
||||
/etc/init.d/cron restart 2>/dev/null
|
||||
logger -t minigate "已启动"
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user