Files
netrunner-proxy/server
nineap 10d357b8ec Graceful shutdown (SIGTERM) + HTTP /health endpoint
Раньше shutdown_signal вообще не существовал — весь механизм graceful
shutdown в network.rs был мёртвым кодом, ничего его не вызывало. main.rs
теперь spawn'ит net.run() и последовательно ждёт сигнал, затем drain
(НЕ tokio::select! — select! убил бы run()-future на середине drain'а в
момент, когда shutdown-future резолвится). /health на 127.0.0.1 отдаёт
активные соединения — для systemd/LB health-check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-09 16:37:25 +07:00
..

Крейт server — серверная часть прокси

Тонкая обвязка вокруг ядра (core): принимает замаскированные TLS-соединения, проверяет, что это валидный Netrunner-клиент, и проксирует трафик во внешнюю сеть. Вся бизнес-логика — в ядре; здесь точка входа, листенер и серверная диагностика.

Детали — в rustdoc: cargo doc --open -p netrunner-server.

Файлы

Файл Роль
src/main.rs CLI (--host/--port), логгер, tokio-рантайм, запуск.
src/network.rs TCP-листенер; на каждое соединение спавнит ServerHandler.
src/diagnostics.rs Логгер диагностики ядра → netrunner_diagnostics.jsonl.

Жизненный цикл соединения (в ядре)

accept TCP → core::ServerHandler::run:
  1. ClientHello → ServerHello   (невалидный/чужой → stealth-fallback на ubuntu.com:443)
  2. проверка auth-payload       (неверный → отказ)
  3. прицепить ногу к Muxer сессии и крутить TunnelEngine → проксировать к целям

Один общий SessionManager мультиплексирует несколько ног одной сессии на один Muxer. Фоновая задача периодически делает health-check и печатает топологию.

Запуск и деплой

Локально: make debug-server (биндится на 0.0.0.0:8443). Релиз/деплой: make build-servermake deploy-server (systemd-сервис на VPS, см. server/netrunner-server.service и Makefile).