-
-
Notifications
You must be signed in to change notification settings - Fork 15
Closed
Labels
Milestone
Description
Is your feature request related to a problem? Please describe.
The library only supports WiFi connections. Users cannot connect to VPNs (OpenVPN, WireGuard, IKEv2, etc.) or manage VPN configurations.
Describe the solution you'd like
Add VPN support with an API similar to WiFi:
list_vpn_connections()- List available VPN connectionsconnect_vpn(name: &str, credentials: VpnCredentials)- Connect to VPNdisconnect_vpn(name: &str)- Disconnect from VPNcurrent_vpn()- Get active VPN connectionforget_vpn(name: &str)- Remove saved VPN
For Developers - what would your solution be?
-
New Models (
models.rs):VpnConnectionstruct with name, type, stateVpnTypeenum (OpenVPN, WireGuard, IKEv2, etc.)VpnCredentialsenum with type-specific fields
-
New Module:
vpn.rs(internal):- Core VPN operations mirroring
connection.rspattern - Reuse unified disconnect/state polling logic (after Remove All Repeated “disconnect + wait loop” Logic #79, State polling logic should be unified #80)
- Core VPN operations mirroring
-
New Module:
vpn_builders.rs:- Connection builders for each VPN type (similar to
wifi_builders.rs) - Start with OpenVPN, expand to WireGuard/IKEv2
- Connection builders for each VPN type (similar to
-
Update
proxies.rs:- Add
org.freedesktop.NetworkManager.VPN.Connectionproxy trait
- Add
-
Update
network_manager.rs:- Add VPN methods delegating to
vpn::module
- Add VPN methods delegating to
Dependencies: Should complete #79, #80, #81 first to reuse extracted patterns.
Additional context
VPN connections use virtual interfaces (tun/tap), so device selection differs from WiFi. NetworkManager stores VPN configs in connection.type = "vpn" with type-specific settings in vpn.data dictionary.
Reactions are currently unavailable