v1.2.19: extra объявлена пустой (set -u валил установку) + правило в FORK.md
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
## v1.2.19: исправлено «extra: unbound variable» при установке
|
||||||
|
|
||||||
|
* На середине установки (после проверки протоколов) скрипт падал: `extra: unbound variable`.
|
||||||
|
Причина — моя правка v1.2.13: присваивание ссылок legacy-подписок завёрнуто в `if`, а переменная
|
||||||
|
объявлялась как `local extra` без значения. Авторский скрипт работает с `set -u`, поэтому при
|
||||||
|
невыполненном условии (AWG и MTProto не выбраны) чтение `$extra` валило установку. Объявлена пустой.
|
||||||
|
* Правило записано в FORK.md: оборачивая авторское присваивание в `if`, объявляй переменную пустой —
|
||||||
|
`local extra=""`, иначе `set -u` обрывает установку на середине.
|
||||||
|
|
||||||
## v1.2.18: выбранный «свой домен» больше не подменяется соседом
|
## v1.2.18: выбранный «свой домен» больше не подменяется соседом
|
||||||
|
|
||||||
* Что было: после выбора «ввести свой домен» установщик всё равно брал запасной сайт из подсети.
|
* Что было: после выбора «ввести свой домен» установщик всё равно брал запасной сайт из подсети.
|
||||||
|
|||||||
@@ -130,6 +130,10 @@ Hysteria2 (UDP 443) работают как работали; исходящий
|
|||||||
(проверка LF, гейт справки, шапка `SHA256SUMS` в двух строках, свой список файлов). Швов к нему нет;
|
(проверка LF, гейт справки, шапка `SHA256SUMS` в двух строках, свой список файлов). Швов к нему нет;
|
||||||
при обновлении из авторского проекта файл конфликтует и решается в нашу пользу (как README).
|
при обновлении из авторского проекта файл конфликтует и решается в нашу пользу (как README).
|
||||||
|
|
||||||
|
Важно при правках швов: авторский скрипт работает с `set -u`, поэтому если оборачивать его присваивание
|
||||||
|
в `if`, переменную нужно объявить пустой (`local extra=""`, а не `local extra`) — иначе при невыполненном
|
||||||
|
условии любое чтение `$extra` валит установку на середине с «unbound variable».
|
||||||
|
|
||||||
Проверка корректности швов (делать после каждой правки и после синхронизации с автором):
|
Проверка корректности швов (делать после каждой правки и после синхронизации с автором):
|
||||||
накатать `tools/fork_apply.py` на чистую копию авторского кода и сверить с нашим деревом — расхождений
|
накатать `tools/fork_apply.py` на чистую копию авторского кода и сверить с нашим деревом — расхождений
|
||||||
быть не должно, кроме наших собственных файлов. Это единственный способ увидеть правки, которых нет в швах.
|
быть не должно, кроме наших собственных файлов. Это единственный способ увидеть правки, которых нет в швах.
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
KIT_VERSION="1.2.18" # версия сборки форка; должна совпадать с VERSION релиза
|
KIT_VERSION="1.2.19" # версия сборки форка; должна совпадать с VERSION релиза
|
||||||
GITEA="${KIT_FORK_BASE:-https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS}"
|
GITEA="${KIT_FORK_BASE:-https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS}"
|
||||||
NS="3x-ui-kit-release"
|
NS="3x-ui-kit-release"
|
||||||
SIG_ID="releases@3x-ui-kit"
|
SIG_ID="releases@3x-ui-kit"
|
||||||
|
|||||||
+2
-2
@@ -30,7 +30,7 @@ wait_apt_idle() {
|
|||||||
XUI_VERSION="v3.9.0"
|
XUI_VERSION="v3.9.0"
|
||||||
# SHA256 установщика 3X-UI этой версии: тег могут передвинуть, а хеш – нет (проверено 2026-09-30).
|
# SHA256 установщика 3X-UI этой версии: тег могут передвинуть, а хеш – нет (проверено 2026-09-30).
|
||||||
XUI_INSTALL_SHA256="18616fe26c8f6c92db6daa2dcd7cd53c5143ee69ecfd26d8ea6dc9b2c78607a6"
|
XUI_INSTALL_SHA256="18616fe26c8f6c92db6daa2dcd7cd53c5143ee69ecfd26d8ea6dc9b2c78607a6"
|
||||||
KIT_VERSION="1.2.18"
|
KIT_VERSION="1.2.19"
|
||||||
# kit и kit-sub берём из того же релиза, что и этот скрипт, а не из меняющейся ветки main.
|
# kit и kit-sub берём из того же релиза, что и этот скрипт, а не из меняющейся ветки main.
|
||||||
KIT_RAW="https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/tag/v$KIT_VERSION"
|
KIT_RAW="https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/tag/v$KIT_VERSION"
|
||||||
# Ядро Xray для панели. С 26.7.x клиенты на Mihomo и sing-box (Hiddify, FlClash,
|
# Ядро Xray для панели. С 26.7.x клиенты на Mihomo и sing-box (Hiddify, FlClash,
|
||||||
@@ -862,7 +862,7 @@ kl_sni_menu() {
|
|||||||
fi
|
fi
|
||||||
links=$(sub_links "$SUBID")
|
links=$(sub_links "$SUBID")
|
||||||
# У установок до kit 1.1 AmneziaWG и MTProto лежат в подписках «-awg» и «-tg».
|
# У установок до kit 1.1 AmneziaWG и MTProto лежат в подписках «-awg» и «-tg».
|
||||||
local extra
|
local extra="" # пустая строка, иначе set -u валит скрипт, когда AWG/MTProto не выбраны
|
||||||
# Наш шов: подписки «-awg»/«-tg» есть только у установок с AmneziaWG и MTProto — не тянем их,
|
# Наш шов: подписки «-awg»/«-tg» есть только у установок с AmneziaWG и MTProto — не тянем их,
|
||||||
# если эти протоколы не выбраны (никаких лишних обращений к панели).
|
# если эти протоколы не выбраны (никаких лишних обращений к панели).
|
||||||
if [[ " ${PROTOS[*]} " == *" awg "* || " ${PROTOS[*]} " == *" awg3 "* || " ${PROTOS[*]} " == *" mtproto "* ]]; then
|
if [[ " ${PROTOS[*]} " == *" awg "* || " ${PROTOS[*]} " == *" awg3 "* || " ${PROTOS[*]} " == *" mtproto "* ]]; then
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
# Код выхода 1 при любом запуске (и при `__update_binary`) – старый `hy2 update` на нём
|
# Код выхода 1 при любом запуске (и при `__update_binary`) – старый `hy2 update` на нём
|
||||||
# останавливается и не заменяет команду hy2.
|
# останавливается и не заменяет команду hy2.
|
||||||
|
|
||||||
KIT_VERSION="1.2.18"
|
KIT_VERSION="1.2.19"
|
||||||
|
|
||||||
cat >&2 <<'MSG'
|
cat >&2 <<'MSG'
|
||||||
Отдельный установщик Hysteria2 больше не поддерживается.
|
Отдельный установщик Hysteria2 больше не поддерживается.
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@
|
|||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
export LC_ALL=C.UTF-8 # ширина колонок по символам, а не байтам
|
export LC_ALL=C.UTF-8 # ширина колонок по символам, а не байтам
|
||||||
|
|
||||||
KIT_VERSION="1.2.18"
|
KIT_VERSION="1.2.19"
|
||||||
KIT_RAW="https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/branch/main"
|
KIT_RAW="https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/branch/main"
|
||||||
# Файлы новой версии берём из её тега, а не из меняющейся ветки main.
|
# Файлы новой версии берём из её тега, а не из меняющейся ветки main.
|
||||||
kit_ref_raw() { echo "https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/tag/v$1"; }
|
kit_ref_raw() { echo "https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/tag/v$1"; }
|
||||||
|
|||||||
+3
-3
@@ -347,10 +347,10 @@ def main():
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
'scripts/3x-ui.sh',
|
'scripts/3x-ui.sh',
|
||||||
' extra=$(sub_links "$SUBID-awg" 1; sub_links "$SUBID-tg" 1)\n',
|
' local extra\n extra=$(sub_links "$SUBID-awg" 1; sub_links "$SUBID-tg" 1)\n',
|
||||||
False,
|
False,
|
||||||
' # Наш шов: подписки «-awg»/«-tg» есть только у установок с AmneziaWG и MTProto — не тянем их,\n # если эти протоколы не выбраны (никаких лишних обращений к панели).\n if [[ " ${PROTOS[*]} " == *" awg "* || " ${PROTOS[*]} " == *" awg3 "* || " ${PROTOS[*]} " == *" mtproto "* ]]; then\n extra=$(sub_links "$SUBID-awg" 1; sub_links "$SUBID-tg" 1)\n fi\n',
|
' local extra="" # пустая строка, иначе set -u валит скрипт, когда AWG/MTProto не выбраны\n # Наш шов: подписки «-awg»/«-tg» есть только у установок с AmneziaWG и MTProto — не тянем их,\n # если эти протоколы не выбраны (никаких лишних обращений к панели).\n if [[ " ${PROTOS[*]} " == *" awg "* || " ${PROTOS[*]} " == *" awg3 "* || " ${PROTOS[*]} " == *" mtproto "* ]]; then\n extra=$(sub_links "$SUBID-awg" 1; sub_links "$SUBID-tg" 1)\n fi\n',
|
||||||
'авто-шов: replace, строк 1',
|
'авто-шов: replace, строк 2',
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
'scripts/3x-ui.sh',
|
'scripts/3x-ui.sh',
|
||||||
|
|||||||
Reference in New Issue
Block a user