How jomarmata24/mobile-openvpn works
Projectmata Mobile OpenVPN is a NativePHP plugin exposing VPN support, permission, connect, disconnect, and status operations to Laravel and in-app JavaScript. The principal flow passes a profile and optional credentials through a client-facing API and NativePHP bridge to platform-specific implementations; Android parses and launches a profile through ics-openvpn, while iOS documents an incomplete Network Extension integration. The iOS connection lifecycle is scaffolded, not backed by an OpenVPN runtime. The tree and sampled source establish the bridge layers and platform handlers; no separate runtime service or completed iOS tunnel implementation is shown.
Main entry points: OpenVpnPlugin.kt Android handlers · OpenVpnPlugin.swift iOS handlers · OpenVpnManager.php VPN manager · OpenVpn.php OpenVPN facade
Components 16
App APIs
- Laravel app
- OpenVPN facade
src/Facades/OpenVpn.php - VPN manager
src/OpenVpnManager.php - In-app JavaScript
- JavaScript API
resources/js/index.js
NativePHP Bridge
- Service provider
src/MobileOpenVpnServiceProvider.php - NativePHP bridge
Android VPN
- Android handlers
resources/android/src/main/java/com/projectmata/mobileopenvpn/OpenVpnPlugin.kt - VPN consent
resources/android/src/main/java/com/projectmata/mobileopenvpn/OpenVpnPlugin.kt - Profile parsing
resources/android/src/main/java/com/projectmata/mobileopenvpn/OpenVpnPlugin.kt - Profile manager
resources/android/src/main/java/com/projectmata/mobileopenvpn/OpenVpnPlugin.kt - OpenVPN service
resources/android/src/main/java/com/projectmata/mobileopenvpn/OpenVpnPlugin.kt - VPN status
resources/android/src/main/java/com/projectmata/mobileopenvpn/OpenVpnPlugin.kt
iOS VPN
- iOS handlers
resources/ios/Sources/MobileOpenVpn/OpenVpnPlugin.swift - VPN preferences
resources/ios/Sources/MobileOpenVpn/OpenVpnPlugin.swift - Network Extension
Connections 16
- Laravel app → OpenVPN facade: invokes
- OpenVPN facade → VPN manager: resolves
- VPN manager → NativePHP bridge: calls methods
- In-app JavaScript → JavaScript API: invokes
- JavaScript API → NativePHP bridge: POSTs calls
- Service provider → VPN manager: registers
- NativePHP bridge → Android handlers: dispatches
- NativePHP bridge → iOS handlers: dispatches
- Android handlers → VPN consent: checks consent
- VPN consent → Android handlers: returns grant
- Android handlers → Profile parsing: parses profile
- Profile parsing → Profile manager: saves profile
- Android handlers → OpenVPN service: starts or stops
- Android handlers → VPN status: reads status
- iOS handlers → VPN preferences: loads and saves
- iOS handlers → Network Extension: planned tunnel control