Skip to content

msosaleenspace/tunnelkit_flutter

Repository files navigation

CyberFence VPN - Flutter con TunnelKit

AplicaciΓ³n Flutter para iOS que se conecta a una VPN OpenVPN usando TunnelKit.

πŸ“± CaracterΓ­sticas

  • βœ… ConexiΓ³n a VPN OpenVPN
  • βœ… DesconexiΓ³n de VPN
  • βœ… VisualizaciΓ³n de estados en tiempo real:
    • Desconectada
    • Conectando
    • Conectada
    • Desconectando
  • βœ… Interfaz moderna y amigable
  • βœ… IntegraciΓ³n nativa con iOS usando TunnelKit

πŸ—οΈ Arquitectura

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Flutter UI (Dart)           β”‚
β”‚  - Botones conectar/desconectar     β”‚
β”‚  - VisualizaciΓ³n de estado          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
              β”‚ MethodChannel
              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      Swift Native (iOS)             β”‚
β”‚  - VPNManager                       β”‚
β”‚  - VPNConfiguration                 β”‚
β”‚  - AppDelegate                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
              β”‚ TunnelKit API
              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    PacketTunnelProvider             β”‚
β”‚  (Network Extension)                β”‚
β”‚  - Maneja el tΓΊnel VPN              β”‚
β”‚  - Usa TunnelKitOpenVPN             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‚ Estructura del Proyecto

tunnelkit_flutter/
β”œβ”€β”€ lib/
β”‚   └── main.dart                    # UI de Flutter con MethodChannel
β”œβ”€β”€ ios/
β”‚   β”œβ”€β”€ Runner/
β”‚   β”‚   β”œβ”€β”€ AppDelegate.swift        # IntegraciΓ³n del MethodChannel
β”‚   β”‚   β”œβ”€β”€ VPNManager.swift         # LΓ³gica de conexiΓ³n VPN
β”‚   β”‚   β”œβ”€β”€ VPNConfiguration.swift   # Certificados y config VPN
β”‚   β”‚   β”œβ”€β”€ Runner.entitlements      # Permisos de la app
β”‚   β”‚   └── Info.plist
β”‚   β”œβ”€β”€ TunnelExtension/
β”‚   β”‚   β”œβ”€β”€ PacketTunnelProvider.swift    # Network Extension
β”‚   β”‚   β”œβ”€β”€ TunnelExtension.entitlements  # Permisos de extensiΓ³n
β”‚   β”‚   └── Info.plist
β”‚   └── Podfile                      # Dependencias TunnelKit
β”œβ”€β”€ INSTRUCCIONES_VPN.md             # πŸ“– GuΓ­a completa paso a paso
└── COMANDOS_RAPIDOS.md              # ⚑ Comandos ΓΊtiles

πŸš€ Inicio RΓ‘pido

1. Instalar dependencias

# Flutter
flutter pub get

# iOS (CocoaPods)
cd ios
pod install
cd ..

2. Configurar en Xcode

open ios/Runner.xcworkspace

Ver INSTRUCCIONES_VPN.md para la configuraciΓ³n completa.

3. Ejecutar

flutter run

⚠️ IMPORTANTE: Debes usar un dispositivo físico. Las VPN no funcionan en el simulador.

πŸ“‹ Requisitos

  • Flutter SDK ^3.7.2
  • iOS 12.0 o superior
  • Xcode 14 o superior
  • CocoaPods instalado
  • Cuenta de Apple Developer (para firmar la app y crear provisioning profiles)
  • Dispositivo iOS fΓ­sico (no funciona en simulador)

πŸ”§ Dependencias iOS (CocoaPods)

  • TunnelKitCore ~> 6.0
  • TunnelKitManager ~> 6.0
  • TunnelKitOpenVPN ~> 6.0
  • TunnelKitOpenVPNAppExtension ~> 6.0

πŸ” ConfiguraciΓ³n VPN

Los datos de conexiΓ³n estΓ‘n en ios/Runner/VPNManager.swift:

private let server = "cyberfencevpn.v4.softether.net"
private let port = "9201"
private let username = "cyberfencevpnpro"
private let password = "md4rshywX2YUDXCoanxghYF4ryvWPN"

Los certificados y TLS keys estΓ‘n en ios/Runner/VPNConfiguration.swift.

πŸ“± Capabilities requeridas

App Principal (Runner):

  • Network Extensions (Packet Tunnel)
  • App Groups: group.com.perez.CyberFence
  • Keychain Sharing

Network Extension (TunnelExtension):

  • App Groups: group.com.perez.CyberFence
  • Keychain Sharing

🎯 Bundle Identifiers

  • App principal: com.example.cyberFence.tunnelkit_flutter
  • Network Extension: com.example.cyberFence.tunnelkit-flutter.TunnelExtension

Estos deben estar configurados en Apple Developer Portal con las capabilities necesarias.

πŸ“š DocumentaciΓ³n

  • INSTRUCCIONES_VPN.md - GuΓ­a completa de configuraciΓ³n paso a paso
  • COMANDOS_RAPIDOS.md - Comandos ΓΊtiles para desarrollo

πŸ› Problemas Comunes

"Module 'TunnelKit...' not found"

cd ios
pod install

"Code signing error"

  • Configura tu Team en Xcode (Signing & Capabilities)
  • Verifica los provisioning profiles en Apple Developer

La VPN no se conecta

  • Acepta los permisos de VPN cuando iOS los solicite
  • Ve a ConfiguraciΓ³n β†’ General β†’ VPN para verificar

πŸ› οΈ Desarrollo

Compilar

flutter build ios

Ver logs

flutter run -v

Limpiar proyecto

flutter clean
cd ios
pod install
cd ..
flutter run

πŸ“– Referencias

πŸ“„ Licencia

Proyecto privado - CyberFence

πŸ‘¨β€πŸ’» Autor

Adaptado de CyberFence-Original para Flutter

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors