Files
utun2/tools/etcpmon/README.md
T

66 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ETCP Monitor
WinAPI-монитор соединений uTun. Работает под Windows и Wine, подключается по IPv4 TCP
к `control_server`. Метрики выбранного соединения запрашиваются раз в 100 мс,
списки соединений и сокетов — раз в секунду. Сеть обрабатывается в GUI-потоке.
Полное описание протокола, интерфейса, владения ресурсами и текущих ограничений:
[etcpmon_doc.md](etcpmon_doc.md). Серверная часть: [control_server_doc.md](../../src/control_server_doc.md).
## Сборка и запуск
Windows/MSYS2 UCRT64:
```cmd
cd tools\etcpmon
build.bat
etcpmon.exe
```
`build.bat` использует `C:\msys64`, либо `MSYS2_ROOT`/`MSYS2`. Внутри MSYS2 можно выполнить `bash build.sh`.
Linux с установленными MinGW и Wine, из корня проекта:
```bash
make -C tools/etcpmon CC=x86_64-w64-mingw32-gcc
wine tools/etcpmon/etcpmon.exe
make -C tools/etcpmon CC=x86_64-w64-mingw32-gcc TEST_RUNNER=wine check
```
Для запуска GUI и WinAPI-тестов нужен дисплей; без рабочего стола можно использовать `xvfb-run -a`.
## Подключение
В конфиге uTun:
```ini
[control]
ip=127.0.0.1
port=9090
allow=127.0.0.1/32
```
Без `allow` все подключения отклоняются. Транспорт управления не шифруется и не аутентифицирует
ключи ETCP: используйте loopback или доверенный защищённый канал.
При открытии окна etcpmon автоматически начинает connect к `192.168.40.1:9091`.
Нажмите Disconnect, задайте числовой IPv4/порт своего сервера и нажмите Connect.
Первое соединение выбирается автоматически. Enter в адресе/порту подключает, Escape отключает.
## Состав
- `etcpmon_client.c/h`: неблокирующий Winsock-клиент, разбор кадров, pending ответов, кеши и история.
- `etcpmon_gui.c/h`: окно, контролы, опрос списков, обработка событий и Action Result.
- `etcpmon_graph.c/h`: график восьми метрик первого линка и выбор сэмпла курсором.
- `etcpmon_protocol.h`: общий с сервером wire-layout: `[size:2][type:1][seq_id:1][payload]`.
- `test_etcpmon.c`: регрессии клиента/GUI с локальным TCP-сервером; запускаются через `make check`.
Команда Action `nodes` возвращает текст узлов, `nat` подтверждает запуск NAT/STUN-проверки.
Неизвестная команда или недоступная служба возвращает ошибку с сохранением TCP-соединения.
Клиент досылает частичные кадры через ограниченный TX (64 КиБ/256 кадров). Сервер формирует
один кадр до 32 КиБ, приостанавливая чтение до его отправки; список узлов передаётся порциями.
Таймауты и ограничения подписки описаны в [etcpmon_doc.md](etcpmon_doc.md).
Клиент пишет `etcpmon.log`, сервер — `control_server.log` в текущем рабочем каталоге каждого процесса.