From f6a7cfa85a7b1ceb2336a2a60a02dd6ce136ffd5 Mon Sep 17 00:00:00 2001 From: beckline Date: Sun, 15 Feb 2026 01:48:18 +0300 Subject: [PATCH] docs: expand README with project overview --- README.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4f008d4..829c213 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ -# elmprodvpn +# elmprodvpn (Selective VPN Dashboard) -Devlop app selective vpn \ No newline at end of file +Local Linux toolset (Go API + Qt GUI) to manage selective VPN routing and DNS wildcarding for AdGuard VPN / SmartDNS. + +Key features: +- Selective routes via nftables sets (`agvpn4` / `agvpn_dyn4`) + policy routing table (`agvpn`). +- DNS upstream management (default + meta) and optional SmartDNS wildcard list. +- Traffic modes: Selective (fwmark `0x66`), Full tunnel, Direct. +- Auto-local bypass to keep LAN/docker reachable in Full tunnel. +- Policy overrides: force VPN/Direct by source subnet, UID, or systemd cgroup. +- Runtime per-app routing: launch an app in a `systemd --user` scope and apply a temporary cgroup-based mark. + +Repo layout: +- `selective-vpn-api/` - Go backend API (localhost, default `127.0.0.1:8080`). +- `selective-vpn-gui/` - PySide6 GUI (`vpn_dashboard_qt.py`). + +Requirements (high level): +- Linux with `systemd`, `nftables`, `iproute2`, cgroup v2. +- Python 3 + PySide6 + `requests` (GUI). +- Root privileges for routing/nftables changes (run API as a privileged service).