
Client VPN ufficiale per iOS e macOS che offre tunneling crittografato, archiviazione sicura delle credenziali, configurazione automatizzata del server e supporto per i protocolli VPN più diffusi.
Copyright (c) 2025 Proton Technologies AG
Questo progetto usa Swift Package Manager per tutte le sue dipendenze. Consenti a Xcode di risolvere i pacchetti prima di eseguire qualsiasi target.
git submodule init + git submodule update)brew bundleCmd+Shift+K)Per compilare il progetto è necessario un set di segreti.
Questi includono URL e chiavi, e sono conservati in file chiamati ObfuscatedConstants.swift.
Questi file sono conservati in un repository separato, il che richiede una configurazione aggiuntiva per mantenerli sincronizzati.
Innanzitutto, invoca lo script situato in Integration/Scripts/credentials.sh con il comando setup.
Fornisci il percorso in cui desideri che il repository dei segreti venga clonato localmente usando l'argomento -p, e l'URL del repository usando l'argomento -r.
./Integration/Scripts/credentials.sh setup -p <path to credentials repo> -r <credentials remote>
Quindi, per verificare che la configurazione sia andata a buon fine:
./Integration/Scripts/credentials.sh checkout
Se la configurazione è corretta, le costanti offuscate verranno sincronizzate automaticamente durante la fase di build Generate Obfuscated Constants di ciascuna app.
Il progetto è organizzato in pacchetti per livello, al fine di evitare l'inferno delle dipendenze tra moduli:
L'aggiunta di nuovo codice/funzionalità a LegacyCommon e NEHelper dovrebbe essere evitata se possibile. Questi pacchetti dovrebbero essere gradualmente smantellati per collocare i loro componenti in pacchetti nuovi/esistenti nelle tre categorie sopra indicate.
Durante lo sviluppo, swiftlint viene eseguito in modalità non restrittiva, così è più facile sviluppare senza preoccuparsi della formattazione del codice. In CI, il linting è restrittivo e fallirà su qualsiasi warning. Prima di committare codice in questo repository, esegui il seguente script per aggiungere un hook pre-commit che controllerà tutti i file nuovi/modificati in modalità restrittiva e ti impedirà di committare codice che non supererebbe la CI.
./Integration/Scripts/pre_commit_lint.sh setup
L'app usa SwiftGen per generare il file Localizable.strings per accedere a tutte le stringhe dell'app memorizzate nei file Localizable.strings standard. Basta aggiungere una nuova stringa al pacchetto Strings ed eseguire il comando swiftgen in una directory in cui è definito swiftgen.yml.
I file di codice e dati in questa distribuzione sono concessi in licenza secondo i termini della GPLv3 come pubblicata dalla Free Software Foundation. Vedi https://www.gnu.org/licenses/ per una copia di questa licenza.
Copyright (c) 2025 Proton Technologies AG