
Cliente VPN oficial para iOS e macOS que fornece tunelamento criptografado, armazenamento seguro de credenciais, configuração automatizada de servidor e suporte aos protocolos VPN mais populares.
Copyright (c) 2025 Proton Technologies AG
Este projeto usa o Swift Package Manager para todas as suas dependências. Permita que o Xcode resolva os pacotes antes de executar qualquer target.
git submodule init + git submodule update)brew bundleCmd+Shift+K)Um conjunto de segredos é necessário para compilar o projeto.
Eles incluem URLs e chaves, e são mantidos em arquivos chamados ObfuscatedConstants.swift.
Esses arquivos são mantidos em um repositório separado, o que requer alguma configuração adicional para mantê-los sincronizados.
Primeiramente, execute o script localizado em Integration/Scripts/credentials.sh com o comando setup.
Forneça o caminho onde você deseja que o repositório de segredos seja clonado localmente usando o argumento -p, e a url do repositório usando o argumento -r.
./Integration/Scripts/credentials.sh setup -p <path to credentials repo> -r <credentials remote>
Em seguida, para verificar se a configuração foi bem-sucedida:
./Integration/Scripts/credentials.sh checkout
Se configurado corretamente, as constantes ofuscadas serão sincronizadas automaticamente durante a fase de build Generate Obfuscated Constants de cada aplicativo.
O projeto é empacotado por camada para evitar o inferno da dependência de módulos:
Adicionar novo código/recurso ao LegacyCommon e ao NEHelper deve ser evitado se possível. Esses pacotes devem ser gradualmente desmembrados para colocar seus componentes em pacotes novos/existentes nas três categorias acima.
Durante o desenvolvimento, o swiftlint é executado em modo não estrito para facilitar o desenvolvimento sem se preocupar com a formatação do código. No CI, o linting é estrito e falhará em qualquer aviso. Antes de commitar código neste repositório, execute o seguinte script para adicionar um hook de pre-commit que verificará todos os arquivos novos/modificados em modo estrito e impedirá que você commite código que não passará no CI.
./Integration/Scripts/pre_commit_lint.sh setup
O aplicativo usa o SwiftGen para gerar o arquivo Localizable.strings para acessar todas as strings do aplicativo armazenadas nos arquivos Localizable.strings padrão. Basta adicionar uma nova string ao pacote Strings e executar o comando swiftgen em um diretório onde o swiftgen.yml esteja definido.
Os arquivos de código e dados desta distribuição são licenciados sob os termos da GPLv3, publicados pela Free Software Foundation. Consulte https://www.gnu.org/licenses/ para uma cópia desta licença.
Copyright (c) 2025 Proton Technologies AG