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
+30
-6
@@ -89,6 +89,7 @@ chmod 600 ~/.config/xray-proxy/default.url
|
||||
## Команды
|
||||
|
||||
```bash
|
||||
xray-proxy install [--replace]
|
||||
xray-proxy status
|
||||
xray-proxy start [-f PROFILE]
|
||||
xray-proxy stop
|
||||
@@ -101,12 +102,32 @@ pcodex [ARG...]
|
||||
myip
|
||||
```
|
||||
|
||||
`install` без root устанавливает единственную поддержанную версию Xray
|
||||
`26.3.27` в `~/.local/bin/xray`. Для `x86_64`/`amd64` используется официальный
|
||||
`Xray-linux-64.zip`, для `aarch64`/`arm64` — `Xray-linux-arm64-v8a.zip`.
|
||||
Остальные архитектуры отклоняются. CLI скачивает рядом файл `.dgst`, проверяет
|
||||
единственную запись `SHA2-256= <64 lowercase hex>` в официальном
|
||||
четырёхстрочном формате, извлекает `xray` в закрытый временный каталог внутри
|
||||
`~/.local/bin`, проверяет `xray version` и только затем атомарно меняет
|
||||
назначение. Дубликаты, uppercase, пропущенные и лишние записи отклоняются.
|
||||
Архив и извлечённый бинарник ограничены 64 MiB, `.dgst` — 4 KiB; объявленный
|
||||
`Content-Length` должен точно совпадать с фактически прочитанным размером.
|
||||
|
||||
Существующая корректная версия `26.3.27` даёт успешный no-op без сети. Другой,
|
||||
битый, неисполняемый файл или симлинк не заменяется без `--replace`; каталог не
|
||||
заменяется никогда. Если после установки `PATH` выбирает не этот файл, команда
|
||||
завершается с ошибкой и предлагает поставить `~/.local/bin` в начало `PATH`,
|
||||
но проверенная установка сохраняется. Родительский симлинк принимается, только
|
||||
если разрешённый каталог остаётся внутри `HOME`. Во время живого или
|
||||
неподтверждённого managed-экземпляра установка запрещена: сначала выполните
|
||||
`xray-proxy stop`.
|
||||
|
||||
Для `external` команды `status`, `env` и `run` проверяют настроенный адрес и
|
||||
порт. Для `xray` они дополнительно требуют закрытое состояние именно того
|
||||
супервизора и дочернего Xray, который запустил CLI. Один открытый порт или чужой
|
||||
PID не принимается. `run` никогда не запускает Xray скрыто.
|
||||
|
||||
`start` поддерживает Xray `25.12.8` и `26.3.27`, сначала выполняет
|
||||
`start` поддерживает только Xray `26.3.27`, сначала выполняет
|
||||
`xray version` и `xray run -test`, затем остаётся на переднем плане. Используйте
|
||||
отдельную панель tmux. После готовности один loopback-порт принимает HTTP и
|
||||
SOCKS. `stop` ограниченно ждёт завершения супервизора и Xray, очищает служебные
|
||||
@@ -134,11 +155,14 @@ export PROXY_PREFLIGHT_TIMEOUT=2
|
||||
|
||||
Xray 26.3.27 использует `pcs` и `vcn`, а устаревшие `allowInsecure` и
|
||||
`insecure` не переносит. Истинное legacy-значение даёт предупреждение, но
|
||||
обычная проверка сертификата остаётся включённой. Xray 25.12.8 предназначен
|
||||
только для явной старой совместимости: согласованное `true` переносится как
|
||||
`allowInsecure=true` с предупреждением об отключённой проверке сертификата;
|
||||
`pcs` и `vcn` для этой версии запрещены. Автоматического перехода между
|
||||
версиями или типами прокси нет.
|
||||
обычная проверка сертификата остаётся включённой. Автоматического перехода
|
||||
между версиями или типами прокси нет.
|
||||
|
||||
Для справки при ручном конфигурировании: последняя версия Xray, где
|
||||
`allowInsecure` ещё применяется, —
|
||||
[25.12.8](https://github.com/XTLS/Xray-core/releases/tag/v25.12.8); опция
|
||||
удалена в [26.2.6](https://github.com/XTLS/Xray-core/releases/tag/v26.2.6).
|
||||
CLI такие версии не поддерживает и не устанавливает.
|
||||
|
||||
Сводка скрывает UUID и ключи. Содержимое XHTTP `path` не показывается — только
|
||||
его длина. Сгенерированный JSON и состояние лежат в закрытом каталоге
|
||||
|
||||
Reference in new issue
Block a user