feat(xray-proxy): добавлена проверяемая установка Xray командой install
- Зачем:
- пользователь без root должен получать проверенный бинарник Xray 26.3.27
одной явной командой, без риска для живого managed-экземпляра.
- Что:
- команда install [--replace]: пин 26.3.27, маппинг x86_64/aarch64,
скачивание urllib + проверка SHA2-256 из официального четырёхзаписного
.dgst, staging внутри ~/.local/bin и один атомарный os.replace;
- границы размеров (64 MiB архив/бинарник, 4 KiB .dgst, счёт limit+1,
сверка Content-Length) и guard managed-режима через start-lock;
- типизированная StartLockBusyError, offline-тесты реального загрузчика
через подмену urlopen, снапшоты дерева ФС в отказных путях;
- README/спека обновлены, включая справку о последней версии с
allowInsecure (25.12.8, удалена в 26.2.6); тикет 04 закрыт, леджер
дополнен итогами эксперимента.
- Проверка:
- PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests — 79 OK.
- bash tests/test_proxy_launchers.sh — 8 PASS.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
90cc8456cd
commit
0432c4ae8a
7 files changed
+1266
-43
No files matched your search
@@ -266,20 +266,30 @@ Hiddify Manager может добавлять `allowInsecure=true` и `insecure=
|
||||
|
||||
`xray-proxy install` — отдельная явная операция. Она устанавливает Xray в
|
||||
`~/.local/bin`, скачивает официальный архив и файл контрольной суммы, затем
|
||||
проверяет SHA-256. Версия по умолчанию зафиксирована в коде клиента на текущем
|
||||
на момент реализации стабильном релизе 26.3.27. Пользователь может явно указать
|
||||
другую версию через `--version`; произвольная версия не становится заявленной
|
||||
как поддерживаемая только из-за успешной установки. Официальные релизы
|
||||
публикуют необходимые файлы `.dgst`:
|
||||
проверяет SHA-256. Поддерживается только зафиксированный релиз 26.3.27;
|
||||
параметра версии нет. Официальные релизы публикуют необходимые файлы `.dgst`:
|
||||
[релиз 26.3.27](https://github.com/XTLS/Xray-core/releases/tag/v26.3.27).
|
||||
|
||||
Первая версия установщика поддерживает Linux x86_64 и aarch64. Архив
|
||||
распаковывается во временный пользовательский каталог, проверенный бинарник
|
||||
сначала запускается с `version`, а затем атомарно переносится в
|
||||
`~/.local/bin/xray`. Существующий файл другой версии не перезаписывается без
|
||||
явного `--replace`. После установки CLI проверяет, что `command -v xray`
|
||||
указывает именно на установленный файл; иначе завершается с подсказкой исправить
|
||||
`PATH`. `start` всегда показывает фактический путь и версию выбранного бинарника.
|
||||
Для Linux `x86_64`/`amd64` используется `Xray-linux-64.zip`, для
|
||||
`aarch64`/`arm64` — `Xray-linux-arm64-v8a.zip`; остальные архитектуры
|
||||
отклоняются. Официальный `.dgst` содержит записи `MD5`, `SHA1`, `SHA2-256` и
|
||||
`SHA2-512`; принимается ровно один полный набор со строчными hex-значениями,
|
||||
для проверки архива используется `SHA2-256`. Дубликаты, uppercase, отсутствие
|
||||
записи и мусор отклоняются. Архив и извлечённый бинарник ограничены 64 MiB,
|
||||
`.dgst` — 4 KiB; фактический размер считается с limit+1 и должен совпадать с
|
||||
объявленным `Content-Length`. Архив распаковывается в закрытый staging-каталог
|
||||
внутри `~/.local/bin`, проверенный бинарник запускается с `version`, после чего
|
||||
одним `os.replace` атомарно переносится в `~/.local/bin/xray`.
|
||||
|
||||
Корректная существующая версия 26.3.27 даёт no-op без сети. Другой файл или
|
||||
симлинк не заменяется без `--replace`, а каталог не заменяется никогда.
|
||||
Start-lock берётся до проверки назначения и удерживается до завершения
|
||||
`os.replace`; живой, сиротский или неподтверждённый managed-state запрещает
|
||||
установку с подсказкой сначала выполнить `stop`.
|
||||
После установки CLI проверяет, что первый `xray` из `PATH` разрешается в
|
||||
установленный файл; иначе завершается с подсказкой поставить `~/.local/bin` в
|
||||
начало `PATH`, не откатывая готовую установку. `start` всегда показывает
|
||||
фактический путь и версию выбранного бинарника.
|
||||
|
||||
Перед созданием JSON CLI разрешает первый `xray` из `PATH` до одного пути и
|
||||
запускает этим файлом `xray version`. Первая строка должна начинаться с точного
|
||||
|
||||
Reference in new issue
Block a user