refactor(proxy-client): переименован интерфейс прокси

- Зачем:
  - прежнее имя выпячивало Xray, хотя клиент поддерживает также внешний прокси, а два каталога конфигурации были неочевидны.
- Что:
  - пакет, CLI, конфигурация, состояние, тесты и документация переименованы в proxy-client.
  - машинный конфиг, профиль и два явных примера собраны в одном пользовательском каталоге.
  - свежая установка защищена от сворачивания каталога конфигурации внутрь репозитория.
- Проверка:
  - bash tests/test_proxy_client_full.sh.
  - bash tests/test_install.sh.
  - ручные start, status и xray run -test; незавершённая сетевая приёмка записана в handoff.
This commit is contained in:
ddadmin committed 2026-07-21 09:31:21 -04:00
1 parent e5323284a8
commit 6e431d875e
25 files changed
+310 -227

No files matched your search

@@ -0,0 +1,118 @@
# 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-файлов и удаляет общий временный каталог при выходе.
## Приёмка пользователем
Исполнитель готовит команды и останавливается. Результат отмечает пользователь;
недоступная система остаётся неподтверждённой.
- [ ] Ubuntu с Python 3.10: установка, жизненный цикл, `xray run -test`, HTTP и
SOCKS через один локальный вход Xray 26.3.27.
- [ ] РЕД ОС, 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 штатно остановлен. Пункты ручной приёмки пока
не отмечены.