docs(scratch): план упрощения proxy-client
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
205e995f26
commit
fb23b031bc
3 files changed
+210
No files matched your search
@@ -0,0 +1,64 @@
|
||||
# 01. Упростить CLI proxy-client и его Python-тесты
|
||||
|
||||
Status: ready-for-agent
|
||||
|
||||
Спецификация: `../spec.md` (читать целиком — там список того, что сохраняем).
|
||||
|
||||
## Файлы
|
||||
|
||||
- `proxy-client/.local/bin/proxy-client`
|
||||
- `tests/test_proxy_client.py`, `tests/test_proxy_client_managed.py`
|
||||
(можно слить, переименовать или разнести по-новому — как станет проще)
|
||||
- `proxy-client/README.md` — все разделы, **кроме** «Установка» и «Ручное
|
||||
подключение без установщика» (их правит задача 02; при конфликте правки
|
||||
перечитай файл и повтори).
|
||||
- `proxy-client/.config/proxy-client/examples/` — если нужно.
|
||||
|
||||
Не трогать: `proxy-client/install.sh`, `shell.bash`, shell-тесты.
|
||||
|
||||
## Что сделать
|
||||
|
||||
Пункты 1–4 и 6 спецификации для CLI. Затем привести тесты к пяти местам
|
||||
проверок из спецификации:
|
||||
|
||||
- Все проверки разбора ссылки (ALPN, legacy insecure, некорректные ссылки,
|
||||
соответствие полей REALITY/XHTTP, pcs/vcn, extra, шифрование) — табличные
|
||||
тесты `parse_vless`/`build_xray_config`, без запуска процессов.
|
||||
- CLI-тесты управляемого Xray: один полный жизненный цикл (start → status/env/
|
||||
run → stop → файлы удалены, права 600/700, секретов нет в выводе), Ctrl+C,
|
||||
SIGKILL супервизора → `stop` добивает Xray, устаревшие файлы после смерти
|
||||
процессов, занятый порт, не-loopback адрес, права профиля (с новой
|
||||
подсказкой), сбой `xray run -test` не оставляет файлов, сбой определения
|
||||
внешнего IP — лишь предупреждение, второй `start` при работающем — отказ.
|
||||
Каждый сценарий — один запуск. Готовность ждать по строке вывода, а не
|
||||
опросом `status` в цикле, если это упрощает.
|
||||
- Удалить тесты-пустышки: проверку тестовой подделки сокета, проверку, что
|
||||
поддельный xray отвергает не-JSON, тесты порядка внутренних вызовов, всё,
|
||||
что подменяет функции модуля через `__globals__`. Подделку сокета
|
||||
(`checking_socket_setup`/`run_cli_with_socket_setup` через runpy) заменить
|
||||
настоящим слушающим сокетом на 127.0.0.1 (и закрытым портом для «недоступен»).
|
||||
- Тесты удалённых возможностей (ограничения размера, строгий `.dgst`,
|
||||
запрет заглавных букв в хеше, «каталог установки внутри HOME», boot_id,
|
||||
повторный PID, подмена xray_path, способы вызова супервизора и т. п.) уходят
|
||||
вместе с возможностями.
|
||||
- Новая подсказка о правах — тест первым (красный → зелёный).
|
||||
|
||||
Упрощай и сам код: если функция после правок становится проходной — встрой.
|
||||
Сообщения об ошибках — на русском, коротко, с путём к файлу там, где речь о
|
||||
файле. Сохраняй совместимость с Python 3.8 (без `match`, `str.removeprefix`,
|
||||
`|` в типах и т. п.).
|
||||
|
||||
## Готово, когда
|
||||
|
||||
- `python3 -m unittest discover -s tests` зелёный; прогон Python-тестов
|
||||
proxy-client заметно быстрее нынешних ~75 с.
|
||||
- Если есть `uv`: `uv run --python 3.8 python -m unittest discover -s tests`
|
||||
тоже зелёный.
|
||||
- Реальная проверка: сгенерированный конфиг для синтетических ссылок REALITY
|
||||
и XHTTP с шифрованием проходит `xray run -test` (xray 26.3.27 есть в
|
||||
`~/.local/bin/xray`).
|
||||
- README описывает текущее поведение, без упоминаний удалённого.
|
||||
- Не коммитить: коммиты делает оркестратор.
|
||||
|
||||
Отчёт: что удалено из кода и тестов (строки до/после, время прогона до/после),
|
||||
какие решения принял сам, что осталось спорным.
|
||||
Reference in new issue
Block a user