feat(xray-proxy): добавлен управляемый прокси для CLI
Зачем: - отделить переносимый прокси-интерфейс от общих 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
This commit is contained in:
1 parent
fdf744e578
commit
e69a4bb7df
20 files changed
+3224
-170
No files matched your search
@@ -242,10 +242,12 @@ Xray. Параметры query не зависят от порядка, но н
|
||||
[стандарт VLESS-ссылок](https://github.com/XTLS/Xray-core/discussions/716).
|
||||
|
||||
Перед запуском CLI печатает компактную безопасную сводку: сервер, порт,
|
||||
транспорт, защиту, SNI, ALPN, Host, путь, fingerprint и локальный порт. Обычный
|
||||
режим не выводит подробный журнал Xray: `-v` добавляет информационные сообщения,
|
||||
а `--debug` включает подробную диагностику. UUID, REALITY password/public key,
|
||||
short ID и другие чувствительные значения выводятся только сокращённо.
|
||||
транспорт, защиту, SNI, ALPN, Host, наличие и длину пути, fingerprint и локальный
|
||||
порт. XHTTP `path` может содержать tenant ID или bearer-подобный токен, поэтому
|
||||
его содержимое никогда не печатается. Обычный режим не выводит подробный журнал
|
||||
Xray: `-v` добавляет информационные сообщения, а `--debug` включает подробную
|
||||
диагностику. UUID, REALITY password/public key, short ID и другие чувствительные
|
||||
значения обозначаются без фрагментов исходного значения.
|
||||
В создаваемом JSON журнал доступа отключён, а уровень ошибок по умолчанию —
|
||||
`warning`.
|
||||
|
||||
@@ -254,16 +256,21 @@ Hiddify Manager может добавлять `allowInsecure=true` и `insecure=
|
||||
[hiddify/Hiddify-Manager#5438](https://github.com/hiddify/Hiddify-Manager/issues/5438).
|
||||
Современный Xray больше не поддерживает `allowInsecure`; удаление зафиксировано
|
||||
в [релизе 26.2.6](https://github.com/XTLS/Xray-core/releases/tag/v26.2.6).
|
||||
Поэтому преобразователь принимает эти поля, но для Xray 26.3.27 не переносит
|
||||
их в JSON и предупреждает, что сертификат будет проверен обычным способом.
|
||||
Преобразователь принимает для обоих полей только точные строчные значения
|
||||
`true` и `false`. Если присутствуют оба поля, их значения должны совпадать;
|
||||
конфликт и любое другое написание отклоняются до создания JSON. Для Xray
|
||||
26.3.27 поля не переносятся в JSON; истинное значение даёт предупреждение, что
|
||||
сертификат будет проверен обычным способом, а ложное не требует предупреждения.
|
||||
Соединение после этого может успешно заработать или завершиться ошибкой
|
||||
сертификата; отдельного раннего отказа нет.
|
||||
|
||||
При явно выбранном Xray 25.12.8 преобразователь сохраняет
|
||||
`allowInsecure=true` и предупреждает одновременно об отключённой проверке
|
||||
сертификата и об использовании старой совместимой версии. Автоматический откат
|
||||
с 26.x на 25.12.8 запрещён. Новые `pcs`/`vcn` в режиме 25.12.8 отклоняются как
|
||||
несовместимые вместо попытки угадать их старое представление.
|
||||
При фактически выбранном Xray 25.12.8 преобразователь сохраняет
|
||||
`allowInsecure=true` только для согласованного истинного legacy-значения и
|
||||
предупреждает одновременно об отключённой проверке сертификата и об
|
||||
использовании старой совместимой версии. Ложное или отсутствующее значение не
|
||||
включает поле. Автоматический откат с 26.x на 25.12.8 запрещён. Новые
|
||||
`pcs`/`vcn` в режиме 25.12.8 отклоняются как несовместимые вместо попытки
|
||||
угадать их старое представление.
|
||||
|
||||
### Установка Xray
|
||||
|
||||
@@ -284,8 +291,13 @@ Hiddify Manager может добавлять `allowInsecure=true` и `insecure=
|
||||
указывает именно на установленный файл; иначе завершается с подсказкой исправить
|
||||
`PATH`. `start` всегда показывает фактический путь и версию выбранного бинарника.
|
||||
|
||||
Перед созданием JSON CLI читает фактическую версию из `xray version` и выбирает
|
||||
только совместимое с ней представление TLS-полей. Версия никогда не выводится
|
||||
Перед созданием JSON CLI разрешает первый `xray` из `PATH` до одного пути и
|
||||
запускает этим файлом `xray version`. Первая строка должна начинаться с точного
|
||||
токена `Xray VERSION`, после полного токена версии допускается только конец
|
||||
строки либо ASCII-пробел. Принимаются только версии 25.12.8 и 26.3.27; ведущий
|
||||
мусор, похожий более длинный токен, пустой, неверный, завершившийся ошибкой или
|
||||
содержащий другую версию вывод запрещает запуск. Тот же разрешённый файл
|
||||
используется для `run -test` и основного процесса. Версия никогда не выводится
|
||||
из содержимого VLESS-ссылки.
|
||||
|
||||
Xray 25.12.8 — документированный запасной вариант только для старых Hiddify-
|
||||
@@ -331,7 +343,9 @@ CLI предоставляет `install`, `start`, `stop`, `status`, `env` и `r
|
||||
Сгенерированный JSON и временные файлы создаются внутри служебного каталога и
|
||||
удаляются супервизором после завершения Xray. Каталоги создаются с правами
|
||||
`0700`, файлы с конфигурацией и состоянием — `0600`. Исходная VLESS-ссылка не
|
||||
попадает в обычный вывод и никогда не передаётся аргументом командной строки.
|
||||
попадает в stdout или stderr при успехе, ошибках разбора и сбое `run -test` и
|
||||
никогда не передаётся аргументом командной строки. Те же поверхности не содержат
|
||||
UUID, ключи, short ID и другие уникальные секретные маркеры профиля.
|
||||
|
||||
`run` никогда не запускает Xray. Для типа `xray` он проверяет PID управляемого
|
||||
процесса и локальный порт; для типа `external` — только явно настроенный адрес и
|
||||
@@ -407,8 +421,8 @@ README репозитория только кратко описывает по
|
||||
все показанные варианты ALPN. Отдельный регрессионный пример повторяет форму
|
||||
типичной ссылки Hiddify XHTTP/TLS с `hiddify`, `core`, `extra`,
|
||||
`headerType=none`, `allowInsecure` и `insecure`.
|
||||
- Неподдерживаемые транспорт, защита, отсутствующие обязательные поля и
|
||||
неизвестные критичные параметры дают понятный отказ до запуска Xray.
|
||||
- Неподдерживаемые транспорт, защита, отсутствующие обязательные поля и любой
|
||||
неизвестный query-параметр дают понятный отказ до запуска Xray.
|
||||
- Сгенерированный JSON проходит `xray run -test` отдельно на Xray 26.3.27 и
|
||||
25.12.8 для заявленных совместимыми сочетаний. Интеграционная проверка каждой
|
||||
версии подтверждает, что один локальный вход принимает HTTP и SOCKS.
|
||||
|
||||
Reference in new issue
Block a user