Документ описывает целевую (планируемую) архитектуру Wisp VPN. По мере разработки будет обновляться.
┌─────────────────┐ WireGuard ┌──────────────────┐
│ Windows-клиент │ ◄────────────────────► │ VPN-серверы │
│ (client/) │ (UDP, шифр.) │ (не в этом репо)│
└─────────────────┘ └──────────────────┘
│
├── GUI — интерфейс подключения, выбор сервера, настройки
├── Core — управление туннелем, конфигурацией, ключами
└── Kill Switch — блокировка трафика при обрыве туннеля
Технологический стек: C# / .NET 8, WPF, MVVM.
Windows-приложение, отвечающее за:
- установку и настройку туннеля WireGuard;
- хранение конфигураций подключения локально (без отправки на сторонние серверы);
- UI: список серверов, статус подключения, статистика трафика;
- kill switch — правила брандмауэра, блокирующие трафик при разрыве VPN.
Структура решения:
client/
├── src/WispVpn.App/ # WPF UI — Views + ViewModels (MVVM)
├── src/WispVpn.Core/ # платформонезависимая логика:
│ ├── Networking/ # разбор WireGuard-конфига, измерение пинга
│ ├── Security/ # генерация ключей (X25519) — пока заглушка
│ ├── Servers/ # каталог серверов
│ └── Tunnel/ # ITunnelService — поднятие/остановка туннеля
└── tests/WispVpn.Core.Tests/ # xUnit-тесты на WispVpn.Core
WispVpn.Core не зависит от WPF и может переиспользоваться (например, если позже появится CLI или другой UI-слой). Подробный статус реализации каждого компонента — в client/README.md.
Формат конфигурации соответствует стандартному .conf WireGuard ([Interface] / [Peer]). Пример без реальных ключей — configs/sample.conf.
- Прозрачность — весь код клиента открыт и проверяем.
- Минимум данных — клиент не собирает телеметрию и не хранит логи активности.
- Простота — минимум шагов от скачивания до подключения.
- ROADMAP.md — что и в каком порядке реализуется
- SECURITY.md — модель угроз и процесс раскрытия уязвимостей