From 7cc7e684d5c2ca2e29e2b15b6edde8fe42331f5f Mon Sep 17 00:00:00 2001 From: hacker07 Date: Mon, 12 Oct 2026 21:16:00 +0300 Subject: [PATCH] =?UTF-8?q?v1.2.7:=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=86?= =?UTF-8?q?=D0=B5=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8?= =?UTF-8?q?=20=E2=80=94=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= =?UTF-8?q?,=20QR-=D0=BA=D0=BE=D0=B4=20=D0=B8=20=D1=81=D1=81=D1=8B=D0=BB?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D0=BF=D1=80=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=BA=D0=BE=D0=BB=D0=B0=D0=BC=20(--no-sub);=20=D1=80=D0=B0?= =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=BE?= =?UTF-8?q?=D0=B7=D0=B2=D1=80=D0=B0=D1=89=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B0?= =?UTF-8?q?=2003:30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/fork-sync.yml | 2 +- FORK-CHANGELOG.md | 6 ++++++ VERSION | 2 +- scripts/3x-ui-local.sh | 31 +++++++++++++++++++++++++++++-- scripts/3x-ui.sh | 2 +- scripts/hysteria2.sh | 2 +- scripts/kit.sh | 2 +- 7 files changed, 40 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/fork-sync.yml b/.gitea/workflows/fork-sync.yml index 3bbca8b..2feaf87 100644 --- a/.gitea/workflows/fork-sync.yml +++ b/.gitea/workflows/fork-sync.yml @@ -8,7 +8,7 @@ name: Синхронизация с автором on: schedule: - - cron: "*/5 * * * *" # ВРЕМЕННО: проверка планировщика + - cron: "30 3 * * *" # каждую ночь в 03:30 по времени сервера Gitea workflow_dispatch: {} push: paths: diff --git a/FORK-CHANGELOG.md b/FORK-CHANGELOG.md index 7eff78f..7968a60 100644 --- a/FORK-CHANGELOG.md +++ b/FORK-CHANGELOG.md @@ -10,6 +10,12 @@ канал обновлений и оговорки. Две картинки — наши (`manuals/assets/fork-banner.svg` и `manuals/assets/script-3x-ui-local.svg`, терминал собран из настоящего вывода скрипта). * Шов в README больше не нужен (`tools/fork_apply.py`): файл наш целиком, как `kit-local.sh`. +## v1.2.7: подписка и QR-код в конце установки + +* В самом конце установки (после всех проверок) печатается то, что нужно сохранить: **подписка + с QR-кодом** и ссылки по протоколам — авторской командой `kit user link <имя> --all`, поэтому + вывод совпадает с тем, что показывает `kit` потом. Отключается флагом `--no-sub`. + * Набор по умолчанию — **REALITY + AmneziaWG-3.1** (самый совместимый минимум); ответ «все» ставит полный набор автора. Умолчание задаётся в одном месте (`DEFAULT_PROTOS`). * **Сайт-заглушка переделан на ИТ-тематику:** десять правдоподобных сайтов (дата-аналитика, DevOps, diff --git a/VERSION b/VERSION index 3c43790..c04c650 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.6 +1.2.7 diff --git a/scripts/3x-ui-local.sh b/scripts/3x-ui-local.sh index 4773bc1..c099248 100644 --- a/scripts/3x-ui-local.sh +++ b/scripts/3x-ui-local.sh @@ -14,7 +14,8 @@ # 6) спрашивает и делает то, чего у автора нет: закрыть ответ на ping, включить обновления # безопасности, перевести SSH на другой порт, сменить пароль root (поведение из StressOzz/vps-setup, # но безопаснее); -# 7) в конце: kit fix (время и безопасные починки), kit check, kit local hardening. +# 7) в конце: kit fix (время и безопасные починки), kit check, kit local hardening; +# 8) последним — подписка, QR-код и ссылки по протоколам: то, что нужно сохранить. # # Запуск: # # одна команда, дальше — вопросы: @@ -41,7 +42,7 @@ set -Eeuo pipefail -KIT_VERSION="1.2.6" # версия сборки форка; должна совпадать с VERSION релиза +KIT_VERSION="1.2.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" @@ -77,6 +78,7 @@ usage() { --yes ни о чём не спрашивать (для автоматизации) --site N|random|off сайт-заглушка: конкретный из нашего набора, случайный (по умолчанию) или не трогать авторскую страницу (то же: --no-site) + --no-sub не показывать в конце подписку, QR-код и ссылки по протоколам --no-time не запускать kit fix (время и безопасные починки) --no-check не запускать в конце kit check --verify-only только проверить релиз (подпись и SHA256) и выйти @@ -89,6 +91,7 @@ EOF INSTALLER_ARGS=(); harden=auto; ssh_port=""; fix_time=yes; do_check=yes; dry=no; verify_only=no; assume_yes=no site=random # заглушка: случайный сайт из нашего набора (off — не трогать) +show_sub=yes # в самом конце показать подписку, QR-код и ссылки while (($#)); do case $1 in --harden) harden=yes ;; @@ -99,6 +102,7 @@ while (($#)); do --site) site=${2:-random}; shift || die "--site: нужен номер сайта (1..10), random или off" ;; --site=*) site=${1#*=} ;; --no-site) site=off ;; + --no-sub) show_sub=no ;; --no-time) fix_time=no ;; --no-check) do_check=no ;; --verify-only) verify_only=yes ;; @@ -149,6 +153,7 @@ if [[ $dry == yes ]]; then esac [[ $fix_time == yes ]] && pre "после: kit fix (время, безопасные починки)" [[ $do_check == yes ]] && pre "проверка: kit check + kit local hardening" + [[ $show_sub == yes ]] && pre "в самом конце: подписка, QR-код и ссылки по протоколам (--no-sub — не надо)" echo say "запуск без --dry-run выполнит всё это на сервере" exit 0 @@ -411,3 +416,25 @@ ${G}${B}Готово.${N} Сервер поставлен из нашей сбо если что-то не так: kit check --deep, затем kit fix вернуться к авторскому каналу: положить авторский kit поверх и выполнить kit update --force EOF + +# ------------------------------------------------------------------ подписка, QR-код и доступы + +# Показываем в самом конце, после всех проверок: это то, что человек уносит с собой. +# Печатает авторская команда (подписка + QR-код через qrencode + ссылки по протоколам), +# поэтому вывод не расходится с тем, что показывает `kit` потом. +if [[ $show_sub == yes ]]; then + sub_user=admin + for ((_i = 0; _i < ${#INSTALLER_ARGS[@]}; _i++)); do + [[ ${INSTALLER_ARGS[_i]} == --user ]] && sub_user=${INSTALLER_ARGS[_i + 1]:-admin} + done + say "подписка и доступы — это то, что стоит сохранить" + printf ' подписка — одна ссылка на все устройства; QR-код ниже наводите камерой в приложении\n' + printf ' приложения: Happ, Hiddify, Karing, v2rayN, Clash/Mihomo\n' + printf ' отдельные ссылки по протоколам — ниже же (если приложение не умеет подписку)\n' + printf ' %sпозже то же самое: kit user link %s --all (или меню: kit)%s\n' "$D" "$sub_user" "$N" + if ! kit user link "$sub_user" --all; then + warn "не смог показать ссылки для «$sub_user» — список пользователей: kit user list" + fi +else + say "ссылки и QR-код не показываю (--no-sub). Посмотреть: kit user link admin --all" +fi diff --git a/scripts/3x-ui.sh b/scripts/3x-ui.sh index 932f2eb..c97cd7a 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.6" +KIT_VERSION="1.2.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 dc072c9..2d994d8 100755 --- a/scripts/hysteria2.sh +++ b/scripts/hysteria2.sh @@ -8,7 +8,7 @@ # Код выхода 1 при любом запуске (и при `__update_binary`) – старый `hy2 update` на нём # останавливается и не заменяет команду hy2. -KIT_VERSION="1.2.6" +KIT_VERSION="1.2.7" cat >&2 <<'MSG' Отдельный установщик Hysteria2 больше не поддерживается. diff --git a/scripts/kit.sh b/scripts/kit.sh index e23b0a8..1f2074b 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.6" +KIT_VERSION="1.2.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"; }