
Cliente VPN oficial para iOS y macOS que proporciona túneles cifrados, almacenamiento seguro de credenciales, configuración automatizada del servidor y soporte para protocolos VPN populares.
Copyright (c) 2025 Proton Technologies AG
Este proyecto utiliza Swift Package Manager para todas sus dependencias. Permite que Xcode resuelva los paquetes antes de ejecutar cualquier target.
git submodule init + git submodule update)brew bundleCmd+Shift+K)Se requiere un conjunto de secretos para poder compilar el proyecto.
Estos incluyen URLs y claves, y se mantienen en archivos llamados ObfuscatedConstants.swift.
Estos archivos se guardan en un repositorio separado, lo que requiere una configuración adicional para mantenerlos sincronizados.
Primero, invoca el script ubicado en Integration/Scripts/credentials.sh con el comando setup.
Proporciona la ruta donde deseas que se clone localmente el repositorio de secretos usando el argumento -p, y la URL del repositorio usando el argumento -r.
./Integration/Scripts/credentials.sh setup -p <path to credentials repo> -r <credentials remote>
Luego, para verificar que la configuración se ha realizado correctamente:
./Integration/Scripts/credentials.sh checkout
Si la configuración es correcta, las constantes ofuscadas se sincronizarán automáticamente durante la fase de compilación Generate Obfuscated Constants de cada aplicación.
El proyecto está empaquetado por capas para evitar el infierno de dependencias de módulos:
Se debe evitar añadir código o funcionalidades nuevos a LegacyCommon y NEHelper siempre que sea posible. Estos paquetes deben reducirse gradualmente para colocar sus componentes en paquetes nuevos o existentes de las tres categorías anteriores.
Durante el desarrollo, swiftlint se ejecuta en modo no estricto para que sea más fácil desarrollar sin preocuparse por el formato del código. En CI, el linting es estricto y fallará ante cualquier aviso. Antes de commitear código a este repositorio, ejecuta el siguiente script para añadir un hook de pre-commit que comprobará todos los archivos nuevos/modificados en modo estricto y te impedirá commitear código que no pasaría el CI.
./Integration/Scripts/pre_commit_lint.sh setup
La aplicación usa SwiftGen para generar el archivo Localizable.strings con el fin de acceder a todas las cadenas de la aplicación almacenadas en los archivos estándar Localizable.strings. Solo añade una nueva cadena al paquete Strings y ejecuta el comando swiftgen en un directorio donde esté definido swiftgen.yml.
Los archivos de código y datos de esta distribución están licenciados bajo los términos de la GPLv3 publicada por la Free Software Foundation. Consulta https://www.gnu.org/licenses/ para obtener una copia de esta licencia.
Copyright (c) 2025 Proton Technologies AG