
iOS 및 macOS용 공식 VPN 클라이언트로, 암호화된 터널링, 안전한 자격 증명 저장, 자동 서버 구성, 그리고 널리 사용되는 VPN 프로토콜 지원을 제공합니다.
Copyright (c) 2025 Proton Technologies AG
이 프로젝트는 모든 의존성에 Swift Package Manager를 사용합니다. 타깃을 실행하기 전에 Xcode가 패키지를 확인하도록 허용하십시오.
git submodule init + git submodule update).brew bundle로 Homebrew 의존성을 설치하십시오.Cmd+Shift+K).프로젝트를 빌드하려면 일련의 비밀 값이 필요합니다.
여기에는 URL과 키가 포함되며, ObfuscatedConstants.swift라는 파일에 보관됩니다.
이 파일들은 별도의 저장소에 보관되며, 동기화 상태를 유지하려면 몇 가지 추가 설정이 필요합니다.
먼저, Integration/Scripts/credentials.sh에 있는 스크립트를 setup 명령으로 호출하십시오.
-p 인수를 사용하여 비밀 저장소를 로컬에 클론할 경로를 지정하고, -r 인수를 사용하여 저장소의 URL을 지정하십시오.
./Integration/Scripts/credentials.sh setup -p <path to credentials repo> -r <credentials remote>
그런 다음, 설정이 성공했는지 확인하려면:
./Integration/Scripts/credentials.sh checkout
설정이 올바르게 되면, 난독화된 상수는 각 앱의 Generate Obfuscated Constants 빌드 단계에서 자동으로 동기화됩니다.
프로젝트는 모듈 의존성 지옥을 피하기 위해 계층으로 패키징되어 있습니다:
가능하면 LegacyCommon 및 NEHelper에 새 코드/기능을 추가하는 것을 피해야 합니다. 이 패키지들은 점진적으로 분해하여 구성 요소를 위의 세 가지 범주의 새 패키지나 기존 패키지에 배치해야 합니다.
개발 중에는 swiftlint가 비엄격 모드로 실행되어 코드 형식에 신경 쓰지 않고 더 쉽게 개발할 수 있습니다. CI에서는 린팅이 엄격하며 경고가 있으면 실패합니다. 이 저장소에 코드를 커밋하기 전에 다음 스크립트를 실행하여 pre-commit 훅을 추가하십시오. 이 훅은 모든 새 파일/수정된 파일을 엄격 모드로 검사하여 CI를 통과하지 못할 코드를 커밋하지 못하게 합니다.
./Integration/Scripts/pre_commit_lint.sh setup
앱은 SwiftGen을 사용하여 표준 Localizable.strings 파일에 저장된 모든 앱 문자열에 접근하기 위한 Localizable.strings 파일을 생성합니다. Strings 패키지에 새 문자열을 추가하고 swiftgen.yml이 정의된 디렉터리에서 swiftgen 명령을 실행하기만 하면 됩니다.
이 배포물의 코드와 데이터 파일은 자유 소프트웨어 재단(Free Software Foundation)이 발표한 GPLv3 조건에 따라 라이선스가 부여됩니다. 이 라이선스의 사본은 https://www.gnu.org/licenses/에서 확인하십시오.
Copyright (c) 2025 Proton Technologies AG