Зачем: - отделить переносимый прокси-интерфейс от общих Bash-функций - запускать агентские CLI через явный внешний или управляемый прокси Что: - добавлен stow-пакет xray-proxy с CLI, Bash-модулем и примерами - реализованы строгий разбор VLESS и управляемый запуск Xray - добавлены проверки процесса, порта, сигналов и отсутствия утечек - сохранены спецификация и очередь следующих тикетов Проверка: - python3 tests/test_xray_proxy.py — 22/22 - python3 tests/test_xray_proxy_managed.py — 16/16 - bash tests/test_proxy_launchers.sh — 9/9 - bash tests/test_install.sh - bash -n, Python 3.8 grammar, git diff --check
29 lines
2.8 KiB
Markdown
29 lines
2.8 KiB
Markdown
# 04 — Проверяемая пользовательская установка Xray
|
|
|
|
**What to build:** Пользователь без root устанавливает официальный Xray одной
|
|
явной командой и получает проверенный бинарник нужной версии без скрытой замены
|
|
существующей установки или записи за пределами пользовательских каталогов.
|
|
|
|
**Blocked by:** 01 — Внешний прокси и переносимый Bash-интерфейс.
|
|
|
|
**Status:** ready-for-agent
|
|
|
|
- [ ] `install` поддерживает Linux x86_64 и aarch64, по умолчанию выбирает
|
|
зафиксированную версию 26.3.27 и принимает другую только через явный параметр
|
|
версии, не объявляя произвольный релиз поддержанным.
|
|
- [ ] Архив и файл контрольной суммы скачиваются из официального релиза, после
|
|
чего SHA-256 проверяется до распаковки и установки; несовпадение прекращает
|
|
операцию без изменения установленного бинарника.
|
|
- [ ] Работа ведётся во временном пользовательском каталоге, извлечённый бинарник
|
|
сначала проходит проверку `version`, а затем атомарно устанавливается в
|
|
пользовательский каталог исполняемых файлов.
|
|
- [ ] Существующий бинарник другой версии не перезаписывается без `--replace`;
|
|
ошибка, отказ или прерывание не оставляют частично установленный файл.
|
|
- [ ] После установки `command -v xray` обязан указывать на установленный файл;
|
|
иначе команда завершается с понятной подсказкой исправить `PATH`.
|
|
- [ ] Установщик не использует sudo, systemd или системные каталоги, а команды
|
|
`start` и запуск без подкоманды никогда не начинают скачивание.
|
|
- [ ] Автоматические тесты проверяют обе архитектуры, корректную и повреждённую
|
|
контрольную сумму, существующую версию, `--replace`, атомарность и отсутствие
|
|
записи вне изолированного пользовательского каталога.
|