
iOS और macOS के लिए आधिकारिक VPN क्लाइंट जो एन्क्रिप्टेड टनलिंग, सुरक्षित क्रेडेंशियल स्टोरेज, स्वचालित सर्वर कॉन्फ़िगरेशन और लोकप्रिय VPN प्रोटोकॉल के लिए समर्थन प्रदान करता है।
कॉपीराइट (c) 2025 Proton Technologies AG
यह प्रोजेक्ट अपनी सभी निर्भरताओं के लिए Swift Package Manager का उपयोग करता है। किसी भी टार्गेट को चलाने से पहले Xcode को पैकेज हल करने दें।
git submodule init + git submodule update)brew bundle के साथ Homebrew निर्भरताएँ इंस्टॉल करेंCmd+Shift+K)प्रोजेक्ट बनाने के लिए सीक्रेट्स का एक सेट आवश्यक है।
इनमें URLs और कुंजियाँ शामिल हैं, और इन्हें 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 पर, लिंटिंग सख्त होती है और किसी भी चेतावनी पर विफल हो जाएगी। इस रिपॉज़िटरी में कोड कमिट करने से पहले निम्नलिखित स्क्रिप्ट चलाएँ ताकि एक प्री-कमिट हुक जोड़ा जा सके जो सभी नई/संशोधित फ़ाइलों को स्ट्रिक्ट मोड में जाँचेगा और आपको ऐसा कोड कमिट करने से रोकेगा जो CI से पास नहीं होगा।
./Integration/Scripts/pre_commit_lint.sh setup
ऐप मानक Localizable.strings फ़ाइलों में संग्रहीत सभी ऐप स्ट्रिंग्स तक पहुँचने के लिए Localizable.strings फ़ाइल उत्पन्न करने हेतु SwiftGen का उपयोग करता है। बस Strings पैकेज में एक नई स्ट्रिंग जोड़ें और उस निर्देशिका में swiftgen कमांड चलाएँ जहाँ swiftgen.yml परिभाषित है।
इस वितरण में कोड और डेटा फ़ाइलें Free Software Foundation द्वारा प्रकाशित GPLv3 की शर्तों के तहत लाइसेंस प्राप्त हैं। इस लाइसेंस की एक प्रति के लिए https://www.gnu.org/licenses/ देखें।
कॉपीराइट (c) 2025 Proton Technologies AG