ETCP Monitor
WinAPI-монитор соединений uTun. Работает под Windows и Wine, подключается по IPv4 TCP
к control_server. Метрики выбранного соединения запрашиваются раз в 100 мс,
списки соединений и сокетов — раз в секунду. Сеть обрабатывается в GUI-потоке.
Полное описание протокола, интерфейса, владения ресурсами и текущих ограничений: etcpmon_doc.md. Серверная часть: control_server_doc.md.
Сборка и запуск
Windows/MSYS2 UCRT64:
cd tools\etcpmon
build.bat
etcpmon.exe
build.bat использует C:\msys64, либо MSYS2_ROOT/MSYS2. Внутри MSYS2 можно выполнить bash build.sh.
Linux с установленными MinGW и Wine, из корня проекта:
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:
[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.log, сервер — control_server.log в текущем рабочем каталоге каждого процесса.