Зачем: - отделить переносимый прокси-интерфейс от общих 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
2.8 KiB
2.8 KiB
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, атомарность и отсутствие записи вне изолированного пользовательского каталога.