Skip to content

Add auto-connect on system startup functionality #37

@parfenovvs

Description

@parfenovvs

Summary

Implement auto-connect functionality that automatically establishes VPN connection on system startup or network changes.

Features

Auto-Connect Modes

  • System startup: Connect when system boots
  • Network change: Connect when network interface comes up
  • User login: Connect when user logs into desktop session
  • Manual trigger: Enable/disable auto-connect per session

Configuration Options

# Enable auto-connect
mbvpn auto-connect enable --server us-east-01
mbvpn auto-connect enable --quick-connect

# Configure auto-connect settings
mbvpn auto-connect set --delay 10s
mbvpn auto-connect set --retry-attempts 3
mbvpn auto-connect set --on-network-change

# Check status
mbvpn auto-connect status

System Integration

Systemd Service (Linux)

[Unit]
Description=MBVPN Auto-Connect
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
User=mbvpn
ExecStart=/usr/local/bin/mbvpn auto-connect start
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

NetworkManager Integration

  • Hook into NetworkManager events
  • React to network interface changes
  • Handle VPN-over-VPN scenarios

Configuration Format

# In ~/.config/mbvpn/config.yml
auto_connect:
  enabled: true
  mode: "quick-connect"  # or specific server
  server: "us-east-01"
  triggers:
    - "system-startup"
    - "network-change"
  delay: "10s"
  retry_attempts: 3
  require_kill_switch: true

Implementation Details

  • Create systemd user service files
  • Handle privilege escalation for VPN operations
  • Implement network change detection
  • Add robust error handling and logging
  • Consider security implications

Security Considerations

  • Run with minimal required privileges
  • Secure storage of auto-connect preferences
  • Handle failed auto-connect gracefully
  • Audit logging for auto-connect events

Priority

🚀 Priority 2 (2-3 weeks)

Labels

  • enhancement
  • priority-2
  • automation
  • system-integration

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions