Update version to 2.56 and add fk-guard to skips
This commit is contained in:
1 parent
0ed03f90e5
commit
cd4b9fe78a
1 file changed
+51
-8
+51
-8
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Version: 2.55
|
# Version: 2.56
|
||||||
set -e
|
set -e
|
||||||
clear
|
|
||||||
GREEN="\033[1;32m"; CYAN="\033[1;36m"; YELLOW="\033[1;33m"; MAGENTA="\033[1;35m"; BLUE="\033[0;34m"; NC="\033[0m"; DGRAY="\033[38;5;244m"
|
GREEN="\033[1;32m"; CYAN="\033[1;36m"; YELLOW="\033[1;33m"; MAGENTA="\033[1;35m"; BLUE="\033[0;34m"; NC="\033[0m"; DGRAY="\033[38;5;244m"
|
||||||
|
|
||||||
ZM_NEW_VER="2.55"
|
ZM_NEW_VER="2.56"
|
||||||
_zmi_say() { echo -e "${CYAN}==>${NC} $*"; }
|
_zmi_say() { echo -e "${CYAN}==>${NC} $*"; }
|
||||||
_zmi_ok() { echo -e " ${GREEN}✓${NC} $*"; }
|
_zmi_ok() { echo -e " ${GREEN}✓${NC} $*"; }
|
||||||
_zmi_step() { echo -e " → $*"; }
|
_zmi_step() { echo -e " → $*"; }
|
||||||
@@ -44,7 +44,7 @@ fi
|
|||||||
for _zm_pid in /tmp/zapret-manager-luci/*.pid; do
|
for _zm_pid in /tmp/zapret-manager-luci/*.pid; do
|
||||||
[ -f "$_zm_pid" ] || continue
|
[ -f "$_zm_pid" ] || continue
|
||||||
_zm_job="$(basename "$_zm_pid" .pid)"
|
_zm_job="$(basename "$_zm_pid" .pid)"
|
||||||
case "$_zm_job" in versions|sysinfo|*_download|redbtn_deep) continue ;; esac
|
case "$_zm_job" in versions|sysinfo|*_download|redbtn_deep|fk-guard) continue ;; esac
|
||||||
if kill -0 "$(cat "$_zm_pid" 2>/dev/null)" 2>/dev/null && ! grep -q '^__DONE__' "/tmp/zapret-manager-luci/$_zm_job.log" 2>/dev/null; then
|
if kill -0 "$(cat "$_zm_pid" 2>/dev/null)" 2>/dev/null && ! grep -q '^__DONE__' "/tmp/zapret-manager-luci/$_zm_job.log" 2>/dev/null; then
|
||||||
echo -e "${YELLOW}Сейчас в панели идёт операция ($_zm_job) — дождитесь её окончания и запустите установку снова${NC}"
|
echo -e "${YELLOW}Сейчас в панели идёт операция ($_zm_job) — дождитесь её окончания и запустите установку снова${NC}"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -83,7 +83,7 @@ cat > '/opt/zapret-manager-luci/backend.sh.zm-new' << 'ZM_INSTALLER_EOF'
|
|||||||
umask 022
|
umask 022
|
||||||
|
|
||||||
CONF="/etc/config/zapret"
|
CONF="/etc/config/zapret"
|
||||||
ZM_VERSION="2.55"
|
ZM_VERSION="2.56"
|
||||||
ZM_SCRIPT_URL="https://raw.githubusercontent.com/StressOzz/Zapret-Manager/refs/heads/main/ZapretManager_LuCI.sh"
|
ZM_SCRIPT_URL="https://raw.githubusercontent.com/StressOzz/Zapret-Manager/refs/heads/main/ZapretManager_LuCI.sh"
|
||||||
GH_RAW="https://raw.githubusercontent.com"
|
GH_RAW="https://raw.githubusercontent.com"
|
||||||
GH_MAIN="https://github.com"
|
GH_MAIN="https://github.com"
|
||||||
@@ -854,7 +854,9 @@ zm_watch() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
_zm_job_skip() { case "$1" in versions|sysinfo|*_download|redbtn_deep) return 0 ;; esac; return 1; }
|
# Фоновые сторожа и служебные задачи: это не операции пользователя — они не должны ни блокировать
|
||||||
|
# обновление, установку и перезагрузку, ни попадать под «Остановить все операции».
|
||||||
|
_zm_job_skip() { case "$1" in versions|sysinfo|*_download|redbtn_deep|fk-guard) return 0 ;; esac; return 1; }
|
||||||
|
|
||||||
_zm_cancel_one() {
|
_zm_cancel_one() {
|
||||||
local j="$1" pid log="$JOBS_DIR/$1.log"
|
local j="$1" pid log="$JOBS_DIR/$1.log"
|
||||||
@@ -5014,7 +5016,7 @@ _zm_busy_job() {
|
|||||||
for f in "$JOBS_DIR"/*.pid; do
|
for f in "$JOBS_DIR"/*.pid; do
|
||||||
[ -f "$f" ] || continue
|
[ -f "$f" ] || continue
|
||||||
j="$(basename "$f" .pid)"
|
j="$(basename "$f" .pid)"
|
||||||
case "$j" in versions|sysinfo|*_download|redbtn_deep) continue ;; esac
|
case "$j" in versions|sysinfo|*_download|redbtn_deep|fk-guard) continue ;; esac
|
||||||
_job_running "$j" && { _zm_job_label "$j"; return 0; }
|
_job_running "$j" && { _zm_job_label "$j"; return 0; }
|
||||||
done
|
done
|
||||||
return 1
|
return 1
|
||||||
@@ -8497,6 +8499,14 @@ stl_engine_remove() {
|
|||||||
return $rc
|
return $rc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Пакеты ядра steer, которые сейчас стоят на роутере: ядро, его модули и прежние имена
|
||||||
|
stl_pkgs_installed() {
|
||||||
|
local p m
|
||||||
|
for p in $(for m in $STL_MODS; do echo "steer-$m"; done) steer-extended steer-core steer libsteer libsteer-wolfssl; do
|
||||||
|
_pkg_is_installed "$p" && printf '%s ' "$p"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
stl_leftovers() {
|
stl_leftovers() {
|
||||||
stl_present && return 0
|
stl_present && return 0
|
||||||
local t m n=0
|
local t m n=0
|
||||||
@@ -8508,6 +8518,8 @@ stl_leftovers() {
|
|||||||
done
|
done
|
||||||
killall steerd >/dev/null 2>&1
|
killall steerd >/dev/null 2>&1
|
||||||
rm -rf "$STL_STATE"
|
rm -rf "$STL_STATE"
|
||||||
|
rm -f "$STL_SOCK"
|
||||||
|
rmdir "$STL_ETC" 2>/dev/null
|
||||||
[ "$n" -gt 0 ] && echo " ✓ Убраны оставшиеся правила ядра steer: $n"
|
[ "$n" -gt 0 ] && echo " ✓ Убраны оставшиеся правила ядра steer: $n"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -11342,7 +11354,7 @@ do_steer_warp_recreate() {
|
|||||||
do_steer_remove() {
|
do_steer_remove() {
|
||||||
_st_phase remove
|
_st_phase remove
|
||||||
_rb_say "Удаляем Steer и туннель WARP"
|
_rb_say "Удаляем Steer и туннель WARP"
|
||||||
local foreign="" p pkgs="" rc=0 keepf="$JOBS_DIR/steer.keep.$$" keptif="" kept=0
|
local foreign="" p pkgs="" rc=0 keepf="$JOBS_DIR/steer.keep.$$" keptif="" kept=0 alien="" ownpk=""
|
||||||
case "$(_st_blocker)" in
|
case "$(_st_blocker)" in
|
||||||
splify2) foreign=splify2 ;;
|
splify2) foreign=splify2 ;;
|
||||||
steer) foreign="чужой настройке (правила в $STL_ETC писала не панель)" ;;
|
steer) foreign="чужой настройке (правила в $STL_ETC писала не панель)" ;;
|
||||||
@@ -11354,6 +11366,8 @@ do_steer_remove() {
|
|||||||
else
|
else
|
||||||
_st_spec_clear
|
_st_spec_clear
|
||||||
stl_stop
|
stl_stop
|
||||||
|
# на место вернулись правила, которые были у ядра до панели, — такое ядро не наше
|
||||||
|
[ "$(stl_spec_whose)" = foreign ] && alien=1
|
||||||
fi
|
fi
|
||||||
local wi netrl=0
|
local wi netrl=0
|
||||||
: > "$keepf"
|
: > "$keepf"
|
||||||
@@ -11380,6 +11394,11 @@ do_steer_remove() {
|
|||||||
fi
|
fi
|
||||||
if [ -n "$foreign" ] && grep -qsw -- "$STL_VPN_DEV" "$STL_SPEC" "$STL_YAML"; then :; else _st_vpn_zone off; fi
|
if [ -n "$foreign" ] && grep -qsw -- "$STL_VPN_DEV" "$STL_SPEC" "$STL_YAML"; then :; else _st_vpn_zone off; fi
|
||||||
for p in $(sed -n 's/^pkg \(steer[a-z0-9-]*\)$/\1/p' "$ST_OWNED" 2>/dev/null); do pkgs="$pkgs $p"; done
|
for p in $(sed -n 's/^pkg \(steer[a-z0-9-]*\)$/\1/p' "$ST_OWNED" 2>/dev/null); do pkgs="$pkgs $p"; done
|
||||||
|
# Ядром больше никто не пользуется — убираем его целиком, даже если оно уже стояло до «Установить»
|
||||||
|
# или запись о том, что его ставила панель, потерялась. Иначе Steer «удалён», а ядро остаётся на роутере.
|
||||||
|
if [ -z "$foreign" ] && [ -z "$alien" ]; then
|
||||||
|
for p in $(stl_pkgs_installed); do case " $pkgs " in *" $p "*) ;; *) pkgs="$pkgs $p" ;; esac; done
|
||||||
|
fi
|
||||||
[ -n "$pkgs" ] && { stl_engine_remove $pkgs || rc=1; }
|
[ -n "$pkgs" ] && { stl_engine_remove $pkgs || rc=1; }
|
||||||
_st_owns "pkg conntrack" && { _zm_pkg_purge conntrack || rc=1; }
|
_st_owns "pkg conntrack" && { _zm_pkg_purge conntrack || rc=1; }
|
||||||
if ! uci show network 2>/dev/null | grep -q "\.proto='amneziawg'"; then
|
if ! uci show network 2>/dev/null | grep -q "\.proto='amneziawg'"; then
|
||||||
@@ -11389,6 +11408,8 @@ do_steer_remove() {
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
_rb_rpcd_ensure
|
_rb_rpcd_ensure
|
||||||
|
# что-то не удалилось — запоминаем, какие пакеты ставила панель: иначе повторное «Удалить» их уже не найдёт
|
||||||
|
[ "$rc" = 0 ] || ownpk="$(grep '^pkg ' "$ST_OWNED" 2>/dev/null)"
|
||||||
if [ -n "$foreign" ] && grep -q "^$ST_DIR/" "$keepf" 2>/dev/null; then
|
if [ -n "$foreign" ] && grep -q "^$ST_DIR/" "$keepf" 2>/dev/null; then
|
||||||
find "$ST_DIR" \( -type f -o -type l \) 2>/dev/null | while IFS= read -r p; do grep -qxF "$p" "$keepf" || rm -f "$p"; done
|
find "$ST_DIR" \( -type f -o -type l \) 2>/dev/null | while IFS= read -r p; do grep -qxF "$p" "$keepf" || rm -f "$p"; done
|
||||||
find "$ST_DIR" -depth -type d -exec rmdir {} \; 2>/dev/null
|
find "$ST_DIR" -depth -type d -exec rmdir {} \; 2>/dev/null
|
||||||
@@ -11399,7 +11420,29 @@ do_steer_remove() {
|
|||||||
fi
|
fi
|
||||||
rm -f "$keepf"
|
rm -f "$keepf"
|
||||||
[ -n "$foreign" ] || stl_leftovers
|
[ -n "$foreign" ] || stl_leftovers
|
||||||
|
if [ "$rc" != 0 ]; then
|
||||||
|
# страница должна по-прежнему показывать Steer с кнопкой «Удалить», а не «не установлен»
|
||||||
|
[ -n "$ownpk" ] && { mkdir -p "$ST_DIR"; printf '%s\n' "$ownpk" > "$ST_OWNED"; }
|
||||||
|
stl_present && _st_own "engine"
|
||||||
|
fi
|
||||||
_zm_after_remove "Steer"
|
_zm_after_remove "Steer"
|
||||||
|
if [ "$rc" = 0 ] && [ -n "$alien" ] && stl_present; then
|
||||||
|
_rb_warn "Ядро steer оставлено: в нём правила, которые писала не панель ($STL_ETC)"
|
||||||
|
echo "==> Готово: Steer панели удалён. Ядро steer осталось на роутере — им пользуется чужая настройка"
|
||||||
|
_zm_rb_note
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if [ "$rc" = 0 ] && [ -z "$foreign" ] && stl_present; then
|
||||||
|
_rb_warn "Команда steer всё ещё есть на роутере: $(command -v steer). Она стоит не из пакета — панель её не удаляет"
|
||||||
|
echo "==> Готово: Steer панели удалён, но само ядро steer осталось — см. строку выше"
|
||||||
|
_zm_rb_note
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if [ "$rc" = 0 ] && [ -n "$foreign" ] && [ "${kept:-0}" = 0 ] && [ -z "$keptif" ]; then
|
||||||
|
echo "==> Готово: Steer панели удалён. Ядро steer оставлено — оно нужно $foreign"
|
||||||
|
_zm_rb_note
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
if [ "$rc" = 0 ] && { [ "${kept:-0}" -gt 0 ] || [ -n "$keptif" ]; }; then
|
if [ "$rc" = 0 ] && { [ "${kept:-0}" -gt 0 ] || [ -n "$keptif" ]; }; then
|
||||||
[ "${kept:-0}" -gt 0 ] && _rb_warn "В $ST_DIR оставлено файлов: $kept — на них ссылаются правила ядра steer, которые ведёт $foreign. Без них ядро не запустится"
|
[ "${kept:-0}" -gt 0 ] && _rb_warn "В $ST_DIR оставлено файлов: $kept — на них ссылаются правила ядра steer, которые ведёт $foreign. Без них ядро не запустится"
|
||||||
echo "==> Готово: Steer панели удалён. Оставлено только то, чем пользуется $foreign"
|
echo "==> Готово: Steer панели удалён. Оставлено только то, чем пользуется $foreign"
|
||||||
|
|||||||
Reference in new issue
Block a user