✨ Sync 2026-04-22 04:42:14

This commit is contained in:
github-actions[bot] committed 2026-04-22 04:42:14 +08:00
1 parent 9637c56cbd
commit 8541cb3d03
17 files changed
+275 -43

No files matched your search

@@ -65,6 +65,15 @@ stop() {
restart() {
set_lock
[ $? == 1 ] && echolog "脚本已经在运行,不重复运行,退出." && exit 0
rule_lock=${LOCK_FILE_DIR}/${CONFIG}_rule_update.lock
sub_lock=${LOCK_FILE_DIR}/${CONFIG}_subscribe.lock
for i in $(seq 1 300); do
if [ ! -f "$rule_lock" ] && [ ! -f "$sub_lock" ]; then
break
fi
sleep 2
done
rm -f "$rule_lock" "$sub_lock"
$APP_FILE stop
$APP_FILE start $1
unset_lock
@@ -1558,7 +1558,7 @@ start_dns() {
start_adblock() {
[ "$(config_t_get global adblock 0)" != "1" ] && {
[ -s $RULES_PATH/my_block_host ] && ln -sf $RULES_PATH/my_block_host $RULES_PATH/block_host
[ -s $RULES_PATH/my_block_host ] && ln -sf $RULES_PATH/my_block_host $RULES_PATH/block_host || echo "" >$RULES_PATH/block_host
return
}
"$APP_PATH/adblock.sh" > /dev/null 2>&1 &
@@ -669,6 +669,34 @@ if geo2rule ~= "1" and gfwlist_update == "0" and chnroute_update == "0" and chnr
os.exit(0)
end
local function check_instance(action)
local rule_lock = "/var/lock/" .. name .. "_rule_update.lock"
local sub_lock = "/var/lock/" .. name .. "_subscribe.lock"
if action == "start" then
math.randomseed(os.time() + math.floor(os.clock() * 1000))
api.nixio.nanosleep(0, math.random(100, 1000) * 1000000)
if fs.access(rule_lock) then
log("有[规则更新]实例正在运行,请稍后再试...\n")
os.exit(0)
else
luci.sys.call("touch " .. rule_lock)
end
elseif action == "end" then
luci.sys.call("rm -f " .. rule_lock)
return
end
if fs.access(sub_lock) then
log("[订阅]实例正在运行,[规则更新]进入队列等待...\n")
end
while fs.access(sub_lock) do
api.nixio.nanosleep(2, 0)
end
end
check_instance("start")
log("开始更新规则...")
local function safe_call(func, err_msg)
xpcall(func, function(e)
@@ -769,3 +797,5 @@ if reboot == 1 then
api.uci_save(uci, name, true, true)
end
log("规则更新完毕...\n")
check_instance("end")
@@ -2174,20 +2174,30 @@ local execute = function()
end
end
function check_instance(action)
local lock_file = "/var/lock/" .. appname .. "_subscribe.lock"
local function check_instance(action)
local sub_lock = "/var/lock/" .. appname .. "_subscribe.lock"
local rule_lock = "/var/lock/" .. appname .. "_rule_update.lock"
if action == "start" then
math.randomseed(os.time() + math.floor(os.clock() * 1000))
api.nixio.nanosleep(0, math.random(100, 1000) * 1000000)
if fs.access(lock_file) then
log("有订阅实例正在运行,请稍后再试...\n")
if fs.access(sub_lock) then
log("有[订阅]实例正在运行,请稍后再试...\n")
os.exit(0)
else
luci.sys.call("touch " .. lock_file)
luci.sys.call("touch " .. sub_lock)
uci:revert(appname)
end
elseif action == "end" then
luci.sys.call("rm -f " .. lock_file)
luci.sys.call("rm -f " .. sub_lock)
return
end
if fs.access(rule_lock) then
log("[规则更新]实例正在运行,[订阅]进入队列等待...\n")
end
while fs.access(rule_lock) do
api.nixio.nanosleep(2, 0)
end
end