This commit is contained in:
StressOzz authored and GitHub committed 2026-09-26 09:11:08 +05:00
1 parent 2e390c3ba8
commit 0a60df09a3
1 file changed
+27 -6
+27 -6
View File
@@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
# Version: 1.60 # Version: 1.61
set -e set -e
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"
@@ -70,7 +70,7 @@ cat > '/opt/zapret-manager-luci/backend.sh' << 'ZM_INSTALLER_EOF'
umask 022 umask 022
CONF="/etc/config/zapret" CONF="/etc/config/zapret"
ZM_VERSION="1.60" ZM_VERSION="1.61"
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"
@@ -5316,8 +5316,10 @@ _st_install_steer() {
return 0 return 0
fi fi
fi fi
local arch tmp base url ver was_on="" local arch tmp base url ver was_on="" old_plain="" dropped=""
command -v steer >/dev/null 2>&1 && /etc/init.d/steer enabled 2>/dev/null && was_on=1 command -v steer >/dev/null 2>&1 && /etc/init.d/steer enabled 2>/dev/null && was_on=1
# Обычный пакет steer конфликтует с steer-extended — его надо убрать перед установкой
command -v steer >/dev/null 2>&1 && ! _st_is_ext && _pkg_is_installed steer && old_plain="$(_st_steer_ver)"
arch="$(_rb_arch)" arch="$(_rb_arch)"
[ -n "$arch" ] || { echo "ОШИБКА: не удалось определить архитектуру роутера"; return 1; } [ -n "$arch" ] || { echo "ОШИБКА: не удалось определить архитектуру роутера"; return 1; }
tmp="$ST_RUN/steer.$RAZ" tmp="$ST_RUN/steer.$RAZ"
@@ -5332,8 +5334,25 @@ _st_install_steer() {
echo "$ver" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$' || continue echo "$ver" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$' || continue
_rb_fetch_pkg "$base/${pkg}-${ver}-1_${arch}.${RAZ}" "$tmp" || continue _rb_fetch_pkg "$base/${pkg}-${ver}-1_${arch}.${RAZ}" "$tmp" || continue
fi fi
if [ -n "$old_plain" ] && [ -z "$dropped" ]; then
# новый пакет уже скачан — только теперь убираем старый; правила Steer сохраняем и возвращаем
_rb_say "Удаляем старый пакет steer $old_plain — он мешает установке steer-extended"
[ -s "$ST_STEER_SPEC" ] && cp -f "$ST_STEER_SPEC" "$ST_RUN/spec.keep"
/etc/init.d/steer stop >/dev/null 2>&1
if ! $DELETE steer >&2; then
rm -f "$tmp" "$ST_RUN/spec.keep"
echo "ОШИБКА: старый пакет steer не удалился — удалите его вручную и повторите"
return 1
fi
dropped=1
fi
if $INSTALL "$tmp" >&2; then if $INSTALL "$tmp" >&2; then
rm -f "$tmp" rm -f "$tmp"
if [ -s "$ST_RUN/spec.keep" ]; then
mkdir -p "$(dirname "$ST_STEER_SPEC")"
cp -f "$ST_RUN/spec.keep" "$ST_STEER_SPEC"
rm -f "$ST_RUN/spec.keep"
fi
_st_own "pkg steer" _st_own "pkg steer"
_st_own "pkg steer-extended" _st_own "pkg steer-extended"
_st_tun_ensure _st_tun_ensure
@@ -5350,6 +5369,7 @@ _st_install_steer() {
fi fi
done done
rm -f "$tmp" rm -f "$tmp"
[ -n "$dropped" ] && _rb_warn "Старый steer $old_plain уже удалён, а новый не поставился — нажмите установку ещё раз, когда появится интернет"
echo "ОШИБКА: не удалось установить движок Steer" echo "ОШИБКА: не удалось установить движок Steer"
return 1 return 1
} }
@@ -5675,7 +5695,8 @@ _st_warp_ports() { # ИНТЕРФЕЙС КЛЮЧ_УЗЛА АДРЕС
} }
_st_warp_scan() { # ИНТЕРФЕЙС КЛЮЧ_УЗЛА ЗАНЯТЫЕ_КОЛОНИИ ЗАНЯТЫЕ_АДРЕСА [ФАЙЛ_ОБЩЕГО_СПИСКА] _st_warp_scan() { # ИНТЕРФЕЙС КЛЮЧ_УЗЛА ЗАНЯТЫЕ_КОЛОНИИ ЗАНЯТЫЕ_АДРЕСА [ФАЙЛ_ОБЩЕГО_СПИСКА]
local dev="$1" peer="$2" busy=" $3 " busyip=" $4 " r="$ST_RUN/scan.$1" cand ip ports port loss rtt colo pick f cls # $5 запоминаем сразу: ниже «set --» затирает позиционные параметры
local dev="$1" peer="$2" busy=" $3 " busyip=" $4 " pool="$5" r="$ST_RUN/scan.$1" cand ip ports port loss rtt colo pick f cls
mkdir -p "$ST_RUN" mkdir -p "$ST_RUN"
: > "$r"; : > "$r.same"; : > "$r.nc"; : > "$r.ru"; : > "$r.notls" : > "$r"; : > "$r.same"; : > "$r.nc"; : > "$r.ru"; : > "$r.notls"
cand=$(awk -v p="$ST_WARP_POOLS" -v n="$ST_WARP_RAND" 'BEGIN { srand(); c = split(p, a, " "); cand=$(awk -v p="$ST_WARP_POOLS" -v n="$ST_WARP_RAND" 'BEGIN { srand(); c = split(p, a, " ");
@@ -5711,12 +5732,12 @@ _st_warp_scan() { # ИНТЕРФЕЙС КЛЮЧ_УЗЛА ЗАНЯТЫЕ_КОЛО
done done
# Все найденные точки — в общий список, лучшие первыми: остальные туннели возьмут точки # Все найденные точки — в общий список, лучшие первыми: остальные туннели возьмут точки
# оттуда, без своей разведки (точка входа не зависит от ключей WARP) # оттуда, без своей разведки (точка входа не зависит от ключей WARP)
if [ -n "$5" ]; then if [ -n "$pool" ]; then
for f in "$r" "$r.same" "$r.nc" "$r.ru" "$r.notls"; do for f in "$r" "$r.same" "$r.nc" "$r.ru" "$r.notls"; do
[ -s "$f" ] || continue [ -s "$f" ] || continue
case "$f" in *.nc) cls=1 ;; *.ru) cls=2 ;; *.notls) cls=3 ;; *) cls=0 ;; esac case "$f" in *.nc) cls=1 ;; *.ru) cls=2 ;; *.notls) cls=3 ;; *) cls=0 ;; esac
awk -v c="$cls" '{ printf "%d %s %s %s\n", c * 100000000 + $1 * 100000 + $2, $3, $4, $5 }' "$f" awk -v c="$cls" '{ printf "%d %s %s %s\n", c * 100000000 + $1 * 100000 + $2, $3, $4, $5 }' "$f"
done | sort -n | awk '{ print $2, $3, $4, $1 }' > "$5" done | sort -n | awk '{ print $2, $3, $4, $1 }' > "$pool"
fi fi
for f in "$r" "$r.same" "$r.nc" "$r.ru" "$r.notls"; do for f in "$r" "$r.same" "$r.nc" "$r.ru" "$r.notls"; do
[ -s "$f" ] || continue [ -s "$f" ] || continue