Skip to content

[FEATURE] VPN #92

@cachebag

Description

@cachebag

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 connections
  • connect_vpn(name: &str, credentials: VpnCredentials) - Connect to VPN
  • disconnect_vpn(name: &str) - Disconnect from VPN
  • current_vpn() - Get active VPN connection
  • forget_vpn(name: &str) - Remove saved VPN

For Developers - what would your solution be?

  1. New Models (models.rs):

    • VpnConnection struct with name, type, state
    • VpnType enum (OpenVPN, WireGuard, IKEv2, etc.)
    • VpnCredentials enum with type-specific fields
  2. New Module: vpn.rs (internal):

  3. New Module: vpn_builders.rs:

    • Connection builders for each VPN type (similar to wifi_builders.rs)
    • Start with OpenVPN, expand to WireGuard/IKEv2
  4. Update proxies.rs:

    • Add org.freedesktop.NetworkManager.VPN.Connection proxy trait
  5. Update network_manager.rs:

    • Add VPN methods delegating to vpn:: module

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or requestnmrsChanges to nmrs

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions