Files
dotfiles/.scratch/proxy-client/issues/05-package-delivery-and-acceptance.md
T
ddadmin bca90c1d21 docs(proxy-client): зафиксирована успешная H3-приёмка
- Зачем:
  - нужны фактические результаты ручной приёмки на рабочем профиле.
- Что:
  - подтверждены HTTP CONNECT и SOCKS5h на Ubuntu 26.04 с Xray 26.3.27.
  - записаны результаты проверки H3 под повторной нагрузкой и после простоя.
  - сохранён открытым вопрос проверки на других семействах Linux.
- Проверка:
  - 240 последовательных запросов без ошибок, две загрузки по 10 МБ и повторные запросы после 45 секунд простоя.
  - git diff --cached --check.
2026-07-21 10:30:53 -04:00

9.2 KiB
Raw Blame History

05 — Доставка пакета и итоговая приёмка

What to build: Поставка proxy-client проверена целиком: корневой обзор соответствует готовым возможностям, автоматические проверки воспроизводимы, а ручная приёмка на доступных системах подготовлена для пользователя.

Blocked by: 03 — безопасный жизненный цикл; 04 — проверяемая установка.

Status: ready-for-human

Границы задачи

Тикеты 03/04/06 уже доставили CLI, Bash-модуль, установку и жизненный цикл. Задача 05 их проверяет, но не переписывает. Источники истины:

  • proxy-client/README.md — пользовательские команды, настройка и ограничения;

  • исходный дизайн — границы и принятые решения.

  • Корневой README.md кратко описывает внешний Hiddify и управляемый Xray, показывает stow proxy-client и ссылается на полную инструкцию.

  • Пакет подключается через stow, ручные ссылки или копирование; общий установщик использует тот же пакет.

  • Инструкция покрывает две семьи VLESS, Xray 26.3.27, отсутствие systemd, автозапуска и автоматического перехода между прокси.

  • Тест ManagedXrayCliTest.test_exact_boolean_version_alpn_and_extra_branches подтверждает, что устаревшие allowInsecure/insecure не попадают в TLS-конфиг, а истинное значение даёт предупреждение.

Секретные данные

  • В отслеживаемых файлах, тестовых данных, аргументах, выводе и отчёте нет настоящих VLESS-ссылок, UUID, ключей, shortId и path. Автоматические тесты используют только вымышленные контрольные значения. Настоящий профиль и сгенерированный JSON остаются в закрытых пользовательских файлах и не копируются в отчёт.

Автоматическая проверка

  • tests/test_proxy_client_full.sh запускает весь Python-набор под системным python3 и CPython 3.8 через uv, затем Bash-тесты и проверку установки.
  • Тестовый Xray остаётся отдельным исполняемым файлом и получает доступ к библиотекам исходного Python. Это устраняет ложные падения переносимой сборки uv, не ослабляя проверки личности процесса.
  • tests/test_install.sh собирает небольшие тестовые деревья только из отслеживаемых Git-файлов и удаляет общий временный каталог при выходе.

Приёмка пользователем

Исполнитель готовит команды и останавливается. Результат отмечает пользователь; недоступная система остаётся неподтверждённой.

  • 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:

python3 --version
cd ~/dotfiles
stow proxy-client
source ~/.config/proxy-client/shell.bash
proxy-client install
proxy-client start

Во второй панели, пока start работает:

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, при котором H3 переставал принимать новые соединения уже после первых запросов. Этот короткий прогон не заменяет длительное наблюдение под обычной нагрузкой.