From c261d27b80bb562aa34813772f7b5fe74fa3e245 Mon Sep 17 00:00:00 2001 From: hacker07 Date: Tue, 13 Oct 2026 23:34:02 +0300 Subject: [PATCH] =?UTF-8?q?v1.2.16:=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0?= =?UTF-8?q?=D1=89=D1=91=D0=BD=20ask=5Fyes;=20=D0=B3=D0=B5=D0=B9=D1=82=20?= =?UTF-8?q?=D0=BD=D0=B0=20=C2=AB=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B0=D0=BD=D1=8C=D1=88=D0=B5?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2=D0=B0=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FORK-CHANGELOG.md | 10 ++++++++++ VERSION | 2 +- scripts/3x-ui-local.sh | 12 +++++++++++- scripts/3x-ui.sh | 2 +- scripts/hysteria2.sh | 2 +- scripts/kit.sh | 2 +- tools/release.sh | 10 ++++++++++ 7 files changed, 35 insertions(+), 5 deletions(-) diff --git a/FORK-CHANGELOG.md b/FORK-CHANGELOG.md index d2edaa3..3a60cec 100644 --- a/FORK-CHANGELOG.md +++ b/FORK-CHANGELOG.md @@ -1,3 +1,13 @@ +## v1.2.16: возвращён ask_yes (вылезало «command not found» при установке) + +* При переносе вопросов наверх (v1.2.13) потерялось определение функции `ask_yes` — установщик + писал `ask_yes: command not found` на двух строках и молча брал значения по умолчанию: + ping оставался открытым, автообновления выключались. Скрипт при этом не падал, поэтому + ошибку было видно, но установку она не срывала. +* Почему не поймали: гейт в релизе прогонял только `--dry-run`, а он выходит ДО вопросов. + Добавлена статическая проверка: каждая наша функция должна быть определена раньше первого + вызова (`ask_yes`, `ask_ssh_port`, `ask_protocols`, `interactive`, `clean_previous` и др.). + ## v1.2.15: меню выбора сайта в вашем виде, быстрый скан, снос с добивкой * Меню маскировки выглядит так, как и просили. Если соседи нашлись — их список по номерам, diff --git a/VERSION b/VERSION index 1fc5b82..f69752a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.15 +1.2.16 diff --git a/scripts/3x-ui-local.sh b/scripts/3x-ui-local.sh index e9cb350..851bdd3 100644 --- a/scripts/3x-ui-local.sh +++ b/scripts/3x-ui-local.sh @@ -44,7 +44,7 @@ set -Eeuo pipefail -KIT_VERSION="1.2.15" # версия сборки форка; должна совпадать с VERSION релиза +KIT_VERSION="1.2.16" # версия сборки форка; должна совпадать с VERSION релиза GITEA="${KIT_FORK_BASE:-https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS}" NS="3x-ui-kit-release" SIG_ID="releases@3x-ui-kit" @@ -351,6 +351,16 @@ say "протоколы: $protos — под остальные не создаё # После установщика на экране появляются доступы к панели: там вопросы уже неуместны. Поэтому # спрашиваем всё заранее, а действия выполняем после установки (см. «наши дополнения» ниже). +ask_yes() { # "вопрос" y|n — по умолчанию + local q=$1 def=$2 ans="" + interactive || { [[ $def == y ]]; return; } + printf '\n%s [%s]: ' "$q" "$([[ $def == y ]] && echo 'Y/n' || echo 'y/N'])" + read -r -t 300 ans <"$ASK_SRC" 2>/dev/null || true + ans=${ans,,}; ans=${ans//[[:space:]]/} + [[ -z $ans && $def == y ]] && return 0 + [[ $ans =~ ^(y|yes|д|да)$ ]] +} + # порт SSH: по флагу или по вопросу. Смена делается в два шага: сначала ДОБАВИТЬ новый порт # (прежний продолжает работать), потом закрыть прежние — иначе одна опечатка оставляет сервер без доступа. ssh_ports_now() { diff --git a/scripts/3x-ui.sh b/scripts/3x-ui.sh index 1b04ebe..b8fc56f 100755 --- a/scripts/3x-ui.sh +++ b/scripts/3x-ui.sh @@ -30,7 +30,7 @@ wait_apt_idle() { XUI_VERSION="v3.9.0" # SHA256 установщика 3X-UI этой версии: тег могут передвинуть, а хеш – нет (проверено 2026-09-30). XUI_INSTALL_SHA256="18616fe26c8f6c92db6daa2dcd7cd53c5143ee69ecfd26d8ea6dc9b2c78607a6" -KIT_VERSION="1.2.15" +KIT_VERSION="1.2.16" # kit и kit-sub берём из того же релиза, что и этот скрипт, а не из меняющейся ветки main. KIT_RAW="https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/tag/v$KIT_VERSION" # Ядро Xray для панели. С 26.7.x клиенты на Mihomo и sing-box (Hiddify, FlClash, diff --git a/scripts/hysteria2.sh b/scripts/hysteria2.sh index 6c9ef8d..d7074eb 100755 --- a/scripts/hysteria2.sh +++ b/scripts/hysteria2.sh @@ -8,7 +8,7 @@ # Код выхода 1 при любом запуске (и при `__update_binary`) – старый `hy2 update` на нём # останавливается и не заменяет команду hy2. -KIT_VERSION="1.2.15" +KIT_VERSION="1.2.16" cat >&2 <<'MSG' Отдельный установщик Hysteria2 больше не поддерживается. diff --git a/scripts/kit.sh b/scripts/kit.sh index dcdc500..9a57077 100644 --- a/scripts/kit.sh +++ b/scripts/kit.sh @@ -12,7 +12,7 @@ set -Eeuo pipefail export LC_ALL=C.UTF-8 # ширина колонок по символам, а не байтам -KIT_VERSION="1.2.15" +KIT_VERSION="1.2.16" KIT_RAW="https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/branch/main" # Файлы новой версии берём из её тега, а не из меняющейся ветки main. kit_ref_raw() { echo "https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/tag/v$1"; } diff --git a/tools/release.sh b/tools/release.sh index bfb4bc4..b5467ab 100755 --- a/tools/release.sh +++ b/tools/release.sh @@ -48,6 +48,16 @@ if grep -qE "command not found|syntax error|bad substitution" <<<"$err"; then fi ok "Установщик не ругается на пустые строки и опечатки" +# Наши функции в установщике обязаны быть определены РАНЬШЕ первого вызова: `bash -n` и холостой +# прогон этого не видят, а человек видит «command not found» посреди установки (так и было 13.10). +for fn in ask_yes ask_ssh_port ssh_ports_now ask_protocols proto_parse proto_menu interactive clean_previous installer_failed; do + d=$(grep -n "^$fn()" scripts/3x-ui-local.sh | head -1 | cut -d: -f1) + c=$(grep -n "^[^#]*[^a-z_]$fn[ ;\"]" scripts/3x-ui-local.sh | grep -v "^$d:" | head -1 | cut -d: -f1) + [[ -n $d ]] || die "scripts/3x-ui-local.sh: функция $fn не определена, а вызывается" + [[ -z $c || $c -gt $d ]] || die "scripts/3x-ui-local.sh: $fn вызывается (строка $c) раньше, чем определена ($d)" +done +ok "Все наши функции определены раньше своих вызовов" + [[ -z $(git status --porcelain -- "${FILES[@]}" CHANGELOG.md FORK-CHANGELOG.md) ]] || die "Есть незакоммиченные изменения в файлах релиза – сначала коммит." # Установщик 3X-UI: хеш в скрипте должен совпадать с тем, что сейчас лежит на GitHub.