23 lines
1.2 KiB
Markdown
23 lines
1.2 KiB
Markdown
# elmprodvpn (Selective VPN Dashboard)
|
|
|
|
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` unit and apply a temporary cgroup-based mark (VPN/Direct).
|
|
- Saved app profiles + desktop shortcuts: one-click launch for a profile (uses `selective-vpn-gui/svpn_run_profile.py`).
|
|
|
|
Repo layout:
|
|
- `selective-vpn-api/` - Go backend API (localhost, default `127.0.0.1:8080`).
|
|
- `selective-vpn-gui/` - PySide6 GUI (`vpn_dashboard_qt.py`).
|
|
- `selective-vpn-gui/svpn_run_profile.py` - headless launcher used by profile shortcuts.
|
|
|
|
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).
|