- Зачем: - нужны фактические результаты ручной приёмки на рабочем профиле. - Что: - подтверждены HTTP CONNECT и SOCKS5h на Ubuntu 26.04 с Xray 26.3.27. - записаны результаты проверки H3 под повторной нагрузкой и после простоя. - сохранён открытым вопрос проверки на других семействах Linux. - Проверка: - 240 последовательных запросов без ошибок, две загрузки по 10 МБ и повторные запросы после 45 секунд простоя. - git diff --cached --check.
144 lines
9.2 KiB
Markdown
144 lines
9.2 KiB
Markdown
# 05 — Доставка пакета и итоговая приёмка
|
||
|
||
**What to build:** Поставка `proxy-client` проверена целиком: корневой обзор
|
||
соответствует готовым возможностям, автоматические проверки воспроизводимы, а
|
||
ручная приёмка на доступных системах подготовлена для пользователя.
|
||
|
||
**Blocked by:** 03 — безопасный жизненный цикл; 04 — проверяемая установка.
|
||
|
||
**Status:** ready-for-human
|
||
|
||
## Границы задачи
|
||
|
||
Тикеты 03/04/06 уже доставили CLI, Bash-модуль, установку и жизненный цикл.
|
||
Задача 05 их проверяет, но не переписывает. Источники истины:
|
||
|
||
- [`proxy-client/README.md`](../../../proxy-client/README.md) — пользовательские
|
||
команды, настройка и ограничения;
|
||
- [исходный дизайн](../../../docs/specs/2026-07-15-proxy-client-design.md)
|
||
— границы и принятые решения.
|
||
|
||
- [x] Корневой `README.md` кратко описывает внешний Hiddify и управляемый Xray,
|
||
показывает `stow proxy-client` и ссылается на полную инструкцию.
|
||
- [x] Пакет подключается через stow, ручные ссылки или копирование; общий
|
||
установщик использует тот же пакет.
|
||
- [x] Инструкция покрывает две семьи VLESS, Xray 26.3.27, отсутствие systemd,
|
||
автозапуска и автоматического перехода между прокси.
|
||
- [x] Тест
|
||
`ManagedXrayCliTest.test_exact_boolean_version_alpn_and_extra_branches`
|
||
подтверждает, что устаревшие `allowInsecure`/`insecure` не попадают в
|
||
TLS-конфиг, а истинное значение даёт предупреждение.
|
||
|
||
## Секретные данные
|
||
|
||
- [x] В отслеживаемых файлах, тестовых данных, аргументах, выводе и отчёте нет
|
||
настоящих VLESS-ссылок, UUID, ключей, `shortId` и `path`. Автоматические тесты
|
||
используют только вымышленные контрольные значения. Настоящий профиль и
|
||
сгенерированный JSON остаются в закрытых пользовательских файлах и не
|
||
копируются в отчёт.
|
||
|
||
## Автоматическая проверка
|
||
|
||
- [x] `tests/test_proxy_client_full.sh` запускает весь Python-набор под системным
|
||
`python3` и CPython 3.8 через `uv`, затем Bash-тесты и проверку установки.
|
||
- [x] Тестовый Xray остаётся отдельным исполняемым файлом и получает доступ к
|
||
библиотекам исходного Python. Это устраняет ложные падения переносимой сборки
|
||
`uv`, не ослабляя проверки личности процесса.
|
||
- [x] `tests/test_install.sh` собирает небольшие тестовые деревья только из
|
||
отслеживаемых Git-файлов и удаляет общий временный каталог при выходе.
|
||
|
||
## Приёмка пользователем
|
||
|
||
Исполнитель готовит команды и останавливается. Результат отмечает пользователь;
|
||
недоступная система остаётся неподтверждённой.
|
||
|
||
- [x] Ubuntu 26.04 с системным Python 3.14: установка, жизненный цикл,
|
||
`xray run -test`, HTTP и SOCKS через один локальный вход Xray 26.3.27.
|
||
Минимальный CPython 3.8 отдельно покрыт автоматическим прогоном через `uv`.
|
||
- [ ] РЕД ОС, Astra Linux или Alt Linux по доступности: тот же сценарий после
|
||
проверки фактической версии Python.
|
||
|
||
## После приёмки
|
||
|
||
- [ ] Статус исходного дизайна и заявления о поддержке приведены в соответствие
|
||
только с фактически выполненными прогонами.
|
||
|
||
## Comments
|
||
|
||
### 2026-07-21 — автоматическая проверка
|
||
|
||
`bash tests/test_proxy_client_full.sh` завершился с кодом 0:
|
||
|
||
- системный Python 3.14: 79 тестов, `OK`, 61,034 с;
|
||
- Bash-интеграция: 8 проверок, `PASS`; `shellcheck` отсутствует и явно пропущен;
|
||
- установка: `All install tests passed`; в `/tmp` не осталось каталогов
|
||
`dotfiles-install-test.*`;
|
||
- CPython 3.8 через `uv`: 79 тестов, `OK`, 52,446 с.
|
||
|
||
### 2026-07-21 — команды ручной приёмки
|
||
|
||
В первой панели tmux, после подготовки закрытого `default.url` и машинного
|
||
конфига с `type = xray`:
|
||
|
||
```bash
|
||
python3 --version
|
||
cd ~/dotfiles
|
||
stow proxy-client
|
||
source ~/.config/proxy-client/shell.bash
|
||
proxy-client install
|
||
proxy-client start
|
||
```
|
||
|
||
Во второй панели, пока `start` работает:
|
||
|
||
```bash
|
||
proxy-client status
|
||
xray run -test -c "${XDG_STATE_HOME:-$HOME/.local/state}/proxy-client/client.json"
|
||
curl --proxy http://127.0.0.1:12334 https://api.ipify.org
|
||
curl --proxy socks5h://127.0.0.1:12334 https://api.ipify.org
|
||
proxy-client stop
|
||
```
|
||
|
||
Если настроен другой локальный адрес или порт, те же значения подставляются в
|
||
обе команды `curl`. В отчёт записываются только версии, коды возврата и итог
|
||
проверки HTTP/SOCKS.
|
||
|
||
### 2026-07-21 — переименование и частичная ручная приёмка
|
||
|
||
Публичный интерфейс переименован в `proxy-client`, а машинный конфиг и закрытый
|
||
профиль объединены в `~/.config/proxy-client/`. В ходе разработки текущий HOME
|
||
приведён к новой структуре; старые пользовательские пути отсутствуют, права
|
||
файлов `600` сохранены. Поддержка прежнего имени в установщик не добавлялась,
|
||
поскольку выпуск ещё не состоялся.
|
||
|
||
Xray 26.3.27 установился и запустился, `status` подтвердил процесс на
|
||
`127.0.0.1:12334`, а `xray run -test` завершился сообщением
|
||
`Configuration OK`. HTTP и SOCKS5h через локальный вход не прошли: оба запроса
|
||
`curl` завершились кодом 35 с неожиданным закрытием TLS-соединения во время
|
||
рукопожатия. После проверки Xray штатно остановлен. Пункты ручной приёмки пока
|
||
не отмечены.
|
||
|
||
### 2026-07-21 — успешная приёмка на Ubuntu
|
||
|
||
Первая строка оказалась нерабочей и в исходном клиенте. После замены на
|
||
подтверждённо рабочий профиль XHTTP/TLS с ALPN `h3` тот же Xray 26.3.27 прошёл
|
||
полный сценарий на Ubuntu 26.04 с системным Python 3.14: встроенная проверка
|
||
внешнего IP, `status`, `xray run -test`, HTTP CONNECT и SOCKS5h. Оба запроса
|
||
`curl` получили HTTP 200. Содержимое профиля в журнал и Git не попадало.
|
||
|
||
Диагностическое понижение до Xray 25.12.8 не исправляло старый профиль, поэтому
|
||
поддержка второй версии не нужна. Ошибка была связана с прежней строкой или её
|
||
удалённой стороной, а не с преобразованием `proxy-client`.
|
||
|
||
Короткая проверка стабильности H3 на Xray 26.3.27 также прошла:
|
||
|
||
- 120 циклов, в каждом новое HTTP CONNECT- и SOCKS5h-соединение: 240 запросов,
|
||
0 ошибок;
|
||
- две одновременные загрузки по 10 МБ через HTTP и SOCKS завершились полностью;
|
||
- после 45 секунд без трафика оба новых запроса получили HTTP 200.
|
||
|
||
Таким образом, не воспроизвёлся сбой из
|
||
[XTLS/Xray-core#3673](https://github.com/XTLS/Xray-core/issues/3673), при котором
|
||
H3 переставал принимать новые соединения уже после первых запросов. Этот
|
||
короткий прогон не заменяет длительное наблюдение под обычной нагрузкой.
|