From 915dd35f42ef421c3149705ba56cf9afe13a7776 Mon Sep 17 00:00:00 2001 From: hacker07 Date: Wed, 14 Oct 2026 18:03:57 +0300 Subject: [PATCH] =?UTF-8?q?v1.2.1.7:=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BF=D0=BE=D1=80=D1=8F?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=20=E2=80=94=20=D1=81=D0=BD=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BA=D0=B0=D1=87=D0=B0=D0=B5=D0=BC=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D1=80=D0=B5?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=B0,=20=D0=BF=D0=BE=D1=82=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D0=B5=D0=BC=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D1=89=D0=B8=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FORK-CHANGELOG.md | 10 ++++++++++ FORK.md | 4 ++++ VERSION | 2 +- scripts/3x-ui-local.sh | 14 +++++++------- scripts/3x-ui.sh | 2 +- scripts/hysteria2.sh | 2 +- scripts/kit.sh | 2 +- 7 files changed, 25 insertions(+), 11 deletions(-) diff --git a/FORK-CHANGELOG.md b/FORK-CHANGELOG.md index 157a069..cc36851 100644 --- a/FORK-CHANGELOG.md +++ b/FORK-CHANGELOG.md @@ -1,3 +1,13 @@ +## v1.2.1.7: исправлена установка (моя регрессия в 1.2.1.6) + +* В 1.2.1.6 я переписал загрузку файлов релиза и оставил проверку SHA256 установщика **раньше** + скачивания — установка обрывалась на первой же строке: `sha256sum: .../scripts/3x-ui.sh: No such file + or directory`. Теперь сначала скачиваются все файлы релиза (каждый сверяется с подписанным списком), + и только потом проверяется установщик. +* Проверено не на глаз: воспроизвёл ошибку у себя тем же путём (`--verify-only`) — красное, затем после + правки зелёное. Этот прогон добавлен в процедуру выпуска: перед подписью я запускаю установщик в режиме + `--verify-only` и убеждаюсь, что путь «скачать и проверить релиз» проходит целиком. + ## v1.2.1.6: доступы к панели в конце установки и рабочая заглушка * **Исправлено: доступы к панели не выводились.** Автор пишет строки в `/root/3x-ui.txt` без ведущих diff --git a/FORK.md b/FORK.md index dbfe1d2..f01eaf3 100644 --- a/FORK.md +++ b/FORK.md @@ -191,6 +191,10 @@ bash tools/fork-sync.sh # подтянуть автора, перен bash tools/release.sh ~/.ssh/3x-ui-kit-fork/release_key # SHA256SUMS + подпись нашим ключом +**Перед подписью — обязательный прогон.** `bash scripts/3x-ui-local.sh --verify-only` проверяет ровно тот +путь установки, которым пойдут серверы: скачивание всех файлов релиза и сверка каждого с подписанным +списком. На Windows запускать с `TMPDIR=C:/…` (нативные утилиты не понимают MSYS-пути). + **Нумерация версий.** Основа — версия автора, наша надстройка добавляется через точку с единицы: у автора 1.2.1 → наша сборка 1.2.1.1; вышла его 1.2.2 → наша 1.2.2.1. Так на сервере всегда видно, на чьей базе собрана сборка. diff --git a/VERSION b/VERSION index a82bcc4..33e3edc 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.1.6 +1.2.1.7 diff --git a/scripts/3x-ui-local.sh b/scripts/3x-ui-local.sh index 42dc589..ac6e09c 100644 --- a/scripts/3x-ui-local.sh +++ b/scripts/3x-ui-local.sh @@ -44,7 +44,7 @@ set -Eeuo pipefail -KIT_VERSION="1.2.1.6" # версия сборки форка; должна совпадать с VERSION релиза +KIT_VERSION="1.2.1.7" # версия сборки форка; должна совпадать с VERSION релиза GITEA="${KIT_FORK_BASE:-https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS}" NS="3x-ui-kit-release" SIG_ID="releases@3x-ui-kit" @@ -188,19 +188,19 @@ ssh-keygen -Y verify -f "$tmp/allowed_signers" -I "$SIG_ID" -n "$NS" -s "$tmp/SH || die "подпись релиза v$KIT_VERSION не сошлась с ключом форка — это не наш релиз, ничего не запускаю" sum=$(awk '{f = $2; sub(/^\*/, "", f)} f == "scripts/3x-ui.sh" {print $1}' "$tmp/SHA256SUMS") [[ $(printf '%s' "$sum" | wc -c) -eq 64 ]] || die "в SHA256SUMS нет установщика — релиз собран неверно" -got=$(sha256sum "$tmp/scripts/3x-ui.sh" | awk '{print $1}') -[[ $got == "$sum" ]] || die "SHA256 установщика не совпал с подписанным — не запускаю" -# Качаем все остальные файлы релиза и сверяем каждый с подписанным списком. Раньше брали только -# установщик, поэтому kit-local.sh (в нём наша страница-заглушка) отсутствовал, и подготовка -# заглушки до установщика падала с «kl_site_html: command not found». +# Качаем ВСЕ файлы релиза и сверяем каждый с подписанным списком. Так у нас есть и scripts/3x-ui.sh +# (установщик), и scripts/kit-local.sh (наша страница-заглушка), и всё остальное. Раньше брали только +# установщик: заглушка не готовилась («kl_site_html: command not found»), а проверка целостности была неполной. while read -r sum2 name2; do case $sum2 in \#* | "") continue ;; esac - [[ $name2 == scripts/3x-ui.sh ]] && continue + case $name2 in SHA256SUMS | SHA256SUMS.sig) continue ;; esac mkdir -p "$tmp/$(dirname "$name2")" curl -fsSL --retry 3 -m 60 -o "$tmp/$name2" "$raw/$name2" || die "не скачался $name2 из $raw (Gitea доступна с сервера?)" got2=$(sha256sum "$tmp/$name2" | awk '{print $1}') [[ $got2 == "$sum2" ]] || die "SHA256 не совпал у $name2 — не запускаю" done <"$tmp/SHA256SUMS" +got=$(sha256sum "$tmp/scripts/3x-ui.sh" | awk '{print $1}') +[[ $got == "$sum" ]] || die "SHA256 установщика не совпал с подписанным — не запускаю" bash -n "$tmp/scripts/3x-ui.sh" || die "установщик не проходит проверку синтаксиса" [[ -r $tmp/scripts/kit-local.sh ]] || die "в релизе нет scripts/kit-local.sh — сборка неполная" printf ' ✓ подпись сошлась, SHA256 установщика совпал\n' diff --git a/scripts/3x-ui.sh b/scripts/3x-ui.sh index 773849e..318a87f 100755 --- a/scripts/3x-ui.sh +++ b/scripts/3x-ui.sh @@ -39,7 +39,7 @@ wait_apt_idle() { XUI_VERSION="v3.9.0" # SHA256 установщика 3X-UI этой версии: тег могут передвинуть, а хеш – нет (проверено 2026-09-30). XUI_INSTALL_SHA256="18616fe26c8f6c92db6daa2dcd7cd53c5143ee69ecfd26d8ea6dc9b2c78607a6" -KIT_VERSION="1.2.1.6" +KIT_VERSION="1.2.1.7" # 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 82ce4ea..c3a5b73 100755 --- a/scripts/hysteria2.sh +++ b/scripts/hysteria2.sh @@ -8,7 +8,7 @@ # Код выхода 1 при любом запуске (и при `__update_binary`) – старый `hy2 update` на нём # останавливается и не заменяет команду hy2. -KIT_VERSION="1.2.1.6" +KIT_VERSION="1.2.1.7" cat >&2 <<'MSG' Отдельный установщик Hysteria2 больше не поддерживается. diff --git a/scripts/kit.sh b/scripts/kit.sh index d7dff87..55c8e6f 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.1.6" +KIT_VERSION="1.2.1.7" 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"; }