From 70e2a499c72ba69a3fb215213b33680b749971ff Mon Sep 17 00:00:00 2001 From: hacker07 Date: Mon, 12 Oct 2026 19:40:04 +0300 Subject: [PATCH] =?UTF-8?q?v1.2.5:=20=D1=81=D1=83=D0=BC=D0=BC=D1=8B=20?= =?UTF-8?q?=D1=80=D0=B5=D0=BB=D0=B8=D0=B7=D0=B0=20=D0=B2=20POSIX-=D0=B2?= =?UTF-8?q?=D0=B8=D0=B4=D0=B5=20(=D0=B1=D0=B5=D0=B7=20=D0=B7=D0=B2=D1=91?= =?UTF-8?q?=D0=B7=D0=B4=D0=BE=D1=87=D0=BA=D0=B8)=20=E2=80=94=20kit=20?= =?UTF-8?q?=D1=81=D0=B2=D0=B5=D1=80=D1=8F=D0=B5=D1=82=20=D0=B8=D0=BC=D1=8F?= =?UTF-8?q?=20=D1=81=D1=82=D1=80=D0=BE=D0=B3=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FORK-CHANGELOG.md | 11 +++++++++++ VERSION | 2 +- scripts/3x-ui-local.sh | 4 ++-- scripts/3x-ui.sh | 2 +- scripts/hysteria2.sh | 2 +- scripts/kit.sh | 2 +- tools/fork_apply.py | 7 +++++++ tools/release.sh | 2 +- 8 files changed, 25 insertions(+), 7 deletions(-) diff --git a/FORK-CHANGELOG.md b/FORK-CHANGELOG.md index 7ec3cf8..c774a02 100644 --- a/FORK-CHANGELOG.md +++ b/FORK-CHANGELOG.md @@ -3,6 +3,17 @@ Здесь записи о наших версиях. Файл автора (`CHANGELOG.md`) мы не трогаем — так обновления автора не конфликтуют с нашими записями. +## v1.2.5: суммы релиза в формате, который понимает kit + +* Исправлена ошибка нашего релизного конвейера: на Windows `sha256sum` пишет суммы как + `hash *файл`, а `kit` на сервере сверяет имя строго (`$2 == "файл"`) — то есть `kit update` + отклонил бы релизы v1.2.1–v1.2.4 как «в подписанном списке нет такого файла». Теперь + `tools/release.sh` приводит список к POSIX-виду (`hash файл`) **до** подписи. +* `scripts/3x-ui-local.sh` принимает оба формата, чтобы не спотыкаться о суммы, собранные на + другой машине. +* Проверка теперь повторяет логику самого `kit`: подпись `SHA256SUMS` + строгая сверка имени + каждого файла из подписанного списка (а не только `sha256sum -c`, который звёздочку прощает). + ## v1.2.4: проверка релиза отдельной командой * Флаг `--verify-only`: скачать релиз, проверить подпись `SHA256SUMS` и SHA256 установщика и выйти — diff --git a/VERSION b/VERSION index e8ea05d..c813fe1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.4 +1.2.5 diff --git a/scripts/3x-ui-local.sh b/scripts/3x-ui-local.sh index 8332aef..dfadac7 100644 --- a/scripts/3x-ui-local.sh +++ b/scripts/3x-ui-local.sh @@ -28,7 +28,7 @@ set -Eeuo pipefail -KIT_VERSION="1.2.4" # версия сборки форка; должна совпадать с VERSION релиза +KIT_VERSION="1.2.5" # версия сборки форка; должна совпадать с VERSION релиза GITEA="${KIT_FORK_BASE:-https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS}" NS="3x-ui-kit-release" SIG_ID="releases@3x-ui-kit" @@ -121,7 +121,7 @@ done printf '%s namespaces="%s" %s\n' "$SIG_ID" "$NS" "$SIGNER_PUB" >"$tmp/allowed_signers" ssh-keygen -Y verify -f "$tmp/allowed_signers" -I "$SIG_ID" -n "$NS" -s "$tmp/SHA256SUMS.sig" <"$tmp/SHA256SUMS" >/dev/null 2>&1 \ || die "подпись релиза v$KIT_VERSION не сошлась с ключом форка — это не наш релиз, ничего не запускаю" -sum=$(awk '$2 == "scripts/3x-ui.sh" {print $1}' "$tmp/SHA256SUMS") +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 установщика не совпал с подписанным — не запускаю" diff --git a/scripts/3x-ui.sh b/scripts/3x-ui.sh index 8668283..6016019 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.4" +KIT_VERSION="1.2.5" # 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 ce09260..d22d552 100755 --- a/scripts/hysteria2.sh +++ b/scripts/hysteria2.sh @@ -8,7 +8,7 @@ # Код выхода 1 при любом запуске (и при `__update_binary`) – старый `hy2 update` на нём # останавливается и не заменяет команду hy2. -KIT_VERSION="1.2.4" +KIT_VERSION="1.2.5" cat >&2 <<'MSG' Отдельный установщик Hysteria2 больше не поддерживается. diff --git a/scripts/kit.sh b/scripts/kit.sh index 81f314d..26665e2 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.4" +KIT_VERSION="1.2.5" 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/fork_apply.py b/tools/fork_apply.py index 88d5d5e..37ed9a2 100644 --- a/tools/fork_apply.py +++ b/tools/fork_apply.py @@ -172,6 +172,13 @@ def main(): "FILES=(scripts/3x-ui.sh scripts/hysteria2.sh scripts/kit.sh scripts/kit-sub.py scripts/kit-local.sh scripts/3x-ui-local.sh VERSION)", "наш файл в подписанном списке релиза", ), + ( + "tools/release.sh", + '{ echo "# 3X-UI KIT $v"; sha "${FILES[@]}"; } >SHA256SUMS', + False, + "{ echo \"# 3X-UI KIT $v\"; sha \"${FILES[@]}\" | awk '{ sub(/^\\*/, \"\", $2); print $1\" \"$2 }'; } >SHA256SUMS", + "суммы в POSIX-виде без звёздочки (на Windows sha256sum её ставит, и kit её не понимает)", + ), # --- свои записи о версии (наш файл, авторский CHANGELOG не трогаем) ---- ( "tools/release.sh", diff --git a/tools/release.sh b/tools/release.sh index 10faf5c..69c0929 100755 --- a/tools/release.sh +++ b/tools/release.sh @@ -70,7 +70,7 @@ pub=$(ssh-keygen -y -f "$key" | awk '{print $1, $2}') signers scripts/kit.sh | awk '{print $1, $2}' | grep -qxF "$pub" || die "Ключа $key нет в KIT_SIGNERS – серверы не примут такую подпись." ok "Ключ подписи записан в kit" -{ echo "# 3X-UI KIT $v"; sha "${FILES[@]}"; } >SHA256SUMS +{ echo "# 3X-UI KIT $v"; sha "${FILES[@]}" | awk '{ sub(/^\*/, "", $2); print $1" "$2 }'; } >SHA256SUMS rm -f SHA256SUMS.sig ssh-keygen -Y sign -f "$key" -n "$NS" SHA256SUMS >/dev/null tmp=$(mktemp)