From ae1aa1a2685601a86526de22a1783a4dccb406ae Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Wed, 27 Oct 2021 18:47:08 +0200 Subject: [PATCH] Reorganize project with SwiftPM - Drop CocoaPods completely - Make PassepartoutCore a Swift package - Enable Bitcode to fix OpenSSL linkage (iOS) - Update CI scripts without CocoaPods --- .github/workflows/beta.yml | 12 +- .gitignore | 2 + .gitmodules | 6 +- .travis.yml | 16 - Gemfile.lock | 34 +- Passepartout.xcodeproj/project.pbxproj | 1438 ++--------------- .../xcschemes/Passepartout-iOS.xcscheme | 10 - .../xcschemes/Passepartout-macOS.xcscheme | 24 +- .../xcschemes/PassepartoutCore-iOS.xcscheme | 95 -- .../xcschemes/PassepartoutCore-macOS.xcscheme | 91 -- .../PassepartoutCoreTests-iOS.xcscheme | 52 - .../PassepartoutCoreTests-macOS.xcscheme | 52 - .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - Passepartout/App/Descriptible.swift | 5 +- Passepartout/App/iOS/AppDelegate.swift | 7 +- .../iOS}/Base.lproj/Intents.intentdefinition | 0 Passepartout/App/iOS/CHANGELOG.md | 1 + .../App/iOS/Global/HostImporter.swift | 8 +- .../App/iOS/Global/IssueReporter.swift | 6 +- Passepartout/App/iOS/Global/Macros.swift | 1 + Passepartout/App/iOS/Global/Theme+Cells.swift | 6 +- .../App/iOS/Global/Theme+Titles.swift | 2 +- Passepartout/App/iOS/Global/Theme.swift | 1 + .../iOS}/Intents/IntentDispatcher.swift | 3 +- .../Scenes/About/AboutViewController.swift | 2 + .../iOS/Scenes/AccountViewController.swift | 5 +- .../ConfigurationModificationDelegate.swift | 2 +- .../Scenes/ConfigurationViewController.swift | 6 +- .../iOS/Scenes/DebugLogViewController.swift | 7 +- .../iOS/Scenes/EndpointViewController.swift | 5 +- .../NetworkSettingsViewController.swift | 7 +- .../Organizer/DonationViewController.swift | 4 +- .../ImportedHostsViewController.swift | 3 +- .../Organizer/OrganizerViewController.swift | 10 +- .../Organizer/WizardHostViewController.swift | 5 +- .../WizardProviderViewController.swift | 5 +- .../Scenes/ProviderPoolViewController.swift | 3 +- .../Scenes/ProviderPresetViewController.swift | 1 + .../Purchase/PurchaseViewController.swift | 3 +- .../Scenes/ServerNetworkViewController.swift | 6 +- .../iOS/Scenes/ServiceViewController.swift | 12 +- .../ShortcutsAddViewController.swift | 3 +- .../ShortcutsConnectToViewController.swift | 5 +- .../Shortcuts/ShortcutsViewController.swift | 3 +- .../iOS}/de.lproj/Intents.strings | 0 .../iOS}/el.lproj/Intents.strings | 0 .../iOS}/en.lproj/Intents.strings | 0 .../iOS}/es.lproj/Intents.strings | 0 .../iOS}/fr.lproj/Intents.strings | 0 .../iOS}/it.lproj/Intents.strings | 0 .../iOS}/nl.lproj/Intents.strings | 0 .../iOS}/pl.lproj/Intents.strings | 0 .../iOS}/pt.lproj/Intents.strings | 0 .../iOS}/ru.lproj/Intents.strings | 0 .../iOS}/sv.lproj/Intents.strings | 0 .../iOS}/zh-Hans.lproj/Intents.strings | 0 Passepartout/App/macOS/AppDelegate.swift | 3 +- Passepartout/App/macOS/CHANGELOG.md | 1 + .../App/macOS/Global/HostImporter.swift | 6 +- .../App/macOS/Global/IssueReporter.swift | 8 +- Passepartout/App/macOS/Global/Macros.swift | 1 + .../Global/TextInputViewController.swift | 1 + .../App/macOS/Global/Theme+Views.swift | 4 +- Passepartout/App/macOS/Global/Theme.swift | 1 + .../App/macOS/Global/WindowManager.swift | 1 + Passepartout/App/macOS/Menu/StatusMenu.swift | 5 +- .../Scenes/OrganizerProfileTableView.swift | 1 + .../Scenes/OrganizerViewController.swift | 7 +- .../Preferences/DebugLogViewController.swift | 3 +- .../PreferencesGeneralViewController.swift | 1 + .../PreferencesViewController.swift | 1 + .../Purchase/PurchaseViewController.swift | 1 + .../Service/AccountViewController.swift | 3 +- .../ConfigurationViewController.swift | 3 +- .../Customization/DNSViewController.swift | 3 +- .../DefaultGatewayViewController.swift | 3 +- .../EndpointViewController.swift | 3 +- .../Customization/MTUViewController.swift | 3 +- .../ProfileCustomizationViewController.swift | 4 +- .../Customization/ProxyViewController.swift | 1 + .../TrustedNetworksAddViewController.swift | 1 + .../TrustedNetworksViewController.swift | 1 + .../Scenes/Service/HostServiceView.swift | 1 + .../Scenes/Service/ProviderServiceView.swift | 1 + .../Service/ServiceViewController.swift | 4 +- Passepartout/Core/Info.plist | 24 - Passepartout/Core/PassepartoutCore.h | 36 - Passepartout/Core/swiftgen.yml | 8 - Passepartout/Tests/Info.plist | 22 - .../Tunnel/PacketTunnelProvider.swift | 4 +- Passepartout/Tunnel/Tunnel-iOS.entitlements | 2 +- PassepartoutCore/Package.resolved | 79 + PassepartoutCore/Package.swift | 61 + .../PassepartoutConstants}/AppConstants.swift | 147 +- .../GroupConstants.swift | 3 +- .../InfrastructureName.swift | 11 +- .../PassepartoutConstants}/LocalProduct.swift | 20 +- PassepartoutCore/Sources/PassepartoutCore/API | 1 + .../PassepartoutCore/AppConstants+Core.swift | 70 + .../PassepartoutCore}/ApplicationError.swift | 0 .../Sources/PassepartoutCore}/Issue.swift | 2 +- .../Model/ConnectionProfile.swift | 4 +- .../ConnectionService+Configurations.swift | 0 .../Model/ConnectionService+Migration.swift | 4 +- .../Model/ConnectionService.swift | 12 +- .../PassepartoutCore}/Model/Credentials.swift | 2 +- .../PassepartoutCore}/Model/DataUnit.swift | 0 .../PassepartoutCore}/Model/DebugLog.swift | 1 + .../Model/EndpointDataSource.swift | 2 +- .../PassepartoutCore}/Model/GracefulVPN.swift | 3 +- .../Model/LocalProduct+Infrastructure.swift | 27 + .../Model/OpenVPNOptions.swift | 2 +- .../PassepartoutCore}/Model/Preferences.swift | 0 .../Model/ProductManager.swift | 4 +- .../Model/ProfileNetworkSettings.swift | 3 +- .../Profiles/HostConnectionProfile.swift | 3 +- .../PlaceholderConnectionProfile.swift | 3 +- .../Model/Profiles/PoolCategory.swift | 0 .../Model/Profiles/ProfileKey.swift | 3 +- .../Profiles/ProviderConnectionProfile.swift | 8 +- .../Model/SessionProxy+Communication.swift | 2 +- .../Model/TransientStore.swift | 10 +- .../PassepartoutCore}/Model/TrustPolicy.swift | 0 .../Model/TrustedNetworks.swift | 0 .../Resources/de.lproj/Core.strings | 0 .../Resources/el.lproj/Core.strings | 0 .../Resources/en.lproj/Core.strings | 0 .../Resources/es.lproj/Core.strings | 0 .../Resources/fr.lproj/Core.strings | 0 .../Resources/it.lproj/Core.strings | 0 .../Resources/nl.lproj/Core.strings | 0 .../Resources/pl.lproj/Core.strings | 0 .../Resources/pt.lproj/Core.strings | 0 .../Resources/ru.lproj/Core.strings | 0 .../Resources/sv.lproj/Core.strings | 0 .../Resources/zh-Hans.lproj/Core.strings | 0 .../Infrastructure+CredentialsPurpose.swift | 3 +- .../Services/Infrastructure+External.swift | 59 + .../Services/Infrastructure+Metadata.swift | 3 +- .../Services/Infrastructure.swift | 34 +- .../Services/InfrastructureFactory.swift | 29 +- .../Services/InfrastructurePreset.swift | 8 +- .../PassepartoutCore}/Services/Pool.swift | 2 +- .../Services/PoolGroup.swift | 0 .../Services/WebServices.swift | 9 +- .../PassepartoutCore}/SwiftGen+Strings.swift | 0 .../UI/TrustedNetworksUI.swift | 0 .../Sources/PassepartoutCore}/Utils.swift | 5 +- .../PassepartoutCore}/VPN+Shared.swift | 4 +- .../PassepartoutOpenVPNTunnel/Dummy.swift | 1 + .../ConnectionServiceTests.swift | 4 +- .../InfrastructureTests.swift | 19 +- .../Resources}/ConnectionService.json | 0 .../Resources/example.zip | Bin 0 -> 794 bytes .../PassepartoutCoreTests}/UtilsTests.swift | 0 PassepartoutCore/swiftgen.yml | 8 + Podfile | 57 - Podfile.include | 19 - Podfile.lock | 90 -- Submodules/API | 1 - Submodules/fastlane-ci-templates | 2 +- fastlane/Gymfile | 1 - 163 files changed, 757 insertions(+), 2247 deletions(-) delete mode 100644 .travis.yml delete mode 100644 Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCore-iOS.xcscheme delete mode 100644 Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCore-macOS.xcscheme delete mode 100644 Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCoreTests-iOS.xcscheme delete mode 100644 Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCoreTests-macOS.xcscheme delete mode 100644 Passepartout.xcworkspace/contents.xcworkspacedata delete mode 100644 Passepartout.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename Passepartout/{Core/Resources => App/iOS}/Base.lproj/Intents.intentdefinition (100%) rename Passepartout/{Core/Sources => App/iOS}/Intents/IntentDispatcher.swift (99%) rename Passepartout/{Core/Resources => App/iOS}/de.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/el.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/en.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/es.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/fr.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/it.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/nl.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/pl.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/pt.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/ru.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/sv.lproj/Intents.strings (100%) rename Passepartout/{Core/Resources => App/iOS}/zh-Hans.lproj/Intents.strings (100%) delete mode 100644 Passepartout/Core/Info.plist delete mode 100644 Passepartout/Core/PassepartoutCore.h delete mode 100644 Passepartout/Core/swiftgen.yml delete mode 100644 Passepartout/Tests/Info.plist create mode 100644 PassepartoutCore/Package.resolved create mode 100644 PassepartoutCore/Package.swift rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutConstants}/AppConstants.swift (73%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutConstants}/GroupConstants.swift (96%) rename Passepartout/Core/Sources/Services/Infrastructure+Name.swift => PassepartoutCore/Sources/PassepartoutConstants/InfrastructureName.swift (88%) rename {Passepartout/Core/Sources/Model => PassepartoutCore/Sources/PassepartoutConstants}/LocalProduct.swift (86%) create mode 160000 PassepartoutCore/Sources/PassepartoutCore/API create mode 100644 PassepartoutCore/Sources/PassepartoutCore/AppConstants+Core.swift rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/ApplicationError.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Issue.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/ConnectionProfile.swift (97%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/ConnectionService+Configurations.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/ConnectionService+Migration.swift (97%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/ConnectionService.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/Credentials.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/DataUnit.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/DebugLog.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/EndpointDataSource.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/GracefulVPN.swift (98%) create mode 100644 PassepartoutCore/Sources/PassepartoutCore/Model/LocalProduct+Infrastructure.swift rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/OpenVPNOptions.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/Preferences.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/ProductManager.swift (99%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/ProfileNetworkSettings.swift (99%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/Profiles/HostConnectionProfile.swift (99%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/Profiles/PlaceholderConnectionProfile.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/Profiles/PoolCategory.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/Profiles/ProfileKey.swift (96%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/Profiles/ProviderConnectionProfile.swift (97%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/SessionProxy+Communication.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/TransientStore.swift (97%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/TrustPolicy.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Model/TrustedNetworks.swift (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/de.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/el.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/en.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/es.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/fr.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/it.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/nl.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/pl.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/pt.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/ru.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/sv.lproj/Core.strings (100%) rename {Passepartout/Core => PassepartoutCore/Sources/PassepartoutCore}/Resources/zh-Hans.lproj/Core.strings (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Services/Infrastructure+CredentialsPurpose.swift (95%) create mode 100644 PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+External.swift rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Services/Infrastructure+Metadata.swift (95%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Services/Infrastructure.swift (73%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Services/InfrastructureFactory.swift (92%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Services/InfrastructurePreset.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Services/Pool.swift (99%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Services/PoolGroup.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Services/WebServices.swift (88%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/SwiftGen+Strings.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/UI/TrustedNetworksUI.swift (100%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/Utils.swift (98%) rename {Passepartout/Core/Sources => PassepartoutCore/Sources/PassepartoutCore}/VPN+Shared.swift (93%) create mode 100644 PassepartoutCore/Sources/PassepartoutOpenVPNTunnel/Dummy.swift rename {Passepartout/Tests => PassepartoutCore/Tests/PassepartoutCoreTests}/ConnectionServiceTests.swift (94%) rename {Passepartout/Tests => PassepartoutCore/Tests/PassepartoutCoreTests}/InfrastructureTests.swift (84%) rename {Passepartout/Tests => PassepartoutCore/Tests/PassepartoutCoreTests/Resources}/ConnectionService.json (100%) create mode 100644 PassepartoutCore/Tests/PassepartoutCoreTests/Resources/example.zip rename {Passepartout/Tests => PassepartoutCore/Tests/PassepartoutCoreTests}/UtilsTests.swift (100%) create mode 100644 PassepartoutCore/swiftgen.yml delete mode 100644 Podfile delete mode 100644 Podfile.include delete mode 100644 Podfile.lock delete mode 160000 Submodules/API diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 484e9ac4..ab5a37b7 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -45,14 +45,6 @@ jobs: uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: latest-stable - - name: Cache CocoaPods - uses: actions/cache@v2 - with: - path: | - Pods - key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} - restore-keys: | - ${{ runner.os }}-pods- - name: Prepare for fastlane match run: | scripts/ci/recognize-match-hostname.sh @@ -101,12 +93,12 @@ jobs: uses: ruby/setup-ruby@v1 with: bundler-cache: true - - name: Submit to TestFlight (macOS) + - name: Publish on TestFlight (macOS) run: | export PILOT_APP_VERSION=`ci/version-number.sh mac` export PILOT_BUILD_NUMBER=`ci/build-number.sh mac` bundle exec fastlane --env mac,beta store_beta - - name: Submit to TestFlight (iOS) + - name: Publish on TestFlight (iOS) run: | export PILOT_APP_VERSION=`ci/version-number.sh ios` export PILOT_BUILD_NUMBER=`ci/build-number.sh ios` diff --git a/.gitignore b/.gitignore index af743ce4..ee95bdd8 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ default.profraw asc-key.json .bundle vendor/ +.build +.swiftpm diff --git a/.gitmodules b/.gitmodules index c92abb84..cbac6047 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ -[submodule "Submodules/API"] - path = Submodules/API - url = https://github.com/passepartoutvpn/api [submodule "Submodules/fastlane-ci-templates"] path = Submodules/fastlane-ci-templates url = https://github.com/keeshux/fastlane-ci-templates +[submodule "PassepartoutCore/Sources/PassepartoutCore/API"] + path = PassepartoutCore/Sources/PassepartoutCore/API + url = https://github.com/passepartoutvpn/api diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9450b000..00000000 --- a/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: objective-c -osx_image: xcode12.2 -xcode_workspace: Passepartout.xcworkspace -xcode_scheme: PassepartoutCore-iOS -xcode_destination: platform=iOS Simulator,OS=12.4,name=iPhone Xs Max -cache: - bundler: true - cocoapods: true -branches: - only: - - master - - fix-travis-ci -install: - - bundle install --jobs=3 --deployment --path=${BUNDLE_PATH:-vendor/bundle} - - bundle exec pod repo update - - travis_wait 40 bundle exec pod install --verbose diff --git a/Gemfile.lock b/Gemfile.lock index c6edeaba..a1489aa9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -17,17 +17,17 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.515.0) - aws-sdk-core (3.121.1) + aws-partitions (1.525.0) + aws-sdk-core (3.122.0) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.239.0) + aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-kms (1.49.0) - aws-sdk-core (~> 3, >= 3.120.0) + aws-sdk-kms (1.51.0) + aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.103.0) - aws-sdk-core (~> 3, >= 3.120.0) + aws-sdk-s3 (1.105.0) + aws-sdk-core (~> 3, >= 3.122.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) aws-sigv4 (1.4.0) @@ -86,7 +86,7 @@ GEM escape (0.0.4) ethon (0.15.0) ffi (>= 1.15.0) - excon (0.87.0) + excon (0.88.0) faraday (1.8.0) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -112,7 +112,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.5) - fastlane (2.196.0) + fastlane (2.197.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -156,7 +156,7 @@ GEM fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.12.0) + google-apis-androidpublisher_v3 (0.13.0) google-apis-core (>= 0.4, < 2.a) google-apis-core (0.4.1) addressable (~> 2.5, >= 2.5.1) @@ -167,11 +167,11 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.7.0) + google-apis-iamcredentials_v1 (0.8.0) google-apis-core (>= 0.4, < 2.a) - google-apis-playcustomapp_v1 (0.5.0) + google-apis-playcustomapp_v1 (0.6.0) google-apis-core (>= 0.4, < 2.a) - google-apis-storage_v1 (0.8.0) + google-apis-storage_v1 (0.9.0) google-apis-core (>= 0.4, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) @@ -187,7 +187,7 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.0.0) + googleauth (1.1.0) faraday (>= 0.17.3, < 2.0) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -198,10 +198,10 @@ GEM http-cookie (1.0.4) domain_name (~> 0.5) httpclient (2.8.3) - i18n (1.8.10) + i18n (1.8.11) concurrent-ruby (~> 1.0) jmespath (1.4.0) - json (2.6.0) + json (2.6.1) jwt (2.3.0) memoist (0.16.2) mini_magick (4.11.0) @@ -268,7 +268,7 @@ GEM rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) - zeitwerk (2.4.2) + zeitwerk (2.5.1) PLATFORMS ruby diff --git a/Passepartout.xcodeproj/project.pbxproj b/Passepartout.xcodeproj/project.pbxproj index 231dc7b5..e74a46df 100644 --- a/Passepartout.xcodeproj/project.pbxproj +++ b/Passepartout.xcodeproj/project.pbxproj @@ -7,8 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 051985241A3ABE44EB09DFF5 /* Pods_ios_PassepartoutTunnel_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF7D2E624A2979425A6F7B7A /* Pods_ios_PassepartoutTunnel_iOS.framework */; }; - 0774835EE25EEA07495A98AA /* Pods_macos_PassepartoutTunnel_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35380A14E9FF6F0250C171CD /* Pods_macos_PassepartoutTunnel_macOS.framework */; }; 0E05C5D420D1645F006EE732 /* FieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05C5CE20D139AF006EE732 /* FieldTableViewCell.swift */; }; 0E05C5D520D1645F006EE732 /* SettingTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED824CD20D12DBE00F2FE9E /* SettingTableViewCell.swift */; }; 0E05C5D620D1645F006EE732 /* SwiftGen+Scenes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DE320C89028004C739C /* SwiftGen+Scenes.swift */; }; @@ -25,41 +23,11 @@ 0E294AA225AE2B0B00CB4908 /* Descriptible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E294A8225AE29D100CB4908 /* Descriptible.swift */; }; 0E2AC24522EC3AC10037B4B0 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 0E2AC24422EC3AC10037B4B0 /* Settings.bundle */; }; 0E2B494020FCFF990094784C /* Theme+Titles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E2B493F20FCFF990094784C /* Theme+Titles.swift */; }; - 0E3152AD223F9EF500F61841 /* PassepartoutCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E31529D223F9EF500F61841 /* PassepartoutCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0E3152B0223F9EF500F61841 /* PassepartoutCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E31529B223F9EF400F61841 /* PassepartoutCore.framework */; }; - 0E3152B1223F9EF500F61841 /* PassepartoutCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0E31529B223F9EF400F61841 /* PassepartoutCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 0E3152BB223FA03D00F61841 /* AppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E39BCF2214DA9310035E9DE /* AppConstants.swift */; }; - 0E3152BC223FA03D00F61841 /* ApplicationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6BE13920CFB76800A6DD36 /* ApplicationError.swift */; }; - 0E3152BD223FA03D00F61841 /* GroupConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */; }; - 0E3152C0223FA03D00F61841 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4FD7ED20D539A0002221FF /* Utils.swift */; }; - 0E3152C8223FA04D00F61841 /* Infrastructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED31C1120CF0ABA0027975F /* Infrastructure.swift */; }; - 0E3152CA223FA04D00F61841 /* InfrastructurePreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E8D97E121388B52006FB4A0 /* InfrastructurePreset.swift */; }; - 0E3152CB223FA04D00F61841 /* Pool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED31C0F20CF09A30027975F /* Pool.swift */; }; - 0E3152CC223FA04D00F61841 /* WebServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E39BCEF214B9EF10035E9DE /* WebServices.swift */; }; - 0E3152CD223FA05400F61841 /* ConnectionProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3A9E213DC1A100BFA2F5 /* ConnectionProfile.swift */; }; - 0E3152CE223FA05400F61841 /* ConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3A9F213DC1A100BFA2F5 /* ConnectionService.swift */; }; - 0E3152CF223FA05400F61841 /* ConnectionService+Configurations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E2D11B9217DBEDE0096822C /* ConnectionService+Configurations.swift */; }; - 0E3152D0223FA05400F61841 /* ConnectionService+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBBE8F42182361700106008 /* ConnectionService+Migration.swift */; }; - 0E3152D1223FA05400F61841 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DE620C93945004C739C /* Credentials.swift */; }; - 0E3152D2223FA05400F61841 /* DebugLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC7F20420E24308004EA58E /* DebugLog.swift */; }; - 0E3152D3223FA05400F61841 /* EndpointDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED38AE621404F100004D387 /* EndpointDataSource.swift */; }; - 0E3152D4223FA05400F61841 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E89DFC4213DF7AE00741BA1 /* Preferences.swift */; }; - 0E3152D5223FA05400F61841 /* SessionProxy+Communication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E89DFC7213E8FC500741BA1 /* SessionProxy+Communication.swift */; }; - 0E3152D6223FA05400F61841 /* TransientStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E2B494120FD16540094784C /* TransientStore.swift */; }; - 0E3152D7223FA05400F61841 /* TrustedNetworks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4C9CB820DB9BC600A0C59C /* TrustedNetworks.swift */; }; - 0E3152D8223FA05400F61841 /* TrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3A8F213C6F4000BFA2F5 /* TrustPolicy.swift */; }; - 0E3152D9223FA05800F61841 /* HostConnectionProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3AA3213DC1B000BFA2F5 /* HostConnectionProfile.swift */; }; - 0E3152DA223FA05800F61841 /* PlaceholderConnectionProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E79D13E21919EC900BB5FB2 /* PlaceholderConnectionProfile.swift */; }; - 0E3152DB223FA05800F61841 /* ProfileKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E79D14021919F5600BB5FB2 /* ProfileKey.swift */; }; - 0E3152DC223FA05800F61841 /* ProviderConnectionProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3AA4213DC1B000BFA2F5 /* ProviderConnectionProfile.swift */; }; 0E3262D9235EE8DA00B5E470 /* HostImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3262D8235EE8DA00B5E470 /* HostImporter.swift */; }; 0E3586FE225BD34800509A4D /* ActivityTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3586FD225BD34800509A4D /* ActivityTableViewCell.swift */; }; 0E36D24D2240234B006AF062 /* ShortcutsAddViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E36D24C2240234B006AF062 /* ShortcutsAddViewController.swift */; }; 0E36D25822403469006AF062 /* Shortcuts.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E36D25A22403469006AF062 /* Shortcuts.storyboard */; }; 0E36D25C224034AD006AF062 /* ShortcutsConnectToViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E36D25B224034AD006AF062 /* ShortcutsConnectToViewController.swift */; }; - 0E3CAFC0229AAE770008E5C8 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 0E3CAFAD229AAE760008E5C8 /* Intents.intentdefinition */; }; - 0E3CAFC4229AAF8E0008E5C8 /* API in Resources */ = {isa = PBXBuildFile; fileRef = 0E3CAFC3229AAF8E0008E5C8 /* API */; }; - 0E45E71022BE108100F19312 /* OpenVPNOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E45E70F22BE108100F19312 /* OpenVPNOptions.swift */; }; 0E4B0D6B2366E3C100C890B4 /* PurchaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4B0D6A2366E3C000C890B4 /* PurchaseViewController.swift */; }; 0E4B0D742366E6C800C890B4 /* Purchase.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E4B0D762366E6C800C890B4 /* Purchase.storyboard */; }; 0E4C9CBB20DCF0D600A0C59C /* DestructiveTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4C9CBA20DCF0D600A0C59C /* DestructiveTableViewCell.swift */; }; @@ -108,140 +76,56 @@ 0E520388259F593B00CBAB56 /* HostImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F93259F41690022DFB8 /* HostImporter.swift */; }; 0E5203B6259F5F3F00CBAB56 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED31C3920CF39510027975F /* NetworkExtension.framework */; }; 0E5203BE259F5F3F00CBAB56 /* PassepartoutTunnel.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0E5203B5259F5F3F00CBAB56 /* PassepartoutTunnel.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 0E5203F1259F60D600CBAB56 /* PassepartoutCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E5203EA259F60D600CBAB56 /* PassepartoutCore.framework */; }; - 0E5203F2259F60D600CBAB56 /* PassepartoutCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0E5203EA259F60D600CBAB56 /* PassepartoutCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 0E52041F259F62B200CBAB56 /* GroupConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */; }; 0E52047B259F642600CBAB56 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E569F85259F41690022DFB8 /* Main.storyboard */; }; 0E52047C259F642600CBAB56 /* Service.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E569F83259F41690022DFB8 /* Service.storyboard */; }; 0E52047D259F642600CBAB56 /* Preferences.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E569F81259F41690022DFB8 /* Preferences.storyboard */; }; - 0E5204A7259F66F700CBAB56 /* PassepartoutCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E31529D223F9EF500F61841 /* PassepartoutCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0E5204AF259F673D00CBAB56 /* ApplicationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6BE13920CFB76800A6DD36 /* ApplicationError.swift */; }; - 0E5204B0259F673D00CBAB56 /* Issue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F14259F2D3E0022DFB8 /* Issue.swift */; }; - 0E5204B1259F673D00CBAB56 /* GroupConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */; }; - 0E5204B2259F673D00CBAB56 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4FD7ED20D539A0002221FF /* Utils.swift */; }; - 0E5204B7259F674000CBAB56 /* AppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E39BCF2214DA9310035E9DE /* AppConstants.swift */; }; - 0E5204BC259F674400CBAB56 /* TrustedNetworksUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F30259F2DC10022DFB8 /* TrustedNetworksUI.swift */; }; - 0E5204C1259F675400CBAB56 /* Infrastructure+Metadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F29259F2DB10022DFB8 /* Infrastructure+Metadata.swift */; }; - 0E5204C2259F675400CBAB56 /* PoolCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E66A26F225FE25800F9C779 /* PoolCategory.swift */; }; - 0E5204C3259F675400CBAB56 /* InfrastructureFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F2A259F2DB10022DFB8 /* InfrastructureFactory.swift */; }; - 0E5204C4259F675400CBAB56 /* TrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3A8F213C6F4000BFA2F5 /* TrustPolicy.swift */; }; - 0E5204C5259F675400CBAB56 /* ProviderConnectionProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3AA4213DC1B000BFA2F5 /* ProviderConnectionProfile.swift */; }; - 0E5204C6259F675400CBAB56 /* Pool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED31C0F20CF09A30027975F /* Pool.swift */; }; - 0E5204C7259F675400CBAB56 /* LocalProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F1B259F2D8F0022DFB8 /* LocalProduct.swift */; }; - 0E5204C8259F675400CBAB56 /* PoolGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E533B152258E03B00EF94FC /* PoolGroup.swift */; }; - 0E5204C9259F675400CBAB56 /* ConnectionService+Configurations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E2D11B9217DBEDE0096822C /* ConnectionService+Configurations.swift */; }; - 0E5204CA259F675400CBAB56 /* ProfileNetworkSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFB901722764689006405E4 /* ProfileNetworkSettings.swift */; }; - 0E5204CB259F675400CBAB56 /* EndpointDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED38AE621404F100004D387 /* EndpointDataSource.swift */; }; - 0E5204CC259F675400CBAB56 /* HostConnectionProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3AA3213DC1B000BFA2F5 /* HostConnectionProfile.swift */; }; - 0E5204CD259F675400CBAB56 /* Infrastructure+Name.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F28259F2DB10022DFB8 /* Infrastructure+Name.swift */; }; - 0E5204CE259F675400CBAB56 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DE620C93945004C739C /* Credentials.swift */; }; - 0E5204CF259F675400CBAB56 /* TrustedNetworks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4C9CB820DB9BC600A0C59C /* TrustedNetworks.swift */; }; - 0E5204D0259F675400CBAB56 /* Infrastructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED31C1120CF0ABA0027975F /* Infrastructure.swift */; }; - 0E5204D1259F675400CBAB56 /* PlaceholderConnectionProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E79D13E21919EC900BB5FB2 /* PlaceholderConnectionProfile.swift */; }; - 0E5204D2259F675400CBAB56 /* ConnectionProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3A9E213DC1A100BFA2F5 /* ConnectionProfile.swift */; }; - 0E5204D3259F675400CBAB56 /* ConnectionService+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBBE8F42182361700106008 /* ConnectionService+Migration.swift */; }; - 0E5204D4259F675400CBAB56 /* ConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3A9F213DC1A100BFA2F5 /* ConnectionService.swift */; }; - 0E5204D5259F675400CBAB56 /* ProfileKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E79D14021919F5600BB5FB2 /* ProfileKey.swift */; }; - 0E5204D6259F675400CBAB56 /* DataUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECEB109224FECEA00E9E551 /* DataUnit.swift */; }; - 0E5204D7259F675400CBAB56 /* DebugLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC7F20420E24308004EA58E /* DebugLog.swift */; }; - 0E5204D9259F675400CBAB56 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E89DFC4213DF7AE00741BA1 /* Preferences.swift */; }; - 0E5204DA259F675400CBAB56 /* ProductManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F1A259F2D8F0022DFB8 /* ProductManager.swift */; }; - 0E5204DB259F675400CBAB56 /* TransientStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E2B494120FD16540094784C /* TransientStore.swift */; }; - 0E5204DC259F675400CBAB56 /* GracefulVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F19259F2D8F0022DFB8 /* GracefulVPN.swift */; }; - 0E5204DD259F675400CBAB56 /* InfrastructurePreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E8D97E121388B52006FB4A0 /* InfrastructurePreset.swift */; }; - 0E5204DE259F675400CBAB56 /* OpenVPNOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E45E70F22BE108100F19312 /* OpenVPNOptions.swift */; }; - 0E5204DF259F675400CBAB56 /* SessionProxy+Communication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E89DFC7213E8FC500741BA1 /* SessionProxy+Communication.swift */; }; - 0E5204E0259F675400CBAB56 /* WebServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E39BCEF214B9EF10035E9DE /* WebServices.swift */; }; - 0E5204E5259F67A000CBAB56 /* API in Resources */ = {isa = PBXBuildFile; fileRef = 0E3CAFC3229AAF8E0008E5C8 /* API */; }; - 0E533B162258E03B00EF94FC /* PoolGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E533B152258E03B00EF94FC /* PoolGroup.swift */; }; - 0E569F15259F2D3E0022DFB8 /* Issue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F14259F2D3E0022DFB8 /* Issue.swift */; }; - 0E569F1C259F2D8F0022DFB8 /* GracefulVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F19259F2D8F0022DFB8 /* GracefulVPN.swift */; }; - 0E569F1E259F2D8F0022DFB8 /* ProductManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F1A259F2D8F0022DFB8 /* ProductManager.swift */; }; - 0E569F20259F2D8F0022DFB8 /* LocalProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F1B259F2D8F0022DFB8 /* LocalProduct.swift */; }; - 0E569F2B259F2DB10022DFB8 /* Infrastructure+Name.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F28259F2DB10022DFB8 /* Infrastructure+Name.swift */; }; - 0E569F2C259F2DB10022DFB8 /* Infrastructure+Metadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F29259F2DB10022DFB8 /* Infrastructure+Metadata.swift */; }; - 0E569F2D259F2DB10022DFB8 /* InfrastructureFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F2A259F2DB10022DFB8 /* InfrastructureFactory.swift */; }; - 0E569F31259F2DC10022DFB8 /* TrustedNetworksUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F30259F2DC10022DFB8 /* TrustedNetworksUI.swift */; }; 0E57F63C20C83FC5008323CF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E57F63B20C83FC5008323CF /* AppDelegate.swift */; }; 0E57F63E20C83FC5008323CF /* ServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E57F63D20C83FC5008323CF /* ServiceViewController.swift */; }; 0E57F64120C83FC5008323CF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E57F63F20C83FC5008323CF /* Main.storyboard */; }; 0E57F64320C83FC7008323CF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E57F64220C83FC7008323CF /* Assets.xcassets */; }; 0E57F64620C83FC7008323CF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E57F64420C83FC7008323CF /* LaunchScreen.storyboard */; }; 0E6268942369AD0600355F75 /* PurchaseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6268932369AD0600355F75 /* PurchaseTableViewCell.swift */; }; - 0E66A270225FE25800F9C779 /* PoolCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E66A26F225FE25800F9C779 /* PoolCategory.swift */; }; 0E6BA54B25C9EE3A000CDFAC /* Purchase.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E6BA54D25C9EE3A000CDFAC /* Purchase.storyboard */; }; 0E6BE13F20CFBAB300A6DD36 /* DebugLogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6BE13E20CFBAB300A6DD36 /* DebugLogViewController.swift */; }; 0E773BF8224BF37600CDDC8E /* ShortcutsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E773BF7224BF37600CDDC8E /* ShortcutsViewController.swift */; }; - 0E776642229D0DAE0023FA76 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 0E3CAFAD229AAE760008E5C8 /* Intents.intentdefinition */; settings = {ATTRIBUTES = (no_codegen, ); }; }; 0E79D2C825C9F1B300D12964 /* PurchaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E79D2C725C9F1B300D12964 /* PurchaseViewController.swift */; }; 0E79D31E25CC0CF600D12964 /* PurchaseProductView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E79D31D25CC0CF600D12964 /* PurchaseProductView.swift */; }; 0E89DFCE213EEDFA00741BA1 /* WizardProviderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E89DFCD213EEDFA00741BA1 /* WizardProviderViewController.swift */; }; 0E9AA978259F756A003FAFF1 /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9AA977259F756A003FAFF1 /* PacketTunnelProvider.swift */; }; 0E9AA979259F756A003FAFF1 /* PacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9AA977259F756A003FAFF1 /* PacketTunnelProvider.swift */; }; - 0E9AA992259F779F003FAFF1 /* PassepartoutCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E31529B223F9EF400F61841 /* PassepartoutCore.framework */; platformFilter = ios; }; - 0E9AA9BF259F7821003FAFF1 /* PassepartoutCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E5203EA259F60D600CBAB56 /* PassepartoutCore.framework */; }; - 0E9AA9EF259F799B003FAFF1 /* ConnectionServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9AA987259F777B003FAFF1 /* ConnectionServiceTests.swift */; }; - 0E9AA9F0259F799B003FAFF1 /* ConnectionService.json in Resources */ = {isa = PBXBuildFile; fileRef = 0E9AA988259F777B003FAFF1 /* ConnectionService.json */; }; - 0E9AA9F1259F799B003FAFF1 /* UtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9AA986259F777B003FAFF1 /* UtilsTests.swift */; }; - 0E9AA9F2259F799B003FAFF1 /* InfrastructureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9AA985259F777B003FAFF1 /* InfrastructureTests.swift */; }; - 0E9AA9F9259F799C003FAFF1 /* ConnectionServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9AA987259F777B003FAFF1 /* ConnectionServiceTests.swift */; }; - 0E9AA9FA259F799C003FAFF1 /* ConnectionService.json in Resources */ = {isa = PBXBuildFile; fileRef = 0E9AA988259F777B003FAFF1 /* ConnectionService.json */; }; - 0E9AA9FB259F799C003FAFF1 /* UtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9AA986259F777B003FAFF1 /* UtilsTests.swift */; }; - 0E9AA9FC259F799C003FAFF1 /* InfrastructureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9AA985259F777B003FAFF1 /* InfrastructureTests.swift */; }; 0E9AAA7F259F7DB7003FAFF1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E569F5E259F41690022DFB8 /* Assets.xcassets */; }; 0E9AAA80259F7DB7003FAFF1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E569F62259F41690022DFB8 /* AppDelegate.swift */; }; 0E9AAA89259F7DCA003FAFF1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0E569F5F259F41690022DFB8 /* Main.storyboard */; }; 0E9AAABE259F7FFF003FAFF1 /* PassepartoutLauncher.app in Resources */ = {isa = PBXBuildFile; fileRef = 0E9AAA61259F7D7E003FAFF1 /* PassepartoutLauncher.app */; }; 0E9AAACB259F808B003FAFF1 /* PassepartoutLauncher.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0E9AAA61259F7D7E003FAFF1 /* PassepartoutLauncher.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 0E9AAAD4259F809F003FAFF1 /* ServiceManagement.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E9AAAD3259F809F003FAFF1 /* ServiceManagement.framework */; }; 0E9CD7872257462800D033B4 /* Providers.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E9CD7862257462800D033B4 /* Providers.xcassets */; }; 0E9CD789225746B300D033B4 /* Flags.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0E9CD788225746B300D033B4 /* Flags.xcassets */; }; 0E9CDB6723604AD5006733B4 /* ServerNetworkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9CDB6623604AD5006733B4 /* ServerNetworkViewController.swift */; }; - 0EA9F29C26F9027700E806E1 /* VPN+Shared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F29B26F9027700E806E1 /* VPN+Shared.swift */; }; - 0EA9F29D26F9027800E806E1 /* VPN+Shared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA9F29B26F9027700E806E1 /* VPN+Shared.swift */; }; - 0EAAD71920E6669A0088754A /* GroupConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */; }; - 0EB1F41C26B456C7003916BF /* Infrastructure+CredentialsPurpose.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB1F41B26B456C7003916BF /* Infrastructure+CredentialsPurpose.swift */; }; - 0EB1F41D26B456C7003916BF /* Infrastructure+CredentialsPurpose.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB1F41B26B456C7003916BF /* Infrastructure+CredentialsPurpose.swift */; }; + 0EA591132733DD4F0096F796 /* IntentDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA591122733DD4E0096F796 /* IntentDispatcher.swift */; }; + 0EA591162733DDDA0096F796 /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 0EA591142733DDDA0096F796 /* Intents.intentdefinition */; }; + 0EA591302733E1420096F796 /* PassepartoutOpenVPNTunnel in Frameworks */ = {isa = PBXBuildFile; productRef = 0EA5912F2733E1420096F796 /* PassepartoutOpenVPNTunnel */; }; + 0EA591322733E1490096F796 /* PassepartoutOpenVPNTunnel in Frameworks */ = {isa = PBXBuildFile; productRef = 0EA591312733E1490096F796 /* PassepartoutOpenVPNTunnel */; }; + 0EB2B1482733FB6F007705AB /* PassepartoutTunnel.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0EDE8DBF20C86910004C739C /* PassepartoutTunnel.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 0EB60FDA2111136E00AD27F3 /* UITextView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB60FD92111136E00AD27F3 /* UITextView+Search.swift */; }; 0EB67D6B2184581E00BA6200 /* ImportedHostsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB67D6A2184581E00BA6200 /* ImportedHostsViewController.swift */; }; 0EBE3A79213C4E5500BFA2F5 /* OrganizerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EBE3A78213C4E5400BFA2F5 /* OrganizerViewController.swift */; }; 0ECC60DE2256B68A0020BEAC /* SwiftGen+Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECC60DD2256B6890020BEAC /* SwiftGen+Assets.swift */; }; - 0ECEB10A224FECEA00E9E551 /* DataUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECEB109224FECEA00E9E551 /* DataUnit.swift */; }; 0ECEE45020E1182E00A6BB43 /* Theme+Cells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECEE44F20E1182E00A6BB43 /* Theme+Cells.swift */; }; 0ED31C2920CF2A340027975F /* AccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED31C2820CF2A340027975F /* AccountViewController.swift */; }; 0ED31C2C20CF2D6F0027975F /* ProviderPoolViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED31C2B20CF2D6F0027975F /* ProviderPoolViewController.swift */; }; 0ED31C3A20CF39510027975F /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED31C3920CF39510027975F /* NetworkExtension.framework */; }; - 0ED31C3D20CF396E0027975F /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED31C3920CF39510027975F /* NetworkExtension.framework */; }; 0ED38AD9213F33150004D387 /* WizardHostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED38AD8213F33150004D387 /* WizardHostViewController.swift */; }; 0ED38ADA213F44D00004D387 /* Organizer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0ED38ADC213F44D00004D387 /* Organizer.storyboard */; }; 0ED38AEC2141260D0004D387 /* ConfigurationModificationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED38AEB2141260D0004D387 /* ConfigurationModificationDelegate.swift */; }; - 0ED993B1223FF8C700B0F9C9 /* IntentDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED993B0223FF8C700B0F9C9 /* IntentDispatcher.swift */; }; - 0EDE8DC820C86910004C739C /* PassepartoutTunnel.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0EDE8DBF20C86910004C739C /* PassepartoutTunnel.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 0EE247F326C114F60080A4CE /* Core.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0E3CAF98229AAE760008E5C8 /* Core.strings */; }; - 0EE247F426C114F70080A4CE /* Core.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0E3CAF98229AAE760008E5C8 /* Core.strings */; }; - 0EE247F626C115890080A4CE /* SwiftGen+Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE247F526C115890080A4CE /* SwiftGen+Strings.swift */; }; - 0EE247F726C115890080A4CE /* SwiftGen+Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE247F526C115890080A4CE /* SwiftGen+Strings.swift */; }; 0EE3BBB2215ED3A900F30952 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE3BBB1215ED3A900F30952 /* AboutViewController.swift */; }; - 0EEDC551C74496360E09994F /* Pods_ios_Passepartout_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E070D15674A07F40A22BFA7E /* Pods_ios_Passepartout_iOS.framework */; }; + 0EED0BB92733CEDA00C9FC68 /* PassepartoutCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0EED0BB82733CEDA00C9FC68 /* PassepartoutCore */; }; + 0EED0BBB2733CEE000C9FC68 /* PassepartoutCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0EED0BBA2733CEE000C9FC68 /* PassepartoutCore */; }; 0EF56BBB2185AC8500B0C8AB /* SwiftGen+Segues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF56BBA2185AC8500B0C8AB /* SwiftGen+Segues.swift */; }; - 0EFB901822764689006405E4 /* ProfileNetworkSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFB901722764689006405E4 /* ProfileNetworkSettings.swift */; }; 0EFB901A2276D7F1006405E4 /* NetworkSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFB90192276D7F1006405E4 /* NetworkSettingsViewController.swift */; }; 0EFD943E215BE10800529B64 /* IssueReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFD943D215BE10800529B64 /* IssueReporter.swift */; }; - 23B30D087357F9AC3130E01F /* Pods_macos_Passepartout_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23D4C05138CFBC311ED76548 /* Pods_macos_Passepartout_macOS.framework */; }; - 254BDBF29F7A1FC54C52B302 /* Pods_ios_PassepartoutCore_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B93E25644660446940471003 /* Pods_ios_PassepartoutCore_iOS.framework */; }; - 339DAF589F7BEBC11A09F350 /* Pods_ios_PassepartoutCoreTests_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F661C42E70315D0788B19EDC /* Pods_ios_PassepartoutCoreTests_iOS.framework */; }; - 52F5904C9D386AFF8437468F /* Pods_macos_PassepartoutCoreTests_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9BA8850A89C4680A6A23A65 /* Pods_macos_PassepartoutCoreTests_macOS.framework */; }; - B78AF882395541F93658B1AC /* Pods_macos_PassepartoutCore_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 555477CACFC266802E4C2FF2 /* Pods_macos_PassepartoutCore_macOS.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0E3152AE223F9EF500F61841 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0E57F63020C83FC5008323CF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0E31529A223F9EF400F61841; - remoteInfo = "Passepartout-Core"; - }; 0E5203BC259F5F3F00CBAB56 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0E57F63020C83FC5008323CF /* Project object */; @@ -249,27 +133,6 @@ remoteGlobalIDString = 0E5203B4259F5F3F00CBAB56; remoteInfo = "Passepartout-macOS-Tunnel"; }; - 0E5203EF259F60D600CBAB56 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0E57F63020C83FC5008323CF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0E5203E9259F60D600CBAB56; - remoteInfo = "PassepartoutCore-macOS"; - }; - 0E9AA993259F779F003FAFF1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0E57F63020C83FC5008323CF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0E31529A223F9EF400F61841; - remoteInfo = "PassepartoutCore-iOS"; - }; - 0E9AA9C0259F7821003FAFF1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0E57F63020C83FC5008323CF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0E5203E9259F60D600CBAB56; - remoteInfo = "PassepartoutCore-macOS"; - }; 0E9AAABF259F7FFF003FAFF1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0E57F63020C83FC5008323CF /* Project object */; @@ -277,19 +140,12 @@ remoteGlobalIDString = 0E9AAA60259F7D7E003FAFF1; remoteInfo = "PassepartoutLauncher-macOS"; }; - 0E9AAAC1259F800B003FAFF1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0E57F63020C83FC5008323CF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0E9AAA60259F7D7E003FAFF1; - remoteInfo = "PassepartoutLauncher-macOS"; - }; - 0EDE8DC620C86910004C739C /* PBXContainerItemProxy */ = { + 0EB2B1492733FB6F007705AB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0E57F63020C83FC5008323CF /* Project object */; proxyType = 1; remoteGlobalIDString = 0EDE8DBE20C86910004C739C; - remoteInfo = "Passepartout-iOS-Tunnel"; + remoteInfo = "PassepartoutTunnel-iOS"; }; /* End PBXContainerItemProxy section */ @@ -300,7 +156,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 0E3152B1223F9EF500F61841 /* PassepartoutCore.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -322,7 +177,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 0E5203F2259F60D600CBAB56 /* PassepartoutCore.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -337,13 +191,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 0EDE8DCC20C86910004C739C /* Embed App Extensions */ = { + 0EB2B14B2733FB6F007705AB /* Embed App Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 13; files = ( - 0EDE8DC820C86910004C739C /* PassepartoutTunnel.appex in Embed App Extensions */, + 0EB2B1482733FB6F007705AB /* PassepartoutTunnel.appex in Embed App Extensions */, ); name = "Embed App Extensions"; runOnlyForDeploymentPostprocessing = 0; @@ -351,18 +205,13 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0376B8FDB39F81CA072C3F37 /* Pods-ios-PassepartoutCore-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-PassepartoutCore-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-PassepartoutCore-iOS/Pods-ios-PassepartoutCore-iOS.debug.xcconfig"; sourceTree = ""; }; - 055AC72673D0F12546CAEEA6 /* Pods-macos-Passepartout-macOS-Tunnel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-Passepartout-macOS-Tunnel.release.xcconfig"; path = "Target Support Files/Pods-macos-Passepartout-macOS-Tunnel/Pods-macos-Passepartout-macOS-Tunnel.release.xcconfig"; sourceTree = ""; }; - 09CB728874F1553EF27BAAB9 /* Pods-Passepartout-iOS-Tunnel.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Passepartout-iOS-Tunnel.debug.xcconfig"; path = "Target Support Files/Pods-Passepartout-iOS-Tunnel/Pods-Passepartout-iOS-Tunnel.debug.xcconfig"; sourceTree = ""; }; 0E05C5CE20D139AF006EE732 /* FieldTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FieldTableViewCell.swift; sourceTree = ""; }; 0E05C61C20D27C82006EE732 /* Theme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = ""; }; 0E0C072A236087A100155AAC /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 0E0C072C236087C800155AAC /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; 0E1066C820E0F84A004F98B7 /* Cells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cells.swift; sourceTree = ""; }; 0E158AD920E11B0B00C85A82 /* EndpointViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EndpointViewController.swift; sourceTree = ""; }; - 0E1C0A50238FFF97009FC087 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Intents.strings; sourceTree = ""; }; 0E1C0A52238FFF97009FC087 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; }; - 0E1C0A53238FFF97009FC087 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Core.strings; sourceTree = ""; }; 0E1D72B1213BFFCF00BA1586 /* ProviderPresetViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProviderPresetViewController.swift; sourceTree = ""; }; 0E1D72B3213C118500BA1586 /* ConfigurationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationViewController.swift; sourceTree = ""; }; 0E23B4A12298559800304C30 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; @@ -371,48 +220,16 @@ 0E294A8225AE29D100CB4908 /* Descriptible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Descriptible.swift; sourceTree = ""; }; 0E2AC24422EC3AC10037B4B0 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 0E2B493F20FCFF990094784C /* Theme+Titles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Theme+Titles.swift"; sourceTree = ""; }; - 0E2B494120FD16540094784C /* TransientStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransientStore.swift; sourceTree = ""; }; - 0E2C54C3230056C800F59453 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Intents.strings"; sourceTree = ""; }; - 0E2C54C4230056EF00F59453 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Core.strings"; sourceTree = ""; }; - 0E2D11B9217DBEDE0096822C /* ConnectionService+Configurations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ConnectionService+Configurations.swift"; sourceTree = ""; }; - 0E31529B223F9EF400F61841 /* PassepartoutCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PassepartoutCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E31529D223F9EF500F61841 /* PassepartoutCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PassepartoutCore.h; sourceTree = ""; }; - 0E31529E223F9EF500F61841 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0E3262D8235EE8DA00B5E470 /* HostImporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostImporter.swift; sourceTree = ""; }; 0E3586FD225BD34800509A4D /* ActivityTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityTableViewCell.swift; sourceTree = ""; }; 0E36D24C2240234B006AF062 /* ShortcutsAddViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutsAddViewController.swift; sourceTree = ""; }; 0E36D25B224034AD006AF062 /* ShortcutsConnectToViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShortcutsConnectToViewController.swift; sourceTree = ""; }; - 0E39BCEF214B9EF10035E9DE /* WebServices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebServices.swift; sourceTree = ""; }; - 0E39BCF2214DA9310035E9DE /* AppConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppConstants.swift; sourceTree = ""; }; - 0E3CAF99229AAE760008E5C8 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Core.strings; sourceTree = ""; }; - 0E3CAF9C229AAE760008E5C8 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Core.strings; sourceTree = ""; }; - 0E3CAF9E229AAE760008E5C8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Core.strings; sourceTree = ""; }; - 0E3CAFA0229AAE760008E5C8 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Core.strings; sourceTree = ""; }; - 0E3CAFAB229AAE760008E5C8 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Core.strings; sourceTree = ""; }; - 0E3CAFAE229AAE760008E5C8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; name = Base; path = Base.lproj/Intents.intentdefinition; sourceTree = ""; }; - 0E3CAFB1229AAE760008E5C8 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Core.strings; sourceTree = ""; }; - 0E3CAFB3229AAE760008E5C8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Core.strings; sourceTree = ""; }; - 0E3CAFB5229AAE760008E5C8 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Core.strings; sourceTree = ""; }; - 0E3CAFC3229AAF8E0008E5C8 /* API */ = {isa = PBXFileReference; lastKnownFileType = folder; path = API; sourceTree = ""; }; - 0E45E70F22BE108100F19312 /* OpenVPNOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenVPNOptions.swift; sourceTree = ""; }; 0E4B0D6A2366E3C000C890B4 /* PurchaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseViewController.swift; sourceTree = ""; }; 0E4B0D752366E6C800C890B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Purchase.storyboard; sourceTree = ""; }; - 0E4C9CB820DB9BC600A0C59C /* TrustedNetworks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrustedNetworks.swift; sourceTree = ""; }; 0E4C9CBA20DCF0D600A0C59C /* DestructiveTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DestructiveTableViewCell.swift; sourceTree = ""; }; - 0E4FD7ED20D539A0002221FF /* Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; }; 0E4FD7F020D58618002221FF /* Macros.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Macros.swift; sourceTree = ""; }; 0E5202F7259F573500CBAB56 /* Passepartout.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Passepartout.app; sourceTree = BUILT_PRODUCTS_DIR; }; 0E5203B5259F5F3F00CBAB56 /* PassepartoutTunnel.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = PassepartoutTunnel.appex; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E5203EA259F60D600CBAB56 /* PassepartoutCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PassepartoutCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E533B152258E03B00EF94FC /* PoolGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PoolGroup.swift; sourceTree = ""; }; - 0E569F14259F2D3E0022DFB8 /* Issue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Issue.swift; sourceTree = ""; }; - 0E569F19259F2D8F0022DFB8 /* GracefulVPN.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GracefulVPN.swift; sourceTree = ""; }; - 0E569F1A259F2D8F0022DFB8 /* ProductManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductManager.swift; sourceTree = ""; }; - 0E569F1B259F2D8F0022DFB8 /* LocalProduct.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalProduct.swift; sourceTree = ""; }; - 0E569F28259F2DB10022DFB8 /* Infrastructure+Name.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infrastructure+Name.swift"; sourceTree = ""; }; - 0E569F29259F2DB10022DFB8 /* Infrastructure+Metadata.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infrastructure+Metadata.swift"; sourceTree = ""; }; - 0E569F2A259F2DB10022DFB8 /* InfrastructureFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfrastructureFactory.swift; sourceTree = ""; }; - 0E569F30259F2DC10022DFB8 /* TrustedNetworksUI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrustedNetworksUI.swift; sourceTree = ""; }; 0E569F5A259F41690022DFB8 /* TextTableView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TextTableView.xib; sourceTree = ""; }; 0E569F5B259F41690022DFB8 /* TextTableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextTableView.swift; sourceTree = ""; }; 0E569F5E259F41690022DFB8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -472,49 +289,34 @@ 0E57F64220C83FC7008323CF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 0E57F64720C83FC7008323CF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0E6268932369AD0600355F75 /* PurchaseTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PurchaseTableViewCell.swift; sourceTree = ""; }; - 0E66A26F225FE25800F9C779 /* PoolCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = PoolCategory.swift; path = ../Model/Profiles/PoolCategory.swift; sourceTree = ""; }; - 0E6ACB7722B1A57C001B3C99 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/Intents.strings; sourceTree = ""; }; - 0E6ACB7822B1A5BB001B3C99 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/Core.strings; sourceTree = ""; }; 0E6BA54C25C9EE3A000CDFAC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Purchase.storyboard; sourceTree = ""; }; - 0E6BE13920CFB76800A6DD36 /* ApplicationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationError.swift; sourceTree = ""; }; 0E6BE13E20CFBAB300A6DD36 /* DebugLogViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DebugLogViewController.swift; sourceTree = ""; }; 0E773BF7224BF37600CDDC8E /* ShortcutsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutsViewController.swift; sourceTree = ""; }; - 0E776575229CF65D0023FA76 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Core.strings; sourceTree = ""; }; - 0E776637229D0D9E0023FA76 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Intents.strings; sourceTree = ""; }; - 0E776638229D0D9F0023FA76 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Intents.strings; sourceTree = ""; }; - 0E776639229D0DA00023FA76 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Intents.strings; sourceTree = ""; }; - 0E77663A229D0DA10023FA76 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Intents.strings; sourceTree = ""; }; - 0E77663C229D0DA40023FA76 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Intents.strings; sourceTree = ""; }; - 0E77663D229D0DA50023FA76 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Intents.strings; sourceTree = ""; }; - 0E77663E229D0DA60023FA76 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Intents.strings; sourceTree = ""; }; - 0E77663F229D0DA70023FA76 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Intents.strings; sourceTree = ""; }; - 0E776640229D0DA80023FA76 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Intents.strings; sourceTree = ""; }; - 0E79D13E21919EC900BB5FB2 /* PlaceholderConnectionProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceholderConnectionProfile.swift; sourceTree = ""; }; - 0E79D14021919F5600BB5FB2 /* ProfileKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileKey.swift; sourceTree = ""; }; 0E79D2C725C9F1B300D12964 /* PurchaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseViewController.swift; sourceTree = ""; }; 0E79D31D25CC0CF600D12964 /* PurchaseProductView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PurchaseProductView.swift; sourceTree = ""; }; - 0E89DFC4213DF7AE00741BA1 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; - 0E89DFC7213E8FC500741BA1 /* SessionProxy+Communication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionProxy+Communication.swift"; sourceTree = ""; }; 0E89DFCD213EEDFA00741BA1 /* WizardProviderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WizardProviderViewController.swift; sourceTree = ""; }; - 0E8D97E121388B52006FB4A0 /* InfrastructurePreset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfrastructurePreset.swift; sourceTree = ""; }; 0E9AA977259F756A003FAFF1 /* PacketTunnelProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PacketTunnelProvider.swift; sourceTree = ""; }; - 0E9AA985259F777B003FAFF1 /* InfrastructureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfrastructureTests.swift; sourceTree = ""; }; - 0E9AA986259F777B003FAFF1 /* UtilsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilsTests.swift; sourceTree = ""; }; - 0E9AA987259F777B003FAFF1 /* ConnectionServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectionServiceTests.swift; sourceTree = ""; }; - 0E9AA988259F777B003FAFF1 /* ConnectionService.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = ConnectionService.json; sourceTree = ""; }; - 0E9AA98D259F779F003FAFF1 /* PassepartoutCoreTests-iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "PassepartoutCoreTests-iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E9AA991259F779F003FAFF1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0E9AA9BA259F7821003FAFF1 /* PassepartoutCoreTests-macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "PassepartoutCoreTests-macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 0E9AAA61259F7D7E003FAFF1 /* PassepartoutLauncher.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PassepartoutLauncher.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E9AAAD3259F809F003FAFF1 /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/ServiceManagement.framework; sourceTree = DEVELOPER_DIR; }; 0E9CD7862257462800D033B4 /* Providers.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Providers.xcassets; sourceTree = ""; }; 0E9CD788225746B300D033B4 /* Flags.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Flags.xcassets; sourceTree = ""; }; 0E9CDB6623604AD5006733B4 /* ServerNetworkViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerNetworkViewController.swift; sourceTree = ""; }; - 0EA9F29B26F9027700E806E1 /* VPN+Shared.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "VPN+Shared.swift"; sourceTree = ""; }; - 0EB1F41B26B456C7003916BF /* Infrastructure+CredentialsPurpose.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Infrastructure+CredentialsPurpose.swift"; sourceTree = ""; }; + 0EA26DC827353020000F251A /* PassepartoutCore */ = {isa = PBXFileReference; lastKnownFileType = folder; path = PassepartoutCore; sourceTree = ""; }; + 0EA591122733DD4E0096F796 /* IntentDispatcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IntentDispatcher.swift; sourceTree = ""; }; + 0EA591152733DDDA0096F796 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; name = Base; path = Base.lproj/Intents.intentdefinition; sourceTree = ""; }; + 0EA591182733DDF60096F796 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Intents.strings; sourceTree = ""; }; + 0EA5911A2733DDF80096F796 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Intents.strings"; sourceTree = ""; }; + 0EA5911C2733DDF80096F796 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Intents.strings; sourceTree = ""; }; + 0EA5911E2733DDF90096F796 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Intents.strings; sourceTree = ""; }; + 0EA591202733DDF90096F796 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Intents.strings; sourceTree = ""; }; + 0EA591222733DDFA0096F796 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Intents.strings; sourceTree = ""; }; + 0EA591242733DDFA0096F796 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Intents.strings; sourceTree = ""; }; + 0EA591262733DDFB0096F796 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Intents.strings; sourceTree = ""; }; + 0EA591282733DDFB0096F796 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/Intents.strings; sourceTree = ""; }; + 0EA5912A2733DDFC0096F796 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Intents.strings; sourceTree = ""; }; + 0EA5912C2733DDFC0096F796 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Intents.strings; sourceTree = ""; }; + 0EA5912E2733DDFD0096F796 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Intents.strings; sourceTree = ""; }; 0EB60FD92111136E00AD27F3 /* UITextView+Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextView+Search.swift"; sourceTree = ""; }; 0EB67D6A2184581E00BA6200 /* ImportedHostsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportedHostsViewController.swift; sourceTree = ""; }; - 0EBBE8F42182361700106008 /* ConnectionService+Migration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ConnectionService+Migration.swift"; sourceTree = ""; }; 0EBE2FD02360F88C00F0D5AB /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; 0EBE2FD12360F88E00F0D5AB /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; 0EBE2FD22360F88F00F0D5AB /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -525,95 +327,37 @@ 0EBE2FD72360F89600F0D5AB /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; 0EBE2FD82360F89600F0D5AB /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; }; 0EBE3A78213C4E5400BFA2F5 /* OrganizerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrganizerViewController.swift; sourceTree = ""; }; - 0EBE3A8F213C6F4000BFA2F5 /* TrustPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrustPolicy.swift; sourceTree = ""; }; - 0EBE3A9E213DC1A100BFA2F5 /* ConnectionProfile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionProfile.swift; sourceTree = ""; }; - 0EBE3A9F213DC1A100BFA2F5 /* ConnectionService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionService.swift; sourceTree = ""; }; - 0EBE3AA3213DC1B000BFA2F5 /* HostConnectionProfile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HostConnectionProfile.swift; sourceTree = ""; }; - 0EBE3AA4213DC1B000BFA2F5 /* ProviderConnectionProfile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProviderConnectionProfile.swift; sourceTree = ""; }; - 0EC7F20420E24308004EA58E /* DebugLog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugLog.swift; sourceTree = ""; }; 0ECC60DD2256B6890020BEAC /* SwiftGen+Assets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SwiftGen+Assets.swift"; sourceTree = ""; }; 0ECEB105224FE51400E9E551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 0ECEB106224FE51400E9E551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Organizer.storyboard; sourceTree = ""; }; 0ECEB107224FE51400E9E551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Shortcuts.storyboard; sourceTree = ""; }; 0ECEB108224FE51400E9E551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 0ECEB109224FECEA00E9E551 /* DataUnit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataUnit.swift; sourceTree = ""; }; 0ECEE44F20E1182E00A6BB43 /* Theme+Cells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Theme+Cells.swift"; sourceTree = ""; }; - 0ED31C0F20CF09A30027975F /* Pool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pool.swift; sourceTree = ""; }; - 0ED31C1120CF0ABA0027975F /* Infrastructure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Infrastructure.swift; sourceTree = ""; }; 0ED31C2820CF2A340027975F /* AccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewController.swift; sourceTree = ""; }; 0ED31C2B20CF2D6F0027975F /* ProviderPoolViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProviderPoolViewController.swift; sourceTree = ""; }; 0ED31C3920CF39510027975F /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; }; 0ED31C3B20CF39510027975F /* Tunnel-iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Tunnel-iOS.entitlements"; sourceTree = ""; }; 0ED38AD8213F33150004D387 /* WizardHostViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WizardHostViewController.swift; sourceTree = ""; }; - 0ED38AE621404F100004D387 /* EndpointDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndpointDataSource.swift; sourceTree = ""; }; 0ED38AEB2141260D0004D387 /* ConfigurationModificationDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationModificationDelegate.swift; sourceTree = ""; }; 0ED824C920D12B8700F2FE9E /* ToggleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleTableViewCell.swift; sourceTree = ""; }; 0ED824CD20D12DBE00F2FE9E /* SettingTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingTableViewCell.swift; sourceTree = ""; }; - 0ED993B0223FF8C700B0F9C9 /* IntentDispatcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IntentDispatcher.swift; sourceTree = ""; }; 0EDE8DBF20C86910004C739C /* PassepartoutTunnel.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = PassepartoutTunnel.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 0EDE8DC320C86910004C739C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0EDE8DD220C86978004C739C /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; 0EDE8DE220C86A13004C739C /* App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = App.entitlements; sourceTree = ""; }; 0EDE8DE320C89028004C739C /* SwiftGen+Scenes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SwiftGen+Scenes.swift"; sourceTree = ""; }; - 0EDE8DE620C93945004C739C /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; - 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupConstants.swift; sourceTree = ""; }; - 0EE247F526C115890080A4CE /* SwiftGen+Strings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SwiftGen+Strings.swift"; sourceTree = ""; }; 0EE3BBB1215ED3A900F30952 /* AboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; 0EF56BBA2185AC8500B0C8AB /* SwiftGen+Segues.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SwiftGen+Segues.swift"; sourceTree = ""; }; - 0EFB901722764689006405E4 /* ProfileNetworkSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileNetworkSettings.swift; sourceTree = ""; }; 0EFB90192276D7F1006405E4 /* NetworkSettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkSettingsViewController.swift; sourceTree = ""; }; 0EFD943D215BE10800529B64 /* IssueReporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IssueReporter.swift; sourceTree = ""; }; - 0FD7B360EE444EF1CDBFDF1C /* Pods-PassepartoutCoreTests-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PassepartoutCoreTests-iOS.debug.xcconfig"; path = "Target Support Files/Pods-PassepartoutCoreTests-iOS/Pods-PassepartoutCoreTests-iOS.debug.xcconfig"; sourceTree = ""; }; - 0FDF9B1E8EC63CCF4A2C9694 /* Pods-ios-Passepartout-iOS-Tunnel.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-Passepartout-iOS-Tunnel.debug.xcconfig"; path = "Target Support Files/Pods-ios-Passepartout-iOS-Tunnel/Pods-ios-Passepartout-iOS-Tunnel.debug.xcconfig"; sourceTree = ""; }; - 155FC78114E324E01093F98C /* Pods-ios-Passepartout-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-Passepartout-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-Passepartout-iOS/Pods-ios-Passepartout-iOS.debug.xcconfig"; sourceTree = ""; }; - 234D3C887F46AD64480495BB /* Pods-PassepartoutCoreTests-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PassepartoutCoreTests-iOS.release.xcconfig"; path = "Target Support Files/Pods-PassepartoutCoreTests-iOS/Pods-PassepartoutCoreTests-iOS.release.xcconfig"; sourceTree = ""; }; - 23D4C05138CFBC311ED76548 /* Pods_macos_Passepartout_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_Passepartout_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 329F34FAC963CE4BEA3013D6 /* Pods-macos-PassepartoutCore-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-PassepartoutCore-macOS.debug.xcconfig"; path = "Target Support Files/Pods-macos-PassepartoutCore-macOS/Pods-macos-PassepartoutCore-macOS.debug.xcconfig"; sourceTree = ""; }; - 35380A14E9FF6F0250C171CD /* Pods_macos_PassepartoutTunnel_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_PassepartoutTunnel_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4BD12523ABCBF7ED941FC270 /* Pods-Passepartout-iOS-Tunnel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Passepartout-iOS-Tunnel.release.xcconfig"; path = "Target Support Files/Pods-Passepartout-iOS-Tunnel/Pods-Passepartout-iOS-Tunnel.release.xcconfig"; sourceTree = ""; }; - 50DD79FBBBBF400F3BFE8912 /* Pods-macos-PassepartoutTunnel-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-PassepartoutTunnel-macOS.debug.xcconfig"; path = "Target Support Files/Pods-macos-PassepartoutTunnel-macOS/Pods-macos-PassepartoutTunnel-macOS.debug.xcconfig"; sourceTree = ""; }; - 53B773C4BAE7EDB38C7AFCD1 /* Pods-Passepartout-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Passepartout-iOS.release.xcconfig"; path = "Target Support Files/Pods-Passepartout-iOS/Pods-Passepartout-iOS.release.xcconfig"; sourceTree = ""; }; - 555477CACFC266802E4C2FF2 /* Pods_macos_PassepartoutCore_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_PassepartoutCore_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5C7F674900185F5DD24DA481 /* Pods-macos-Passepartout-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-Passepartout-macOS.release.xcconfig"; path = "Target Support Files/Pods-macos-Passepartout-macOS/Pods-macos-Passepartout-macOS.release.xcconfig"; sourceTree = ""; }; - 5CC1FDDBA184F8548D814E9D /* Pods-ios-PassepartoutCore-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-PassepartoutCore-iOS.release.xcconfig"; path = "Target Support Files/Pods-ios-PassepartoutCore-iOS/Pods-ios-PassepartoutCore-iOS.release.xcconfig"; sourceTree = ""; }; - 7E007C60601AFBB8A2C34DC4 /* Pods-ios-PassepartoutTunnel-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-PassepartoutTunnel-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-PassepartoutTunnel-iOS/Pods-ios-PassepartoutTunnel-iOS.debug.xcconfig"; sourceTree = ""; }; - 80A0C78A127E8CE9CB8E658D /* Pods-macos-PassepartoutCoreTests-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-PassepartoutCoreTests-macOS.release.xcconfig"; path = "Target Support Files/Pods-macos-PassepartoutCoreTests-macOS/Pods-macos-PassepartoutCoreTests-macOS.release.xcconfig"; sourceTree = ""; }; - 9FB2CA39113427B15C824FE0 /* Pods-ios-PassepartoutTunnel-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-PassepartoutTunnel-iOS.release.xcconfig"; path = "Target Support Files/Pods-ios-PassepartoutTunnel-iOS/Pods-ios-PassepartoutTunnel-iOS.release.xcconfig"; sourceTree = ""; }; - A1C4E67627603307808F2FFC /* Pods-PassepartoutCore-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PassepartoutCore-iOS.debug.xcconfig"; path = "Target Support Files/Pods-PassepartoutCore-iOS/Pods-PassepartoutCore-iOS.debug.xcconfig"; sourceTree = ""; }; - A8E3B69460648EA46C1BF850 /* Pods-ios-PassepartoutCoreTests-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-PassepartoutCoreTests-iOS.debug.xcconfig"; path = "Target Support Files/Pods-ios-PassepartoutCoreTests-iOS/Pods-ios-PassepartoutCoreTests-iOS.debug.xcconfig"; sourceTree = ""; }; - B7018254471DA72DF7939A01 /* Pods-macos-Passepartout-macOS-Tunnel.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-Passepartout-macOS-Tunnel.debug.xcconfig"; path = "Target Support Files/Pods-macos-Passepartout-macOS-Tunnel/Pods-macos-Passepartout-macOS-Tunnel.debug.xcconfig"; sourceTree = ""; }; - B93E25644660446940471003 /* Pods_ios_PassepartoutCore_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_PassepartoutCore_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C3D09D9270939FC37BE7101E /* Pods-macos-PassepartoutCore-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-PassepartoutCore-macOS.release.xcconfig"; path = "Target Support Files/Pods-macos-PassepartoutCore-macOS/Pods-macos-PassepartoutCore-macOS.release.xcconfig"; sourceTree = ""; }; - C9BA8850A89C4680A6A23A65 /* Pods_macos_PassepartoutCoreTests_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macos_PassepartoutCoreTests_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CFF79E4C42220C649C2259D2 /* Pods-ios-Passepartout-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-Passepartout-iOS.release.xcconfig"; path = "Target Support Files/Pods-ios-Passepartout-iOS/Pods-ios-Passepartout-iOS.release.xcconfig"; sourceTree = ""; }; - D2AF3AFC3418E6800D8A70E8 /* Pods-macos-PassepartoutTunnel-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-PassepartoutTunnel-macOS.release.xcconfig"; path = "Target Support Files/Pods-macos-PassepartoutTunnel-macOS/Pods-macos-PassepartoutTunnel-macOS.release.xcconfig"; sourceTree = ""; }; - D5D3FFA0392EA5F818646CD9 /* Pods-ios-PassepartoutCoreTests-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-PassepartoutCoreTests-iOS.release.xcconfig"; path = "Target Support Files/Pods-ios-PassepartoutCoreTests-iOS/Pods-ios-PassepartoutCoreTests-iOS.release.xcconfig"; sourceTree = ""; }; - E070D15674A07F40A22BFA7E /* Pods_ios_Passepartout_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_Passepartout_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E08D99B2FCC4478BB24A57B0 /* Pods-macos-Passepartout-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-Passepartout-macOS.debug.xcconfig"; path = "Target Support Files/Pods-macos-Passepartout-macOS/Pods-macos-Passepartout-macOS.debug.xcconfig"; sourceTree = ""; }; - E69B5CF79639B3D24F2AFFC9 /* Pods-macos-PassepartoutCoreTests-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macos-PassepartoutCoreTests-macOS.debug.xcconfig"; path = "Target Support Files/Pods-macos-PassepartoutCoreTests-macOS/Pods-macos-PassepartoutCoreTests-macOS.debug.xcconfig"; sourceTree = ""; }; - E9433B826E8B47C325FD6B8F /* Pods-ios-Passepartout-iOS-Tunnel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-Passepartout-iOS-Tunnel.release.xcconfig"; path = "Target Support Files/Pods-ios-Passepartout-iOS-Tunnel/Pods-ios-Passepartout-iOS-Tunnel.release.xcconfig"; sourceTree = ""; }; - F1BECEC1D93FEBDB17B714D8 /* Pods-PassepartoutCore-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PassepartoutCore-iOS.release.xcconfig"; path = "Target Support Files/Pods-PassepartoutCore-iOS/Pods-PassepartoutCore-iOS.release.xcconfig"; sourceTree = ""; }; - F4959B5F3CB1BBC2C46EA639 /* Pods-Passepartout-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Passepartout-iOS.debug.xcconfig"; path = "Target Support Files/Pods-Passepartout-iOS/Pods-Passepartout-iOS.debug.xcconfig"; sourceTree = ""; }; - F661C42E70315D0788B19EDC /* Pods_ios_PassepartoutCoreTests_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_PassepartoutCoreTests_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FF7D2E624A2979425A6F7B7A /* Pods_ios_PassepartoutTunnel_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ios_PassepartoutTunnel_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0E315298223F9EF400F61841 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 254BDBF29F7A1FC54C52B302 /* Pods_ios_PassepartoutCore_iOS.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 0E5202F4259F573500CBAB56 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0E9AAAD4259F809F003FAFF1 /* ServiceManagement.framework in Frameworks */, - 0E5203F1259F60D600CBAB56 /* PassepartoutCore.framework in Frameworks */, - 23B30D087357F9AC3130E01F /* Pods_macos_Passepartout_macOS.framework in Frameworks */, + 0EED0BBB2733CEE000C9FC68 /* PassepartoutCore in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -621,16 +365,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 0EA591302733E1420096F796 /* PassepartoutOpenVPNTunnel in Frameworks */, 0E5203B6259F5F3F00CBAB56 /* NetworkExtension.framework in Frameworks */, - 0774835EE25EEA07495A98AA /* Pods_macos_PassepartoutTunnel_macOS.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0E5203E7259F60D600CBAB56 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B78AF882395541F93658B1AC /* Pods_macos_PassepartoutCore_macOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -638,27 +374,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0E3152B0223F9EF500F61841 /* PassepartoutCore.framework in Frameworks */, - 0ED31C3D20CF396E0027975F /* NetworkExtension.framework in Frameworks */, - 0EEDC551C74496360E09994F /* Pods_ios_Passepartout_iOS.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0E9AA98A259F779F003FAFF1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E9AA992259F779F003FAFF1 /* PassepartoutCore.framework in Frameworks */, - 339DAF589F7BEBC11A09F350 /* Pods_ios_PassepartoutCoreTests_iOS.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0E9AA9B7259F7821003FAFF1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E9AA9BF259F7821003FAFF1 /* PassepartoutCore.framework in Frameworks */, - 52F5904C9D386AFF8437468F /* Pods_macos_PassepartoutCoreTests_macOS.framework in Frameworks */, + 0EED0BB92733CEDA00C9FC68 /* PassepartoutCore in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -673,8 +389,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 0EA591322733E1490096F796 /* PassepartoutOpenVPNTunnel in Frameworks */, 0ED31C3A20CF39510027975F /* NetworkExtension.framework in Frameworks */, - 051985241A3ABE44EB09DFF5 /* Pods_ios_PassepartoutTunnel_iOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -712,26 +428,6 @@ path = Shortcuts; sourceTree = ""; }; - 0E31529C223F9EF500F61841 /* Core */ = { - isa = PBXGroup; - children = ( - 0E3CAF97229AAE760008E5C8 /* Resources */, - 0EDE8DF020C93EBB004C739C /* Sources */, - 0E31529D223F9EF500F61841 /* PassepartoutCore.h */, - 0E31529E223F9EF500F61841 /* Info.plist */, - ); - path = Core; - sourceTree = ""; - }; - 0E3CAF97229AAE760008E5C8 /* Resources */ = { - isa = PBXGroup; - children = ( - 0E3CAF98229AAE760008E5C8 /* Core.strings */, - 0E3CAFAD229AAE760008E5C8 /* Intents.intentdefinition */, - ); - path = Resources; - sourceTree = ""; - }; 0E4B0D6C2366E53C00C890B4 /* Purchase */ = { isa = PBXGroup; children = ( @@ -741,14 +437,6 @@ path = Purchase; sourceTree = ""; }; - 0E50E7C422330E5100D5F76C /* Intents */ = { - isa = PBXGroup; - children = ( - 0ED993B0223FF8C700B0F9C9 /* IntentDispatcher.swift */, - ); - path = Intents; - sourceTree = ""; - }; 0E569F58259F41690022DFB8 /* macOS */ = { isa = PBXGroup; children = ( @@ -877,12 +565,11 @@ 0E57F62F20C83FC5008323CF = { isa = PBXGroup; children = ( + 0EE315DB2733104700F5D461 /* Packages */, 0E23B4A12298559800304C30 /* Config.xcconfig */, 0E9AA982259F7674003FAFF1 /* Passepartout */, - 0EE4EB2C229A71BB000E4BA1 /* Submodules */, 0E57F63920C83FC5008323CF /* Products */, 374B9F085E1148C37CF9117A /* Frameworks */, - ECB6C4CA315B2CB2AFE7ACBB /* Pods */, ); sourceTree = ""; }; @@ -891,12 +578,8 @@ children = ( 0E57F63820C83FC5008323CF /* Passepartout.app */, 0EDE8DBF20C86910004C739C /* PassepartoutTunnel.appex */, - 0E31529B223F9EF400F61841 /* PassepartoutCore.framework */, 0E5202F7259F573500CBAB56 /* Passepartout.app */, 0E5203B5259F5F3F00CBAB56 /* PassepartoutTunnel.appex */, - 0E5203EA259F60D600CBAB56 /* PassepartoutCore.framework */, - 0E9AA98D259F779F003FAFF1 /* PassepartoutCoreTests-iOS.xctest */, - 0E9AA9BA259F7821003FAFF1 /* PassepartoutCoreTests-macOS.xctest */, 0E9AAA61259F7D7E003FAFF1 /* PassepartoutLauncher.app */, ); name = Products; @@ -907,6 +590,7 @@ children = ( 0E1066CA20E0F85C004F98B7 /* Cells */, 0EDE8DEC20C93E3B004C739C /* Global */, + 0EA591112733DD4E0096F796 /* Intents */, 0EDE8DF120C93ED8004C739C /* Scenes */, 0E2AC24422EC3AC10037B4B0 /* Settings.bundle */, 0EDE8DE220C86A13004C739C /* App.entitlements */, @@ -922,6 +606,7 @@ 0ED38ADC213F44D00004D387 /* Organizer.storyboard */, 0E4B0D762366E6C800C890B4 /* Purchase.storyboard */, 0E36D25A22403469006AF062 /* Shortcuts.storyboard */, + 0EA591142733DDDA0096F796 /* Intents.intentdefinition */, ); path = iOS; sourceTree = ""; @@ -951,8 +636,6 @@ isa = PBXGroup; children = ( 0E9AA983259F76C5003FAFF1 /* App */, - 0E31529C223F9EF500F61841 /* Core */, - 0E9AA984259F777B003FAFF1 /* Tests */, 0EDE8DC020C86910004C739C /* Tunnel */, ); path = Passepartout; @@ -968,78 +651,12 @@ path = App; sourceTree = ""; }; - 0E9AA984259F777B003FAFF1 /* Tests */ = { + 0EA591112733DD4E0096F796 /* Intents */ = { isa = PBXGroup; children = ( - 0E9AA991259F779F003FAFF1 /* Info.plist */, - 0E9AA988259F777B003FAFF1 /* ConnectionService.json */, - 0E9AA987259F777B003FAFF1 /* ConnectionServiceTests.swift */, - 0E9AA985259F777B003FAFF1 /* InfrastructureTests.swift */, - 0E9AA986259F777B003FAFF1 /* UtilsTests.swift */, + 0EA591122733DD4E0096F796 /* IntentDispatcher.swift */, ); - path = Tests; - sourceTree = ""; - }; - 0EB9EB7123867E7F009C0A1C /* UI */ = { - isa = PBXGroup; - children = ( - 0E569F30259F2DC10022DFB8 /* TrustedNetworksUI.swift */, - ); - path = UI; - sourceTree = ""; - }; - 0EBE3AA2213DC1B000BFA2F5 /* Profiles */ = { - isa = PBXGroup; - children = ( - 0EBE3AA3213DC1B000BFA2F5 /* HostConnectionProfile.swift */, - 0E79D13E21919EC900BB5FB2 /* PlaceholderConnectionProfile.swift */, - 0E79D14021919F5600BB5FB2 /* ProfileKey.swift */, - 0EBE3AA4213DC1B000BFA2F5 /* ProviderConnectionProfile.swift */, - ); - path = Profiles; - sourceTree = ""; - }; - 0ED31C0E20CF09890027975F /* Model */ = { - isa = PBXGroup; - children = ( - 0EBE3AA2213DC1B000BFA2F5 /* Profiles */, - 0EBE3A9E213DC1A100BFA2F5 /* ConnectionProfile.swift */, - 0EBE3A9F213DC1A100BFA2F5 /* ConnectionService.swift */, - 0E2D11B9217DBEDE0096822C /* ConnectionService+Configurations.swift */, - 0EBBE8F42182361700106008 /* ConnectionService+Migration.swift */, - 0EDE8DE620C93945004C739C /* Credentials.swift */, - 0ECEB109224FECEA00E9E551 /* DataUnit.swift */, - 0EC7F20420E24308004EA58E /* DebugLog.swift */, - 0ED38AE621404F100004D387 /* EndpointDataSource.swift */, - 0E569F19259F2D8F0022DFB8 /* GracefulVPN.swift */, - 0E569F1B259F2D8F0022DFB8 /* LocalProduct.swift */, - 0E45E70F22BE108100F19312 /* OpenVPNOptions.swift */, - 0E89DFC4213DF7AE00741BA1 /* Preferences.swift */, - 0E569F1A259F2D8F0022DFB8 /* ProductManager.swift */, - 0EFB901722764689006405E4 /* ProfileNetworkSettings.swift */, - 0E89DFC7213E8FC500741BA1 /* SessionProxy+Communication.swift */, - 0E2B494120FD16540094784C /* TransientStore.swift */, - 0E4C9CB820DB9BC600A0C59C /* TrustedNetworks.swift */, - 0EBE3A8F213C6F4000BFA2F5 /* TrustPolicy.swift */, - ); - path = Model; - sourceTree = ""; - }; - 0ED31C1B20CF0ACE0027975F /* Services */ = { - isa = PBXGroup; - children = ( - 0ED31C1120CF0ABA0027975F /* Infrastructure.swift */, - 0EB1F41B26B456C7003916BF /* Infrastructure+CredentialsPurpose.swift */, - 0E569F29259F2DB10022DFB8 /* Infrastructure+Metadata.swift */, - 0E569F28259F2DB10022DFB8 /* Infrastructure+Name.swift */, - 0E569F2A259F2DB10022DFB8 /* InfrastructureFactory.swift */, - 0E8D97E121388B52006FB4A0 /* InfrastructurePreset.swift */, - 0ED31C0F20CF09A30027975F /* Pool.swift */, - 0E66A26F225FE25800F9C779 /* PoolCategory.swift */, - 0E533B152258E03B00EF94FC /* PoolGroup.swift */, - 0E39BCEF214B9EF10035E9DE /* WebServices.swift */, - ); - path = Services; + path = Intents; sourceTree = ""; }; 0EDE8DC020C86910004C739C /* Tunnel */ = { @@ -1070,24 +687,6 @@ path = Global; sourceTree = ""; }; - 0EDE8DF020C93EBB004C739C /* Sources */ = { - isa = PBXGroup; - children = ( - 0E50E7C422330E5100D5F76C /* Intents */, - 0ED31C0E20CF09890027975F /* Model */, - 0ED31C1B20CF0ACE0027975F /* Services */, - 0EB9EB7123867E7F009C0A1C /* UI */, - 0E39BCF2214DA9310035E9DE /* AppConstants.swift */, - 0E6BE13920CFB76800A6DD36 /* ApplicationError.swift */, - 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */, - 0E569F14259F2D3E0022DFB8 /* Issue.swift */, - 0EE247F526C115890080A4CE /* SwiftGen+Strings.swift */, - 0E4FD7ED20D539A0002221FF /* Utils.swift */, - 0EA9F29B26F9027700E806E1 /* VPN+Shared.swift */, - ); - path = Sources; - sourceTree = ""; - }; 0EDE8DF120C93ED8004C739C /* Scenes */ = { isa = PBXGroup; children = ( @@ -1109,130 +708,47 @@ path = Scenes; sourceTree = ""; }; - 0EE4EB2C229A71BB000E4BA1 /* Submodules */ = { + 0EE315DB2733104700F5D461 /* Packages */ = { isa = PBXGroup; children = ( - 0E3CAFC3229AAF8E0008E5C8 /* API */, + 0EA26DC827353020000F251A /* PassepartoutCore */, ); - path = Submodules; + name = Packages; sourceTree = ""; }; 374B9F085E1148C37CF9117A /* Frameworks */ = { isa = PBXGroup; children = ( - 0E9AAAD3259F809F003FAFF1 /* ServiceManagement.framework */, 0ED31C3920CF39510027975F /* NetworkExtension.framework */, 0EDE8DD220C86978004C739C /* NotificationCenter.framework */, - E070D15674A07F40A22BFA7E /* Pods_ios_Passepartout_iOS.framework */, - B93E25644660446940471003 /* Pods_ios_PassepartoutCore_iOS.framework */, - F661C42E70315D0788B19EDC /* Pods_ios_PassepartoutCoreTests_iOS.framework */, - FF7D2E624A2979425A6F7B7A /* Pods_ios_PassepartoutTunnel_iOS.framework */, - 23D4C05138CFBC311ED76548 /* Pods_macos_Passepartout_macOS.framework */, - 555477CACFC266802E4C2FF2 /* Pods_macos_PassepartoutCore_macOS.framework */, - C9BA8850A89C4680A6A23A65 /* Pods_macos_PassepartoutCoreTests_macOS.framework */, - 35380A14E9FF6F0250C171CD /* Pods_macos_PassepartoutTunnel_macOS.framework */, ); name = Frameworks; sourceTree = ""; }; - ECB6C4CA315B2CB2AFE7ACBB /* Pods */ = { - isa = PBXGroup; - children = ( - F4959B5F3CB1BBC2C46EA639 /* Pods-Passepartout-iOS.debug.xcconfig */, - 53B773C4BAE7EDB38C7AFCD1 /* Pods-Passepartout-iOS.release.xcconfig */, - 09CB728874F1553EF27BAAB9 /* Pods-Passepartout-iOS-Tunnel.debug.xcconfig */, - 4BD12523ABCBF7ED941FC270 /* Pods-Passepartout-iOS-Tunnel.release.xcconfig */, - A1C4E67627603307808F2FFC /* Pods-PassepartoutCore-iOS.debug.xcconfig */, - F1BECEC1D93FEBDB17B714D8 /* Pods-PassepartoutCore-iOS.release.xcconfig */, - 0FD7B360EE444EF1CDBFDF1C /* Pods-PassepartoutCoreTests-iOS.debug.xcconfig */, - 234D3C887F46AD64480495BB /* Pods-PassepartoutCoreTests-iOS.release.xcconfig */, - 155FC78114E324E01093F98C /* Pods-ios-Passepartout-iOS.debug.xcconfig */, - CFF79E4C42220C649C2259D2 /* Pods-ios-Passepartout-iOS.release.xcconfig */, - 0FDF9B1E8EC63CCF4A2C9694 /* Pods-ios-Passepartout-iOS-Tunnel.debug.xcconfig */, - E9433B826E8B47C325FD6B8F /* Pods-ios-Passepartout-iOS-Tunnel.release.xcconfig */, - 0376B8FDB39F81CA072C3F37 /* Pods-ios-PassepartoutCore-iOS.debug.xcconfig */, - 5CC1FDDBA184F8548D814E9D /* Pods-ios-PassepartoutCore-iOS.release.xcconfig */, - E08D99B2FCC4478BB24A57B0 /* Pods-macos-Passepartout-macOS.debug.xcconfig */, - 5C7F674900185F5DD24DA481 /* Pods-macos-Passepartout-macOS.release.xcconfig */, - B7018254471DA72DF7939A01 /* Pods-macos-Passepartout-macOS-Tunnel.debug.xcconfig */, - 055AC72673D0F12546CAEEA6 /* Pods-macos-Passepartout-macOS-Tunnel.release.xcconfig */, - 329F34FAC963CE4BEA3013D6 /* Pods-macos-PassepartoutCore-macOS.debug.xcconfig */, - C3D09D9270939FC37BE7101E /* Pods-macos-PassepartoutCore-macOS.release.xcconfig */, - A8E3B69460648EA46C1BF850 /* Pods-ios-PassepartoutCoreTests-iOS.debug.xcconfig */, - D5D3FFA0392EA5F818646CD9 /* Pods-ios-PassepartoutCoreTests-iOS.release.xcconfig */, - 7E007C60601AFBB8A2C34DC4 /* Pods-ios-PassepartoutTunnel-iOS.debug.xcconfig */, - 9FB2CA39113427B15C824FE0 /* Pods-ios-PassepartoutTunnel-iOS.release.xcconfig */, - E69B5CF79639B3D24F2AFFC9 /* Pods-macos-PassepartoutCoreTests-macOS.debug.xcconfig */, - 80A0C78A127E8CE9CB8E658D /* Pods-macos-PassepartoutCoreTests-macOS.release.xcconfig */, - 50DD79FBBBBF400F3BFE8912 /* Pods-macos-PassepartoutTunnel-macOS.debug.xcconfig */, - D2AF3AFC3418E6800D8A70E8 /* Pods-macos-PassepartoutTunnel-macOS.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ -/* Begin PBXHeadersBuildPhase section */ - 0E315296223F9EF400F61841 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E3152AD223F9EF500F61841 /* PassepartoutCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0E5203E5259F60D600CBAB56 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E5204A7259F66F700CBAB56 /* PassepartoutCore.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - /* Begin PBXNativeTarget section */ - 0E31529A223F9EF400F61841 /* PassepartoutCore-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0E3152B6223F9EF500F61841 /* Build configuration list for PBXNativeTarget "PassepartoutCore-iOS" */; - buildPhases = ( - 0A0A35FE311454E07CF67743 /* [CP] Check Pods Manifest.lock */, - 0E315296223F9EF400F61841 /* Headers */, - 0E315297223F9EF400F61841 /* Sources */, - 0E315298223F9EF400F61841 /* Frameworks */, - 0E315299223F9EF400F61841 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PassepartoutCore-iOS"; - productName = "Passepartout-Core"; - productReference = 0E31529B223F9EF400F61841 /* PassepartoutCore.framework */; - productType = "com.apple.product-type.framework"; - }; 0E5202F6259F573500CBAB56 /* Passepartout-macOS */ = { isa = PBXNativeTarget; buildConfigurationList = 0E520304259F573800CBAB56 /* Build configuration list for PBXNativeTarget "Passepartout-macOS" */; buildPhases = ( - 6D65C9B23CEAFE3755C8BC2B /* [CP] Check Pods Manifest.lock */, 0E5202F3259F573500CBAB56 /* Sources */, 0E5202F4259F573500CBAB56 /* Frameworks */, 0E5202F5259F573500CBAB56 /* Resources */, 0E9AAACA259F806B003FAFF1 /* CopyFiles */, 0E5203C2259F5F3F00CBAB56 /* Embed App Extensions */, 0E5203F6259F60D600CBAB56 /* Embed Frameworks */, - 5F0C817F8E72ADCEDA44DBC5 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( 0E5203BD259F5F3F00CBAB56 /* PBXTargetDependency */, - 0E5203F0259F60D600CBAB56 /* PBXTargetDependency */, 0E9AAAC0259F7FFF003FAFF1 /* PBXTargetDependency */, - 0E9AAAC2259F800B003FAFF1 /* PBXTargetDependency */, ); name = "Passepartout-macOS"; + packageProductDependencies = ( + 0EED0BBA2733CEE000C9FC68 /* PassepartoutCore */, + ); productName = "Passepartout-macOS"; productReference = 0E5202F7259F573500CBAB56 /* Passepartout.app */; productType = "com.apple.product-type.application"; @@ -1241,7 +757,6 @@ isa = PBXNativeTarget; buildConfigurationList = 0E5203BF259F5F3F00CBAB56 /* Build configuration list for PBXNativeTarget "PassepartoutTunnel-macOS" */; buildPhases = ( - A6026405EC7F053B50C8BFF4 /* [CP] Check Pods Manifest.lock */, 0E5203B1259F5F3F00CBAB56 /* Sources */, 0E5203B2259F5F3F00CBAB56 /* Frameworks */, 0E5203B3259F5F3F00CBAB56 /* Resources */, @@ -1251,92 +766,36 @@ dependencies = ( ); name = "PassepartoutTunnel-macOS"; + packageProductDependencies = ( + 0EA5912F2733E1420096F796 /* PassepartoutOpenVPNTunnel */, + ); productName = "Passepartout-macOS-Tunnel"; productReference = 0E5203B5259F5F3F00CBAB56 /* PassepartoutTunnel.appex */; productType = "com.apple.product-type.app-extension"; }; - 0E5203E9259F60D600CBAB56 /* PassepartoutCore-macOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0E5203F3259F60D600CBAB56 /* Build configuration list for PBXNativeTarget "PassepartoutCore-macOS" */; - buildPhases = ( - 6D3E350F59230E4C94ED9FDA /* [CP] Check Pods Manifest.lock */, - 0E5203E5259F60D600CBAB56 /* Headers */, - 0E5203E6259F60D600CBAB56 /* Sources */, - 0E5203E7259F60D600CBAB56 /* Frameworks */, - 0E5203E8259F60D600CBAB56 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PassepartoutCore-macOS"; - productName = "PassepartoutCore-macOS"; - productReference = 0E5203EA259F60D600CBAB56 /* PassepartoutCore.framework */; - productType = "com.apple.product-type.framework"; - }; 0E57F63720C83FC5008323CF /* Passepartout-iOS */ = { isa = PBXNativeTarget; buildConfigurationList = 0E57F65520C83FC7008323CF /* Build configuration list for PBXNativeTarget "Passepartout-iOS" */; buildPhases = ( - 8598326924C7B7B17B82A427 /* [CP] Check Pods Manifest.lock */, 0E57F63420C83FC5008323CF /* Sources */, 0E57F63520C83FC5008323CF /* Frameworks */, 0E57F63620C83FC5008323CF /* Resources */, - 0EDE8DCC20C86910004C739C /* Embed App Extensions */, 0E3152B7223F9EF500F61841 /* Embed Frameworks */, - 71085646689FD70B4B7AD683 /* [CP] Embed Pods Frameworks */, + 0EB2B14B2733FB6F007705AB /* Embed App Extensions */, ); buildRules = ( ); dependencies = ( - 0EDE8DC720C86910004C739C /* PBXTargetDependency */, - 0E3152AF223F9EF500F61841 /* PBXTargetDependency */, + 0EB2B14A2733FB6F007705AB /* PBXTargetDependency */, ); name = "Passepartout-iOS"; + packageProductDependencies = ( + 0EED0BB82733CEDA00C9FC68 /* PassepartoutCore */, + ); productName = Passepartout; productReference = 0E57F63820C83FC5008323CF /* Passepartout.app */; productType = "com.apple.product-type.application"; }; - 0E9AA98C259F779F003FAFF1 /* PassepartoutCoreTests-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0E9AA995259F779F003FAFF1 /* Build configuration list for PBXNativeTarget "PassepartoutCoreTests-iOS" */; - buildPhases = ( - 5CCA3608E9249955B3DEA5BF /* [CP] Check Pods Manifest.lock */, - 0E9AA989259F779F003FAFF1 /* Sources */, - 0E9AA98A259F779F003FAFF1 /* Frameworks */, - 0E9AA98B259F779F003FAFF1 /* Resources */, - F4BF37883BF513DD4EF79789 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 0E9AA994259F779F003FAFF1 /* PBXTargetDependency */, - ); - name = "PassepartoutCoreTests-iOS"; - productName = "PassepartoutCoreTests-iOS"; - productReference = 0E9AA98D259F779F003FAFF1 /* PassepartoutCoreTests-iOS.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 0E9AA9B9259F7821003FAFF1 /* PassepartoutCoreTests-macOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0E9AA9C2259F7821003FAFF1 /* Build configuration list for PBXNativeTarget "PassepartoutCoreTests-macOS" */; - buildPhases = ( - 1BFBF587EFF0D8EFB44539C5 /* [CP] Check Pods Manifest.lock */, - 0E9AA9B6259F7821003FAFF1 /* Sources */, - 0E9AA9B7259F7821003FAFF1 /* Frameworks */, - 0E9AA9B8259F7821003FAFF1 /* Resources */, - 07E82DB4E76B85853FE611FC /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 0E9AA9C1259F7821003FAFF1 /* PBXTargetDependency */, - ); - name = "PassepartoutCoreTests-macOS"; - productName = "PassepartoutCoreTests-macOS"; - productReference = 0E9AA9BA259F7821003FAFF1 /* PassepartoutCoreTests-macOS.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; 0E9AAA60259F7D7E003FAFF1 /* PassepartoutLauncher-macOS */ = { isa = PBXNativeTarget; buildConfigurationList = 0E9AAA70259F7D81003FAFF1 /* Build configuration list for PBXNativeTarget "PassepartoutLauncher-macOS" */; @@ -1358,7 +817,6 @@ isa = PBXNativeTarget; buildConfigurationList = 0EDE8DC920C86910004C739C /* Build configuration list for PBXNativeTarget "PassepartoutTunnel-iOS" */; buildPhases = ( - 4316D2F30EA7143E6BB85EDE /* [CP] Check Pods Manifest.lock */, 0EDE8DBB20C86910004C739C /* Sources */, 0EDE8DBC20C86910004C739C /* Frameworks */, 0EDE8DBD20C86910004C739C /* Resources */, @@ -1368,6 +826,9 @@ dependencies = ( ); name = "PassepartoutTunnel-iOS"; + packageProductDependencies = ( + 0EA591312733E1490096F796 /* PassepartoutOpenVPNTunnel */, + ); productName = "Passepartout-iOS-Tunnel"; productReference = 0EDE8DBF20C86910004C739C /* PassepartoutTunnel.appex */; productType = "com.apple.product-type.app-extension"; @@ -1382,19 +843,12 @@ LastUpgradeCheck = 1240; ORGANIZATIONNAME = "Davide De Rosa"; TargetAttributes = { - 0E31529A223F9EF400F61841 = { - CreatedOnToolsVersion = 10.1; - LastSwiftMigration = 1020; - }; 0E5202F6259F573500CBAB56 = { CreatedOnToolsVersion = 12.3; }; 0E5203B4259F5F3F00CBAB56 = { CreatedOnToolsVersion = 12.3; }; - 0E5203E9259F60D600CBAB56 = { - CreatedOnToolsVersion = 12.3; - }; 0E57F63720C83FC5008323CF = { CreatedOnToolsVersion = 9.4; LastSwiftMigration = 1020; @@ -1413,12 +867,6 @@ }; }; }; - 0E9AA98C259F779F003FAFF1 = { - CreatedOnToolsVersion = 12.3; - }; - 0E9AA9B9259F7821003FAFF1 = { - CreatedOnToolsVersion = 12.3; - }; 0E9AAA60259F7D7E003FAFF1 = { CreatedOnToolsVersion = 12.3; }; @@ -1456,16 +904,14 @@ pl, ); mainGroup = 0E57F62F20C83FC5008323CF; + packageReferences = ( + ); productRefGroup = 0E57F63920C83FC5008323CF /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 0E31529A223F9EF400F61841 /* PassepartoutCore-iOS */, - 0E9AA98C259F779F003FAFF1 /* PassepartoutCoreTests-iOS */, 0EDE8DBE20C86910004C739C /* PassepartoutTunnel-iOS */, 0E57F63720C83FC5008323CF /* Passepartout-iOS */, - 0E5203E9259F60D600CBAB56 /* PassepartoutCore-macOS */, - 0E9AA9B9259F7821003FAFF1 /* PassepartoutCoreTests-macOS */, 0E9AAA60259F7D7E003FAFF1 /* PassepartoutLauncher-macOS */, 0E5203B4259F5F3F00CBAB56 /* PassepartoutTunnel-macOS */, 0E5202F6259F573500CBAB56 /* Passepartout-macOS */, @@ -1474,15 +920,6 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 0E315299223F9EF400F61841 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E3CAFC4229AAF8E0008E5C8 /* API in Resources */, - 0EE247F326C114F60080A4CE /* Core.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 0E5202F5259F573500CBAB56 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1511,15 +948,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 0E5203E8259F60D600CBAB56 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E5204E5259F67A000CBAB56 /* API in Resources */, - 0EE247F426C114F70080A4CE /* Core.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 0E57F63620C83FC5008323CF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1538,22 +966,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 0E9AA98B259F779F003FAFF1 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E9AA9FA259F799C003FAFF1 /* ConnectionService.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0E9AA9B8259F7821003FAFF1 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E9AA9F0259F799B003FAFF1 /* ConnectionService.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 0E9AAA5F259F7D7E003FAFF1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1572,303 +984,7 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 07E82DB4E76B85853FE611FC /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-macos-PassepartoutCoreTests-macOS/Pods-macos-PassepartoutCoreTests-macOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-macos-PassepartoutCoreTests-macOS/Pods-macos-PassepartoutCoreTests-macOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-macos-PassepartoutCoreTests-macOS/Pods-macos-PassepartoutCoreTests-macOS-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 0A0A35FE311454E07CF67743 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ios-PassepartoutCore-iOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 1BFBF587EFF0D8EFB44539C5 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-macos-PassepartoutCoreTests-macOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 4316D2F30EA7143E6BB85EDE /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ios-PassepartoutTunnel-iOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 5CCA3608E9249955B3DEA5BF /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ios-PassepartoutCoreTests-iOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 5F0C817F8E72ADCEDA44DBC5 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-macos-Passepartout-macOS/Pods-macos-Passepartout-macOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-macos-Passepartout-macOS/Pods-macos-Passepartout-macOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-macos-Passepartout-macOS/Pods-macos-Passepartout-macOS-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 6D3E350F59230E4C94ED9FDA /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-macos-PassepartoutCore-macOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 6D65C9B23CEAFE3755C8BC2B /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-macos-Passepartout-macOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 71085646689FD70B4B7AD683 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ios-Passepartout-iOS/Pods-ios-Passepartout-iOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ios-Passepartout-iOS/Pods-ios-Passepartout-iOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ios-Passepartout-iOS/Pods-ios-Passepartout-iOS-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 8598326924C7B7B17B82A427 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ios-Passepartout-iOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - A6026405EC7F053B50C8BFF4 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-macos-PassepartoutTunnel-macOS-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - F4BF37883BF513DD4EF79789 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ios-PassepartoutCoreTests-iOS/Pods-ios-PassepartoutCoreTests-iOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ios-PassepartoutCoreTests-iOS/Pods-ios-PassepartoutCoreTests-iOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ios-PassepartoutCoreTests-iOS/Pods-ios-PassepartoutCoreTests-iOS-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ - 0E315297223F9EF400F61841 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E3152BD223FA03D00F61841 /* GroupConstants.swift in Sources */, - 0ECEB10A224FECEA00E9E551 /* DataUnit.swift in Sources */, - 0EE247F626C115890080A4CE /* SwiftGen+Strings.swift in Sources */, - 0E66A270225FE25800F9C779 /* PoolCategory.swift in Sources */, - 0E533B162258E03B00EF94FC /* PoolGroup.swift in Sources */, - 0E3152D2223FA05400F61841 /* DebugLog.swift in Sources */, - 0E45E71022BE108100F19312 /* OpenVPNOptions.swift in Sources */, - 0E3152DA223FA05800F61841 /* PlaceholderConnectionProfile.swift in Sources */, - 0E569F1E259F2D8F0022DFB8 /* ProductManager.swift in Sources */, - 0E3152D0223FA05400F61841 /* ConnectionService+Migration.swift in Sources */, - 0E3152D5223FA05400F61841 /* SessionProxy+Communication.swift in Sources */, - 0E3152D7223FA05400F61841 /* TrustedNetworks.swift in Sources */, - 0E3152DB223FA05800F61841 /* ProfileKey.swift in Sources */, - 0E3152CF223FA05400F61841 /* ConnectionService+Configurations.swift in Sources */, - 0E3152C8223FA04D00F61841 /* Infrastructure.swift in Sources */, - 0E3152D8223FA05400F61841 /* TrustPolicy.swift in Sources */, - 0E3152DC223FA05800F61841 /* ProviderConnectionProfile.swift in Sources */, - 0E569F2B259F2DB10022DFB8 /* Infrastructure+Name.swift in Sources */, - 0E3152D9223FA05800F61841 /* HostConnectionProfile.swift in Sources */, - 0EB1F41C26B456C7003916BF /* Infrastructure+CredentialsPurpose.swift in Sources */, - 0E3152D6223FA05400F61841 /* TransientStore.swift in Sources */, - 0E3152CC223FA04D00F61841 /* WebServices.swift in Sources */, - 0E3152BB223FA03D00F61841 /* AppConstants.swift in Sources */, - 0E3152CA223FA04D00F61841 /* InfrastructurePreset.swift in Sources */, - 0E3152CE223FA05400F61841 /* ConnectionService.swift in Sources */, - 0ED993B1223FF8C700B0F9C9 /* IntentDispatcher.swift in Sources */, - 0E569F31259F2DC10022DFB8 /* TrustedNetworksUI.swift in Sources */, - 0E569F1C259F2D8F0022DFB8 /* GracefulVPN.swift in Sources */, - 0E569F2C259F2DB10022DFB8 /* Infrastructure+Metadata.swift in Sources */, - 0E3152D1223FA05400F61841 /* Credentials.swift in Sources */, - 0E3152CD223FA05400F61841 /* ConnectionProfile.swift in Sources */, - 0E3152BC223FA03D00F61841 /* ApplicationError.swift in Sources */, - 0E569F15259F2D3E0022DFB8 /* Issue.swift in Sources */, - 0E3152D3223FA05400F61841 /* EndpointDataSource.swift in Sources */, - 0E569F2D259F2DB10022DFB8 /* InfrastructureFactory.swift in Sources */, - 0EA9F29C26F9027700E806E1 /* VPN+Shared.swift in Sources */, - 0E3152D4223FA05400F61841 /* Preferences.swift in Sources */, - 0EFB901822764689006405E4 /* ProfileNetworkSettings.swift in Sources */, - 0E3152C0223FA03D00F61841 /* Utils.swift in Sources */, - 0E3152CB223FA04D00F61841 /* Pool.swift in Sources */, - 0E3CAFC0229AAE770008E5C8 /* Intents.intentdefinition in Sources */, - 0E569F20259F2D8F0022DFB8 /* LocalProduct.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 0E5202F3259F573500CBAB56 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1917,54 +1033,6 @@ buildActionMask = 2147483647; files = ( 0E9AA979259F756A003FAFF1 /* PacketTunnelProvider.swift in Sources */, - 0E52041F259F62B200CBAB56 /* GroupConstants.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0E5203E6259F60D600CBAB56 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E5204D3259F675400CBAB56 /* ConnectionService+Migration.swift in Sources */, - 0EA9F29D26F9027800E806E1 /* VPN+Shared.swift in Sources */, - 0E5204C1259F675400CBAB56 /* Infrastructure+Metadata.swift in Sources */, - 0E5204BC259F674400CBAB56 /* TrustedNetworksUI.swift in Sources */, - 0E5204D9259F675400CBAB56 /* Preferences.swift in Sources */, - 0E5204DD259F675400CBAB56 /* InfrastructurePreset.swift in Sources */, - 0E5204CE259F675400CBAB56 /* Credentials.swift in Sources */, - 0E5204E0259F675400CBAB56 /* WebServices.swift in Sources */, - 0E5204DF259F675400CBAB56 /* SessionProxy+Communication.swift in Sources */, - 0EB1F41D26B456C7003916BF /* Infrastructure+CredentialsPurpose.swift in Sources */, - 0E5204D7259F675400CBAB56 /* DebugLog.swift in Sources */, - 0E5204C4259F675400CBAB56 /* TrustPolicy.swift in Sources */, - 0E5204CA259F675400CBAB56 /* ProfileNetworkSettings.swift in Sources */, - 0E5204C8259F675400CBAB56 /* PoolGroup.swift in Sources */, - 0E5204DB259F675400CBAB56 /* TransientStore.swift in Sources */, - 0E5204D6259F675400CBAB56 /* DataUnit.swift in Sources */, - 0E5204DA259F675400CBAB56 /* ProductManager.swift in Sources */, - 0E5204C6259F675400CBAB56 /* Pool.swift in Sources */, - 0E5204B1259F673D00CBAB56 /* GroupConstants.swift in Sources */, - 0E5204D5259F675400CBAB56 /* ProfileKey.swift in Sources */, - 0E5204D1259F675400CBAB56 /* PlaceholderConnectionProfile.swift in Sources */, - 0E5204AF259F673D00CBAB56 /* ApplicationError.swift in Sources */, - 0E5204B0259F673D00CBAB56 /* Issue.swift in Sources */, - 0E5204CB259F675400CBAB56 /* EndpointDataSource.swift in Sources */, - 0E5204DE259F675400CBAB56 /* OpenVPNOptions.swift in Sources */, - 0EE247F726C115890080A4CE /* SwiftGen+Strings.swift in Sources */, - 0E5204C5259F675400CBAB56 /* ProviderConnectionProfile.swift in Sources */, - 0E5204D0259F675400CBAB56 /* Infrastructure.swift in Sources */, - 0E5204D4259F675400CBAB56 /* ConnectionService.swift in Sources */, - 0E5204DC259F675400CBAB56 /* GracefulVPN.swift in Sources */, - 0E5204C2259F675400CBAB56 /* PoolCategory.swift in Sources */, - 0E5204C3259F675400CBAB56 /* InfrastructureFactory.swift in Sources */, - 0E5204C9259F675400CBAB56 /* ConnectionService+Configurations.swift in Sources */, - 0E5204B2259F673D00CBAB56 /* Utils.swift in Sources */, - 0E5204CF259F675400CBAB56 /* TrustedNetworks.swift in Sources */, - 0E5204D2259F675400CBAB56 /* ConnectionProfile.swift in Sources */, - 0E5204CD259F675400CBAB56 /* Infrastructure+Name.swift in Sources */, - 0E5204CC259F675400CBAB56 /* HostConnectionProfile.swift in Sources */, - 0E5204B7259F674000CBAB56 /* AppConstants.swift in Sources */, - 0E5204C7259F675400CBAB56 /* LocalProduct.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1974,6 +1042,7 @@ files = ( 0ED38AD9213F33150004D387 /* WizardHostViewController.swift in Sources */, 0EE3BBB2215ED3A900F30952 /* AboutViewController.swift in Sources */, + 0EA591162733DDDA0096F796 /* Intents.intentdefinition in Sources */, 0EBE3A79213C4E5500BFA2F5 /* OrganizerViewController.swift in Sources */, 0E4FD7F120D58618002221FF /* Macros.swift in Sources */, 0E05C5D720D1645F006EE732 /* ToggleTableViewCell.swift in Sources */, @@ -1985,12 +1054,12 @@ 0E242742225956AC0064A1A3 /* DonationViewController.swift in Sources */, 0ED38AEC2141260D0004D387 /* ConfigurationModificationDelegate.swift in Sources */, 0E294AA125AE2B0A00CB4908 /* Descriptible.swift in Sources */, - 0E776642229D0DAE0023FA76 /* Intents.intentdefinition in Sources */, 0ECEE45020E1182E00A6BB43 /* Theme+Cells.swift in Sources */, 0E6268942369AD0600355F75 /* PurchaseTableViewCell.swift in Sources */, 0E1066C920E0F84A004F98B7 /* Cells.swift in Sources */, 0E4B0D6B2366E3C100C890B4 /* PurchaseViewController.swift in Sources */, 0EF56BBB2185AC8500B0C8AB /* SwiftGen+Segues.swift in Sources */, + 0EA591132733DD4F0096F796 /* IntentDispatcher.swift in Sources */, 0E05C5D620D1645F006EE732 /* SwiftGen+Scenes.swift in Sources */, 0E773BF8224BF37600CDDC8E /* ShortcutsViewController.swift in Sources */, 0E9CDB6723604AD5006733B4 /* ServerNetworkViewController.swift in Sources */, @@ -2015,26 +1084,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 0E9AA989259F779F003FAFF1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E9AA9FC259F799C003FAFF1 /* InfrastructureTests.swift in Sources */, - 0E9AA9F9259F799C003FAFF1 /* ConnectionServiceTests.swift in Sources */, - 0E9AA9FB259F799C003FAFF1 /* UtilsTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0E9AA9B6259F7821003FAFF1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E9AA9F2259F799B003FAFF1 /* InfrastructureTests.swift in Sources */, - 0E9AA9EF259F799B003FAFF1 /* ConnectionServiceTests.swift in Sources */, - 0E9AA9F1259F799B003FAFF1 /* UtilsTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 0E9AAA5D259F7D7E003FAFF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2047,7 +1096,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0EAAD71920E6669A0088754A /* GroupConstants.swift in Sources */, 0E9AA978259F756A003FAFF1 /* PacketTunnelProvider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2055,46 +1103,20 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0E3152AF223F9EF500F61841 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0E31529A223F9EF400F61841 /* PassepartoutCore-iOS */; - targetProxy = 0E3152AE223F9EF500F61841 /* PBXContainerItemProxy */; - }; 0E5203BD259F5F3F00CBAB56 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 0E5203B4259F5F3F00CBAB56 /* PassepartoutTunnel-macOS */; targetProxy = 0E5203BC259F5F3F00CBAB56 /* PBXContainerItemProxy */; }; - 0E5203F0259F60D600CBAB56 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0E5203E9259F60D600CBAB56 /* PassepartoutCore-macOS */; - targetProxy = 0E5203EF259F60D600CBAB56 /* PBXContainerItemProxy */; - }; - 0E9AA994259F779F003FAFF1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - platformFilter = ios; - target = 0E31529A223F9EF400F61841 /* PassepartoutCore-iOS */; - targetProxy = 0E9AA993259F779F003FAFF1 /* PBXContainerItemProxy */; - }; - 0E9AA9C1259F7821003FAFF1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0E5203E9259F60D600CBAB56 /* PassepartoutCore-macOS */; - targetProxy = 0E9AA9C0259F7821003FAFF1 /* PBXContainerItemProxy */; - }; 0E9AAAC0259F7FFF003FAFF1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 0E9AAA60259F7D7E003FAFF1 /* PassepartoutLauncher-macOS */; targetProxy = 0E9AAABF259F7FFF003FAFF1 /* PBXContainerItemProxy */; }; - 0E9AAAC2259F800B003FAFF1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0E9AAA60259F7D7E003FAFF1 /* PassepartoutLauncher-macOS */; - targetProxy = 0E9AAAC1259F800B003FAFF1 /* PBXContainerItemProxy */; - }; - 0EDE8DC720C86910004C739C /* PBXTargetDependency */ = { + 0EB2B14A2733FB6F007705AB /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 0EDE8DBE20C86910004C739C /* PassepartoutTunnel-iOS */; - targetProxy = 0EDE8DC620C86910004C739C /* PBXContainerItemProxy */; + targetProxy = 0EB2B1492733FB6F007705AB /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -2134,45 +1156,6 @@ name = Shortcuts.storyboard; sourceTree = ""; }; - 0E3CAF98229AAE760008E5C8 /* Core.strings */ = { - isa = PBXVariantGroup; - children = ( - 0E3CAF99229AAE760008E5C8 /* de */, - 0E3CAF9C229AAE760008E5C8 /* el */, - 0E3CAF9E229AAE760008E5C8 /* en */, - 0E3CAFA0229AAE760008E5C8 /* it */, - 0E3CAFAB229AAE760008E5C8 /* sv */, - 0E3CAFB1229AAE760008E5C8 /* ru */, - 0E3CAFB3229AAE760008E5C8 /* fr */, - 0E3CAFB5229AAE760008E5C8 /* nl */, - 0E776575229CF65D0023FA76 /* es */, - 0E6ACB7822B1A5BB001B3C99 /* pt */, - 0E2C54C4230056EF00F59453 /* zh-Hans */, - 0E1C0A53238FFF97009FC087 /* pl */, - ); - name = Core.strings; - sourceTree = ""; - }; - 0E3CAFAD229AAE760008E5C8 /* Intents.intentdefinition */ = { - isa = PBXVariantGroup; - children = ( - 0E3CAFAE229AAE760008E5C8 /* Base */, - 0E776637229D0D9E0023FA76 /* en */, - 0E776638229D0D9F0023FA76 /* it */, - 0E776639229D0DA00023FA76 /* de */, - 0E77663A229D0DA10023FA76 /* ru */, - 0E77663C229D0DA40023FA76 /* nl */, - 0E77663D229D0DA50023FA76 /* el */, - 0E77663E229D0DA60023FA76 /* sv */, - 0E77663F229D0DA70023FA76 /* fr */, - 0E776640229D0DA80023FA76 /* es */, - 0E6ACB7722B1A57C001B3C99 /* pt */, - 0E2C54C3230056C800F59453 /* zh-Hans */, - 0E1C0A50238FFF97009FC087 /* pl */, - ); - name = Intents.intentdefinition; - sourceTree = ""; - }; 0E4B0D762366E6C800C890B4 /* Purchase.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -2237,6 +1220,26 @@ name = Purchase.storyboard; sourceTree = ""; }; + 0EA591142733DDDA0096F796 /* Intents.intentdefinition */ = { + isa = PBXVariantGroup; + children = ( + 0EA591152733DDDA0096F796 /* Base */, + 0EA591182733DDF60096F796 /* en */, + 0EA5911A2733DDF80096F796 /* zh-Hans */, + 0EA5911C2733DDF80096F796 /* nl */, + 0EA5911E2733DDF90096F796 /* fr */, + 0EA591202733DDF90096F796 /* de */, + 0EA591222733DDFA0096F796 /* el */, + 0EA591242733DDFA0096F796 /* it */, + 0EA591262733DDFB0096F796 /* pl */, + 0EA591282733DDFB0096F796 /* pt */, + 0EA5912A2733DDFC0096F796 /* ru */, + 0EA5912C2733DDFC0096F796 /* es */, + 0EA5912E2733DDFD0096F796 /* sv */, + ); + name = Intents.intentdefinition; + sourceTree = ""; + }; 0ED38ADC213F44D00004D387 /* Organizer.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -2248,72 +1251,8 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - 0E3152B2223F9EF500F61841 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0376B8FDB39F81CA072C3F37 /* Pods-ios-PassepartoutCore-iOS.debug.xcconfig */; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1025; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Passepartout/Core/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.PassepartoutCore; - PRODUCT_NAME = PassepartoutCore; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0E3152B3223F9EF500F61841 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5CC1FDDBA184F8548D814E9D /* Pods-ios-PassepartoutCore-iOS.release.xcconfig */; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = NO; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1025; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Passepartout/Core/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.PassepartoutCore; - PRODUCT_NAME = PassepartoutCore; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 0E520305259F573800CBAB56 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E08D99B2FCC4478BB24A57B0 /* Pods-macos-Passepartout-macOS.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -2341,7 +1280,6 @@ }; 0E520306259F573800CBAB56 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5C7F674900185F5DD24DA481 /* Pods-macos-Passepartout-macOS.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -2368,7 +1306,6 @@ }; 0E5203C0259F5F3F00CBAB56 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 50DD79FBBBBF400F3BFE8912 /* Pods-macos-PassepartoutTunnel-macOS.debug.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = "Passepartout/Tunnel/Tunnel-macOS.entitlements"; CODE_SIGN_IDENTITY = "Mac Developer"; @@ -2395,7 +1332,6 @@ }; 0E5203C1259F5F3F00CBAB56 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D2AF3AFC3418E6800D8A70E8 /* Pods-macos-PassepartoutTunnel-macOS.release.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = "Passepartout/Tunnel/Tunnel-macOS.entitlements"; CODE_SIGN_IDENTITY = "Mac Developer"; @@ -2419,69 +1355,6 @@ }; name = Release; }; - 0E5203F4259F60D600CBAB56 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 329F34FAC963CE4BEA3013D6 /* Pods-macos-PassepartoutCore-macOS.debug.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1025; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Passepartout/Core/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.PassepartoutCore; - PRODUCT_NAME = PassepartoutCore; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0E5203F5259F60D600CBAB56 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C3D09D9270939FC37BE7101E /* Pods-macos-PassepartoutCore-macOS.release.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1025; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Passepartout/Core/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.PassepartoutCore; - PRODUCT_NAME = PassepartoutCore; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 0E57F65320C83FC7008323CF /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0E23B4A12298559800304C30 /* Config.xcconfig */; @@ -2520,7 +1393,6 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1025; DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -2587,7 +1459,6 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1025; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_BITCODE = NO; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -2612,7 +1483,6 @@ }; 0E57F65620C83FC7008323CF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 155FC78114E324E01093F98C /* Pods-ios-Passepartout-iOS.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -2635,7 +1505,6 @@ }; 0E57F65720C83FC7008323CF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CFF79E4C42220C649C2259D2 /* Pods-ios-Passepartout-iOS.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -2655,98 +1524,6 @@ }; name = Release; }; - 0E9AA996259F779F003FAFF1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A8E3B69460648EA46C1BF850 /* Pods-ios-PassepartoutCoreTests-iOS.debug.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = DTDYD63ZX9; - INFOPLIST_FILE = Passepartout/Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 0E9AA997259F779F003FAFF1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D5D3FFA0392EA5F818646CD9 /* Pods-ios-PassepartoutCoreTests-iOS.release.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = DTDYD63ZX9; - INFOPLIST_FILE = Passepartout/Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 0E9AA9C3259F7821003FAFF1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E69B5CF79639B3D24F2AFFC9 /* Pods-macos-PassepartoutCoreTests-macOS.debug.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = DTDYD63ZX9; - INFOPLIST_FILE = Passepartout/Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = macosx; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 0E9AA9C4259F7821003FAFF1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 80A0C78A127E8CE9CB8E658D /* Pods-macos-PassepartoutCoreTests-macOS.release.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = DTDYD63ZX9; - INFOPLIST_FILE = Passepartout/Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = macosx; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; 0E9AAA6E259F7D81003FAFF1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2804,7 +1581,6 @@ }; 0EDE8DCA20C86910004C739C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7E007C60601AFBB8A2C34DC4 /* Pods-ios-PassepartoutTunnel-iOS.debug.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = "Passepartout/Tunnel/Tunnel-iOS.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -2827,7 +1603,6 @@ }; 0EDE8DCB20C86910004C739C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9FB2CA39113427B15C824FE0 /* Pods-ios-PassepartoutTunnel-iOS.release.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = "Passepartout/Tunnel/Tunnel-iOS.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -2850,15 +1625,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0E3152B6223F9EF500F61841 /* Build configuration list for PBXNativeTarget "PassepartoutCore-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0E3152B2223F9EF500F61841 /* Debug */, - 0E3152B3223F9EF500F61841 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 0E520304259F573800CBAB56 /* Build configuration list for PBXNativeTarget "Passepartout-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2877,15 +1643,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 0E5203F3259F60D600CBAB56 /* Build configuration list for PBXNativeTarget "PassepartoutCore-macOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0E5203F4259F60D600CBAB56 /* Debug */, - 0E5203F5259F60D600CBAB56 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 0E57F63320C83FC5008323CF /* Build configuration list for PBXProject "Passepartout" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2904,24 +1661,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 0E9AA995259F779F003FAFF1 /* Build configuration list for PBXNativeTarget "PassepartoutCoreTests-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0E9AA996259F779F003FAFF1 /* Debug */, - 0E9AA997259F779F003FAFF1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0E9AA9C2259F7821003FAFF1 /* Build configuration list for PBXNativeTarget "PassepartoutCoreTests-macOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0E9AA9C3259F7821003FAFF1 /* Debug */, - 0E9AA9C4259F7821003FAFF1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 0E9AAA70259F7D81003FAFF1 /* Build configuration list for PBXNativeTarget "PassepartoutLauncher-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2941,6 +1680,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + 0EA5912F2733E1420096F796 /* PassepartoutOpenVPNTunnel */ = { + isa = XCSwiftPackageProductDependency; + productName = PassepartoutOpenVPNTunnel; + }; + 0EA591312733E1490096F796 /* PassepartoutOpenVPNTunnel */ = { + isa = XCSwiftPackageProductDependency; + productName = PassepartoutOpenVPNTunnel; + }; + 0EED0BB82733CEDA00C9FC68 /* PassepartoutCore */ = { + isa = XCSwiftPackageProductDependency; + productName = PassepartoutCore; + }; + 0EED0BBA2733CEE000C9FC68 /* PassepartoutCore */ = { + isa = XCSwiftPackageProductDependency; + productName = PassepartoutCore; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 0E57F63020C83FC5008323CF /* Project object */; } diff --git a/Passepartout.xcodeproj/xcshareddata/xcschemes/Passepartout-iOS.xcscheme b/Passepartout.xcodeproj/xcshareddata/xcschemes/Passepartout-iOS.xcscheme index 86a6fc57..1e11e9ca 100644 --- a/Passepartout.xcodeproj/xcshareddata/xcschemes/Passepartout-iOS.xcscheme +++ b/Passepartout.xcodeproj/xcshareddata/xcschemes/Passepartout-iOS.xcscheme @@ -51,16 +51,6 @@ - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCore-macOS.xcscheme b/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCore-macOS.xcscheme deleted file mode 100644 index 85b5a4ea..00000000 --- a/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCore-macOS.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCoreTests-iOS.xcscheme b/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCoreTests-iOS.xcscheme deleted file mode 100644 index a44aa262..00000000 --- a/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCoreTests-iOS.xcscheme +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCoreTests-macOS.xcscheme b/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCoreTests-macOS.xcscheme deleted file mode 100644 index 955177d4..00000000 --- a/Passepartout.xcodeproj/xcshareddata/xcschemes/PassepartoutCoreTests-macOS.xcscheme +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/Passepartout.xcworkspace/contents.xcworkspacedata b/Passepartout.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 08970be6..00000000 --- a/Passepartout.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/Passepartout.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Passepartout.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/Passepartout.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Passepartout/App/Descriptible.swift b/Passepartout/App/Descriptible.swift index b4105a75..33ef77f5 100644 --- a/Passepartout/App/Descriptible.swift +++ b/Passepartout/App/Descriptible.swift @@ -24,8 +24,11 @@ // import Foundation -import TunnelKit +import PassepartoutConstants import PassepartoutCore +import TunnelKitCore +import TunnelKitManager +import TunnelKitOpenVPN public protocol UIDescriptible { var uiDescription: String { get } diff --git a/Passepartout/App/iOS/AppDelegate.swift b/Passepartout/App/iOS/AppDelegate.swift index cd15d378..0f783305 100644 --- a/Passepartout/App/iOS/AppDelegate.swift +++ b/Passepartout/App/iOS/AppDelegate.swift @@ -24,10 +24,11 @@ // import UIKit -import TunnelKit -import PassepartoutCore -import Convenience import SwiftyBeaver +import PassepartoutConstants +import PassepartoutCore +import TunnelKitOpenVPN +import Convenience private let log = SwiftyBeaver.self diff --git a/Passepartout/Core/Resources/Base.lproj/Intents.intentdefinition b/Passepartout/App/iOS/Base.lproj/Intents.intentdefinition similarity index 100% rename from Passepartout/Core/Resources/Base.lproj/Intents.intentdefinition rename to Passepartout/App/iOS/Base.lproj/Intents.intentdefinition diff --git a/Passepartout/App/iOS/CHANGELOG.md b/Passepartout/App/iOS/CHANGELOG.md index f1dc6548..948bf6a6 100644 --- a/Passepartout/App/iOS/CHANGELOG.md +++ b/Passepartout/App/iOS/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Allow Oeck provider without any purchase. +- Migrate to SwiftPM. ### Fixed diff --git a/Passepartout/App/iOS/Global/HostImporter.swift b/Passepartout/App/iOS/Global/HostImporter.swift index 6eca8e80..9be8d8e0 100644 --- a/Passepartout/App/iOS/Global/HostImporter.swift +++ b/Passepartout/App/iOS/Global/HostImporter.swift @@ -23,10 +23,12 @@ // along with Passepartout. If not, see . // -import Foundation -import PassepartoutCore -import TunnelKit +import UIKit import SwiftyBeaver +import PassepartoutConstants +import PassepartoutCore +import TunnelKitCore +import TunnelKitOpenVPN private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Global/IssueReporter.swift b/Passepartout/App/iOS/Global/IssueReporter.swift index 43933747..42ceb1e5 100644 --- a/Passepartout/App/iOS/Global/IssueReporter.swift +++ b/Passepartout/App/iOS/Global/IssueReporter.swift @@ -24,9 +24,11 @@ // import Foundation -import TunnelKit import MessageUI +import PassepartoutConstants import PassepartoutCore +import TunnelKitManager +import TunnelKitOpenVPN class IssueReporter: NSObject { static let shared = IssueReporter() @@ -57,7 +59,7 @@ class IssueReporter: NSObject { if issue.debugLog { let alert = UIAlertController.asAlert(L10n.IssueReporter.title, L10n.IssueReporter.message) alert.addPreferredAction(L10n.IssueReporter.Buttons.accept) { - VPN.shared.requestDebugLog(fallback: AppConstants.Log.debugSnapshot) { + VPN.shared.requestDebugLog(fallback: TransientStore.shared.debugSnapshot) { self.composeEmail(withDebugLog: $0, issue: issue) } } diff --git a/Passepartout/App/iOS/Global/Macros.swift b/Passepartout/App/iOS/Global/Macros.swift index a1ca1e8a..f1281196 100644 --- a/Passepartout/App/iOS/Global/Macros.swift +++ b/Passepartout/App/iOS/Global/Macros.swift @@ -24,6 +24,7 @@ // import UIKit +import PassepartoutConstants import PassepartoutCore extension UIView { diff --git a/Passepartout/App/iOS/Global/Theme+Cells.swift b/Passepartout/App/iOS/Global/Theme+Cells.swift index 45b51411..1218b9eb 100644 --- a/Passepartout/App/iOS/Global/Theme+Cells.swift +++ b/Passepartout/App/iOS/Global/Theme+Cells.swift @@ -24,9 +24,11 @@ // import UIKit -import TunnelKit +import PassepartoutConstants import PassepartoutCore -import Convenience +import TunnelKitManager +import TunnelKitOpenVPN +import ConvenienceUI extension UITableViewCell { func applyChecked(_ checked: Bool, _ theme: Theme) { diff --git a/Passepartout/App/iOS/Global/Theme+Titles.swift b/Passepartout/App/iOS/Global/Theme+Titles.swift index e58edd6b..a7d29ba3 100644 --- a/Passepartout/App/iOS/Global/Theme+Titles.swift +++ b/Passepartout/App/iOS/Global/Theme+Titles.swift @@ -24,7 +24,7 @@ // import UIKit -import Convenience +import ConvenienceUI extension StrongTableModel { func headerHeight(for section: Int) -> CGFloat { diff --git a/Passepartout/App/iOS/Global/Theme.swift b/Passepartout/App/iOS/Global/Theme.swift index c5e7fb62..7f0c3585 100644 --- a/Passepartout/App/iOS/Global/Theme.swift +++ b/Passepartout/App/iOS/Global/Theme.swift @@ -26,6 +26,7 @@ import UIKit import MessageUI import StoreKit +import PassepartoutConstants import PassepartoutCore struct Theme { diff --git a/Passepartout/Core/Sources/Intents/IntentDispatcher.swift b/Passepartout/App/iOS/Intents/IntentDispatcher.swift similarity index 99% rename from Passepartout/Core/Sources/Intents/IntentDispatcher.swift rename to Passepartout/App/iOS/Intents/IntentDispatcher.swift index 423a2313..d785f8e3 100644 --- a/Passepartout/Core/Sources/Intents/IntentDispatcher.swift +++ b/Passepartout/App/iOS/Intents/IntentDispatcher.swift @@ -26,7 +26,8 @@ import Foundation import Intents import SwiftyBeaver -import TunnelKit +import TunnelKitManager +import PassepartoutCore private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/About/AboutViewController.swift b/Passepartout/App/iOS/Scenes/About/AboutViewController.swift index 82b9a188..9c6772c5 100644 --- a/Passepartout/App/iOS/Scenes/About/AboutViewController.swift +++ b/Passepartout/App/iOS/Scenes/About/AboutViewController.swift @@ -24,8 +24,10 @@ // import UIKit +import PassepartoutConstants import PassepartoutCore import Convenience +import ConvenienceUI class AboutViewController: UITableViewController, StrongTableHost { diff --git a/Passepartout/App/iOS/Scenes/AccountViewController.swift b/Passepartout/App/iOS/Scenes/AccountViewController.swift index 7bab615d..27b0c369 100644 --- a/Passepartout/App/iOS/Scenes/AccountViewController.swift +++ b/Passepartout/App/iOS/Scenes/AccountViewController.swift @@ -24,8 +24,9 @@ // import UIKit +import PassepartoutConstants import PassepartoutCore -import Convenience +import ConvenienceUI protocol AccountViewControllerDelegate: AnyObject { func accountController(_: AccountViewController, didEnterCredentials credentials: Credentials) @@ -44,7 +45,7 @@ class AccountViewController: UIViewController, StrongTableHost { var usernamePlaceholder: String? - var infrastructureName: Infrastructure.Name? { + var infrastructureName: InfrastructureName? { didSet { reloadModel() tableView?.reloadData() diff --git a/Passepartout/App/iOS/Scenes/ConfigurationModificationDelegate.swift b/Passepartout/App/iOS/Scenes/ConfigurationModificationDelegate.swift index bfc822c3..e7ea7d05 100644 --- a/Passepartout/App/iOS/Scenes/ConfigurationModificationDelegate.swift +++ b/Passepartout/App/iOS/Scenes/ConfigurationModificationDelegate.swift @@ -24,7 +24,7 @@ // import Foundation -import TunnelKit +import TunnelKitOpenVPN protocol ConfigurationModificationDelegate: AnyObject { func configuration(didUpdate newConfiguration: OpenVPN.Configuration) diff --git a/Passepartout/App/iOS/Scenes/ConfigurationViewController.swift b/Passepartout/App/iOS/Scenes/ConfigurationViewController.swift index de5a0f69..1146383d 100644 --- a/Passepartout/App/iOS/Scenes/ConfigurationViewController.swift +++ b/Passepartout/App/iOS/Scenes/ConfigurationViewController.swift @@ -24,10 +24,12 @@ // import UIKit -import TunnelKit import SwiftyBeaver +import PassepartoutConstants import PassepartoutCore -import Convenience +import TunnelKitCore +import TunnelKitOpenVPN +import ConvenienceUI private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/DebugLogViewController.swift b/Passepartout/App/iOS/Scenes/DebugLogViewController.swift index 0c5a996c..10f23f87 100644 --- a/Passepartout/App/iOS/Scenes/DebugLogViewController.swift +++ b/Passepartout/App/iOS/Scenes/DebugLogViewController.swift @@ -25,8 +25,9 @@ import UIKit import SwiftyBeaver +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitManager private let log = SwiftyBeaver.self @@ -111,7 +112,7 @@ class DebugLogViewController: UIViewController { } private func startRefreshingLog() { - vpn.requestDebugLog(fallback: AppConstants.Log.debugSnapshot) { + vpn.requestDebugLog(fallback: TransientStore.shared.debugSnapshot) { self.textLog?.text = $0 DispatchQueue.main.async { @@ -134,7 +135,7 @@ class DebugLogViewController: UIViewController { return } - vpn.requestDebugLog(fallback: AppConstants.Log.debugSnapshot) { + vpn.requestDebugLog(fallback: TransientStore.shared.debugSnapshot) { self.textLog?.text = $0 updateBlock() } diff --git a/Passepartout/App/iOS/Scenes/EndpointViewController.swift b/Passepartout/App/iOS/Scenes/EndpointViewController.swift index b8d430af..b489a409 100644 --- a/Passepartout/App/iOS/Scenes/EndpointViewController.swift +++ b/Passepartout/App/iOS/Scenes/EndpointViewController.swift @@ -24,9 +24,10 @@ // import UIKit -import TunnelKit +import PassepartoutConstants import PassepartoutCore -import Convenience +import TunnelKitCore +import ConvenienceUI protocol EndpointViewControllerDelegate: AnyObject { func endpointController(_: EndpointViewController, didUpdateWithNewAddress newAddress: String?, newProtocol: EndpointProtocol?) diff --git a/Passepartout/App/iOS/Scenes/NetworkSettingsViewController.swift b/Passepartout/App/iOS/Scenes/NetworkSettingsViewController.swift index 9502d89b..ead5911e 100644 --- a/Passepartout/App/iOS/Scenes/NetworkSettingsViewController.swift +++ b/Passepartout/App/iOS/Scenes/NetworkSettingsViewController.swift @@ -24,10 +24,11 @@ // import UIKit -import PassepartoutCore -import TunnelKit import SwiftyBeaver -import Convenience +import PassepartoutConstants +import PassepartoutCore +import TunnelKitCore +import ConvenienceUI private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/Organizer/DonationViewController.swift b/Passepartout/App/iOS/Scenes/Organizer/DonationViewController.swift index 42ef9f62..498703ba 100644 --- a/Passepartout/App/iOS/Scenes/Organizer/DonationViewController.swift +++ b/Passepartout/App/iOS/Scenes/Organizer/DonationViewController.swift @@ -25,9 +25,11 @@ import UIKit import StoreKit +import SwiftyBeaver +import PassepartoutConstants import PassepartoutCore import Convenience -import SwiftyBeaver +import ConvenienceUI private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/Organizer/ImportedHostsViewController.swift b/Passepartout/App/iOS/Scenes/Organizer/ImportedHostsViewController.swift index ae499cb6..3afc1d42 100644 --- a/Passepartout/App/iOS/Scenes/Organizer/ImportedHostsViewController.swift +++ b/Passepartout/App/iOS/Scenes/Organizer/ImportedHostsViewController.swift @@ -24,8 +24,9 @@ // import UIKit -import TunnelKit +import TunnelKitCore import SwiftyBeaver +import PassepartoutConstants import PassepartoutCore private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/Organizer/OrganizerViewController.swift b/Passepartout/App/iOS/Scenes/Organizer/OrganizerViewController.swift index 18ad3ebc..62477e1a 100644 --- a/Passepartout/App/iOS/Scenes/Organizer/OrganizerViewController.swift +++ b/Passepartout/App/iOS/Scenes/Organizer/OrganizerViewController.swift @@ -26,10 +26,14 @@ import UIKit import StoreKit import MessageUI -import PassepartoutCore -import TunnelKit -import Convenience import SystemConfiguration.CaptiveNetwork +import PassepartoutConstants +import PassepartoutCore +import TunnelKitCore +import TunnelKitManager +import TunnelKitOpenVPN +import Convenience +import ConvenienceUI // XXX: convoluted due to the separation of provider/host profiles diff --git a/Passepartout/App/iOS/Scenes/Organizer/WizardHostViewController.swift b/Passepartout/App/iOS/Scenes/Organizer/WizardHostViewController.swift index 25680957..ccdee543 100644 --- a/Passepartout/App/iOS/Scenes/Organizer/WizardHostViewController.swift +++ b/Passepartout/App/iOS/Scenes/Organizer/WizardHostViewController.swift @@ -24,10 +24,11 @@ // import UIKit -import TunnelKit import SwiftyBeaver +import PassepartoutConstants import PassepartoutCore -import Convenience +import TunnelKitOpenVPN +import ConvenienceUI private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/Organizer/WizardProviderViewController.swift b/Passepartout/App/iOS/Scenes/Organizer/WizardProviderViewController.swift index 056d27ac..e3f650da 100644 --- a/Passepartout/App/iOS/Scenes/Organizer/WizardProviderViewController.swift +++ b/Passepartout/App/iOS/Scenes/Organizer/WizardProviderViewController.swift @@ -24,9 +24,10 @@ // import UIKit -import PassepartoutCore -import Convenience import SwiftyBeaver +import PassepartoutConstants +import PassepartoutCore +import ConvenienceUI private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/ProviderPoolViewController.swift b/Passepartout/App/iOS/Scenes/ProviderPoolViewController.swift index 03cff1a7..5f915de1 100644 --- a/Passepartout/App/iOS/Scenes/ProviderPoolViewController.swift +++ b/Passepartout/App/iOS/Scenes/ProviderPoolViewController.swift @@ -24,8 +24,9 @@ // import UIKit +import PassepartoutConstants import PassepartoutCore -import Convenience +import ConvenienceUI protocol ProviderPoolViewControllerDelegate: AnyObject { func providerPoolController(_: ProviderPoolViewController, didSelectPool pool: Pool) diff --git a/Passepartout/App/iOS/Scenes/ProviderPresetViewController.swift b/Passepartout/App/iOS/Scenes/ProviderPresetViewController.swift index ef7e09ce..4d175012 100644 --- a/Passepartout/App/iOS/Scenes/ProviderPresetViewController.swift +++ b/Passepartout/App/iOS/Scenes/ProviderPresetViewController.swift @@ -24,6 +24,7 @@ // import UIKit +import PassepartoutConstants import PassepartoutCore protocol ProviderPresetViewControllerDelegate: AnyObject { diff --git a/Passepartout/App/iOS/Scenes/Purchase/PurchaseViewController.swift b/Passepartout/App/iOS/Scenes/Purchase/PurchaseViewController.swift index c77f8b0b..c2e46b4d 100644 --- a/Passepartout/App/iOS/Scenes/Purchase/PurchaseViewController.swift +++ b/Passepartout/App/iOS/Scenes/Purchase/PurchaseViewController.swift @@ -25,9 +25,10 @@ import UIKit import StoreKit +import PassepartoutConstants import PassepartoutCore import SwiftyBeaver -import Convenience +import ConvenienceUI private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/ServerNetworkViewController.swift b/Passepartout/App/iOS/Scenes/ServerNetworkViewController.swift index 769f70dc..b7feb57d 100644 --- a/Passepartout/App/iOS/Scenes/ServerNetworkViewController.swift +++ b/Passepartout/App/iOS/Scenes/ServerNetworkViewController.swift @@ -24,10 +24,12 @@ // import UIKit -import TunnelKit import SwiftyBeaver +import PassepartoutConstants import PassepartoutCore -import Convenience +import TunnelKitCore +import TunnelKitOpenVPN +import ConvenienceUI private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/ServiceViewController.swift b/Passepartout/App/iOS/Scenes/ServiceViewController.swift index e4371254..9b783035 100644 --- a/Passepartout/App/iOS/Scenes/ServiceViewController.swift +++ b/Passepartout/App/iOS/Scenes/ServiceViewController.swift @@ -25,13 +25,15 @@ import UIKit import NetworkExtension -import MBProgressHUD import CoreLocation -import TunnelKit -import PassepartoutCore -import Convenience - import SwiftyBeaver +import PassepartoutConstants +import PassepartoutCore +import TunnelKitCore +import TunnelKitManager +import TunnelKitOpenVPN +import Convenience +import ConvenienceUI private let log = SwiftyBeaver.self diff --git a/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsAddViewController.swift b/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsAddViewController.swift index d54c4f9b..0b6e0a33 100644 --- a/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsAddViewController.swift +++ b/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsAddViewController.swift @@ -25,8 +25,9 @@ import UIKit import Intents +import PassepartoutConstants import PassepartoutCore -import Convenience +import ConvenienceUI @available(iOS 12, *) class ShortcutsAddViewController: UITableViewController, StrongTableHost { diff --git a/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsConnectToViewController.swift b/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsConnectToViewController.swift index 22aadfe8..a8a306d6 100644 --- a/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsConnectToViewController.swift +++ b/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsConnectToViewController.swift @@ -26,14 +26,15 @@ import UIKit import Intents import IntentsUI +import PassepartoutConstants import PassepartoutCore -import Convenience +import ConvenienceUI @available(iOS 12, *) class ShortcutsConnectToViewController: UITableViewController, ProviderPoolViewControllerDelegate, StrongTableHost { private let service = TransientStore.shared.service - private var providers: [Infrastructure.Name] = [] + private var providers: [InfrastructureName] = [] private var hosts: [String] = [] diff --git a/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsViewController.swift b/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsViewController.swift index 71bebd34..7bb591d3 100644 --- a/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsViewController.swift +++ b/Passepartout/App/iOS/Scenes/Shortcuts/ShortcutsViewController.swift @@ -26,8 +26,9 @@ import UIKit import Intents import IntentsUI +import PassepartoutConstants import PassepartoutCore -import Convenience +import ConvenienceUI @available(iOS 12, *) protocol ShortcutsIntentDelegate: AnyObject { diff --git a/Passepartout/Core/Resources/de.lproj/Intents.strings b/Passepartout/App/iOS/de.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/de.lproj/Intents.strings rename to Passepartout/App/iOS/de.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/el.lproj/Intents.strings b/Passepartout/App/iOS/el.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/el.lproj/Intents.strings rename to Passepartout/App/iOS/el.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/en.lproj/Intents.strings b/Passepartout/App/iOS/en.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/en.lproj/Intents.strings rename to Passepartout/App/iOS/en.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/es.lproj/Intents.strings b/Passepartout/App/iOS/es.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/es.lproj/Intents.strings rename to Passepartout/App/iOS/es.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/fr.lproj/Intents.strings b/Passepartout/App/iOS/fr.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/fr.lproj/Intents.strings rename to Passepartout/App/iOS/fr.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/it.lproj/Intents.strings b/Passepartout/App/iOS/it.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/it.lproj/Intents.strings rename to Passepartout/App/iOS/it.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/nl.lproj/Intents.strings b/Passepartout/App/iOS/nl.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/nl.lproj/Intents.strings rename to Passepartout/App/iOS/nl.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/pl.lproj/Intents.strings b/Passepartout/App/iOS/pl.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/pl.lproj/Intents.strings rename to Passepartout/App/iOS/pl.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/pt.lproj/Intents.strings b/Passepartout/App/iOS/pt.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/pt.lproj/Intents.strings rename to Passepartout/App/iOS/pt.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/ru.lproj/Intents.strings b/Passepartout/App/iOS/ru.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/ru.lproj/Intents.strings rename to Passepartout/App/iOS/ru.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/sv.lproj/Intents.strings b/Passepartout/App/iOS/sv.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/sv.lproj/Intents.strings rename to Passepartout/App/iOS/sv.lproj/Intents.strings diff --git a/Passepartout/Core/Resources/zh-Hans.lproj/Intents.strings b/Passepartout/App/iOS/zh-Hans.lproj/Intents.strings similarity index 100% rename from Passepartout/Core/Resources/zh-Hans.lproj/Intents.strings rename to Passepartout/App/iOS/zh-Hans.lproj/Intents.strings diff --git a/Passepartout/App/macOS/AppDelegate.swift b/Passepartout/App/macOS/AppDelegate.swift index 5abb0343..4d543d9d 100644 --- a/Passepartout/App/macOS/AppDelegate.swift +++ b/Passepartout/App/macOS/AppDelegate.swift @@ -24,9 +24,10 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore import Convenience -import TunnelKit +import TunnelKitCore import ServiceManagement // comment on release diff --git a/Passepartout/App/macOS/CHANGELOG.md b/Passepartout/App/macOS/CHANGELOG.md index a95e2e87..1175a915 100644 --- a/Passepartout/App/macOS/CHANGELOG.md +++ b/Passepartout/App/macOS/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Allow Oeck provider without any purchase. - Status bar icon color had to be dropped in order to automatically adjust to desktop background color. +- Migrate to SwiftPM. ### Fixed diff --git a/Passepartout/App/macOS/Global/HostImporter.swift b/Passepartout/App/macOS/Global/HostImporter.swift index 0a1b8ad6..010d069d 100644 --- a/Passepartout/App/macOS/Global/HostImporter.swift +++ b/Passepartout/App/macOS/Global/HostImporter.swift @@ -23,10 +23,12 @@ // along with Passepartout. If not, see . // -import Foundation +import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit import SwiftyBeaver +import TunnelKitCore +import TunnelKitOpenVPN private let log = SwiftyBeaver.self diff --git a/Passepartout/App/macOS/Global/IssueReporter.swift b/Passepartout/App/macOS/Global/IssueReporter.swift index c9e06946..46c54004 100644 --- a/Passepartout/App/macOS/Global/IssueReporter.swift +++ b/Passepartout/App/macOS/Global/IssueReporter.swift @@ -24,8 +24,12 @@ // import Foundation -import TunnelKit +import AppKit +import PassepartoutConstants +import PassepartoutConstants import PassepartoutCore +import TunnelKitManager +import TunnelKitOpenVPN class IssueReporter: NSObject { static let shared = IssueReporter() @@ -38,7 +42,7 @@ class IssueReporter: NSObject { if issue.debugLog { let alert = Macros.warning(L10n.IssueReporter.title, L10n.IssueReporter.message) alert.present(in: nil, withOK: L10n.IssueReporter.Buttons.accept, cancel: L10n.Global.cancel, handler: { - VPN.shared.requestDebugLog(fallback: AppConstants.Log.debugSnapshot) { + VPN.shared.requestDebugLog(fallback: TransientStore.shared.debugSnapshot) { self.composeEmail(withDebugLog: $0, issue: issue) } }, cancelHandler: nil) diff --git a/Passepartout/App/macOS/Global/Macros.swift b/Passepartout/App/macOS/Global/Macros.swift index d5c21442..5dfed35b 100644 --- a/Passepartout/App/macOS/Global/Macros.swift +++ b/Passepartout/App/macOS/Global/Macros.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore class Macros { diff --git a/Passepartout/App/macOS/Global/TextInputViewController.swift b/Passepartout/App/macOS/Global/TextInputViewController.swift index 3a7f1b55..24e7f40b 100644 --- a/Passepartout/App/macOS/Global/TextInputViewController.swift +++ b/Passepartout/App/macOS/Global/TextInputViewController.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore protocol TextInputViewControllerDelegate: AnyObject { diff --git a/Passepartout/App/macOS/Global/Theme+Views.swift b/Passepartout/App/macOS/Global/Theme+Views.swift index 5eab68e2..1b796bc3 100644 --- a/Passepartout/App/macOS/Global/Theme+Views.swift +++ b/Passepartout/App/macOS/Global/Theme+Views.swift @@ -24,8 +24,10 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitManager +import TunnelKitOpenVPN extension NSTextField { func applyVPN(_ theme: Theme, isActive: Bool, with vpnStatus: VPNStatus?, error: OpenVPNTunnelProvider.ProviderError?) { diff --git a/Passepartout/App/macOS/Global/Theme.swift b/Passepartout/App/macOS/Global/Theme.swift index b3bc87bd..1380660d 100644 --- a/Passepartout/App/macOS/Global/Theme.swift +++ b/Passepartout/App/macOS/Global/Theme.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore struct Theme { diff --git a/Passepartout/App/macOS/Global/WindowManager.swift b/Passepartout/App/macOS/Global/WindowManager.swift index a5114b21..ea5bc8f9 100644 --- a/Passepartout/App/macOS/Global/WindowManager.swift +++ b/Passepartout/App/macOS/Global/WindowManager.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore class WindowManager: NSObject { diff --git a/Passepartout/App/macOS/Menu/StatusMenu.swift b/Passepartout/App/macOS/Menu/StatusMenu.swift index 8fe158cb..cac67900 100644 --- a/Passepartout/App/macOS/Menu/StatusMenu.swift +++ b/Passepartout/App/macOS/Menu/StatusMenu.swift @@ -25,8 +25,11 @@ import Cocoa import StoreKit +import PassepartoutConstants +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitCore +import TunnelKitManager import Convenience class StatusMenu: NSObject { diff --git a/Passepartout/App/macOS/Scenes/OrganizerProfileTableView.swift b/Passepartout/App/macOS/Scenes/OrganizerProfileTableView.swift index bde25324..b678d252 100644 --- a/Passepartout/App/macOS/Scenes/OrganizerProfileTableView.swift +++ b/Passepartout/App/macOS/Scenes/OrganizerProfileTableView.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore protocol OrganizerProfileTableViewDelegate: AnyObject { diff --git a/Passepartout/App/macOS/Scenes/OrganizerViewController.swift b/Passepartout/App/macOS/Scenes/OrganizerViewController.swift index cb5bd5f2..4f65bc93 100644 --- a/Passepartout/App/macOS/Scenes/OrganizerViewController.swift +++ b/Passepartout/App/macOS/Scenes/OrganizerViewController.swift @@ -24,9 +24,10 @@ // import Cocoa -import PassepartoutCore -import TunnelKit import SwiftyBeaver +import PassepartoutConstants +import PassepartoutCore +import TunnelKitManager private let log = SwiftyBeaver.self @@ -205,7 +206,7 @@ class OrganizerViewController: NSViewController { } else if let vc = segue.destinationController as? AccountViewController { // add provider -> account - if let name = sender as? Infrastructure.Name { + if let name = sender as? InfrastructureName { vc.profile = ProviderConnectionProfile(name: name) } // add host -> rename -> account diff --git a/Passepartout/App/macOS/Scenes/Preferences/DebugLogViewController.swift b/Passepartout/App/macOS/Scenes/Preferences/DebugLogViewController.swift index 8c108a66..de320ad3 100644 --- a/Passepartout/App/macOS/Scenes/Preferences/DebugLogViewController.swift +++ b/Passepartout/App/macOS/Scenes/Preferences/DebugLogViewController.swift @@ -24,8 +24,9 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitManager class DebugLogViewController: NSViewController { @IBOutlet private weak var labelExchangedCaption: NSTextField! diff --git a/Passepartout/App/macOS/Scenes/Preferences/PreferencesGeneralViewController.swift b/Passepartout/App/macOS/Scenes/Preferences/PreferencesGeneralViewController.swift index bc39e095..73c88f87 100644 --- a/Passepartout/App/macOS/Scenes/Preferences/PreferencesGeneralViewController.swift +++ b/Passepartout/App/macOS/Scenes/Preferences/PreferencesGeneralViewController.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore import ServiceManagement diff --git a/Passepartout/App/macOS/Scenes/Preferences/PreferencesViewController.swift b/Passepartout/App/macOS/Scenes/Preferences/PreferencesViewController.swift index 6e685601..416cb929 100644 --- a/Passepartout/App/macOS/Scenes/Preferences/PreferencesViewController.swift +++ b/Passepartout/App/macOS/Scenes/Preferences/PreferencesViewController.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore class PreferencesViewController: NSViewController { diff --git a/Passepartout/App/macOS/Scenes/Purchase/PurchaseViewController.swift b/Passepartout/App/macOS/Scenes/Purchase/PurchaseViewController.swift index 715cd630..64988ad6 100644 --- a/Passepartout/App/macOS/Scenes/Purchase/PurchaseViewController.swift +++ b/Passepartout/App/macOS/Scenes/Purchase/PurchaseViewController.swift @@ -25,6 +25,7 @@ import Cocoa import StoreKit +import PassepartoutConstants import PassepartoutCore import SwiftyBeaver import Convenience diff --git a/Passepartout/App/macOS/Scenes/Service/AccountViewController.swift b/Passepartout/App/macOS/Scenes/Service/AccountViewController.swift index 2d083ebb..26e45a7f 100644 --- a/Passepartout/App/macOS/Scenes/Service/AccountViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/AccountViewController.swift @@ -24,7 +24,8 @@ // import Cocoa -import TunnelKit +import TunnelKitCore +import PassepartoutConstants import PassepartoutCore protocol AccountViewControllerDelegate: AnyObject { diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/ConfigurationViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/ConfigurationViewController.swift index 5219afbe..31c46af3 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/ConfigurationViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/ConfigurationViewController.swift @@ -24,8 +24,9 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitOpenVPN class ConfigurationViewController: NSViewController, ProfileCustomization { private struct Columns { diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/DNSViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/DNSViewController.swift index 1f2c5f28..aebd397f 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/DNSViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/DNSViewController.swift @@ -24,8 +24,9 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitCore class DNSViewController: NSViewController, ProfileCustomization { @IBOutlet private weak var popupChoice: NSPopUpButton! diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/DefaultGatewayViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/DefaultGatewayViewController.swift index 48a42dfb..53e1f939 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/DefaultGatewayViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/DefaultGatewayViewController.swift @@ -24,8 +24,9 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitOpenVPN class DefaultGatewayViewController: NSViewController, ProfileCustomization { @IBOutlet private weak var popupChoice: NSPopUpButton! diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/EndpointViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/EndpointViewController.swift index 73511c85..a58c99a9 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/EndpointViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/EndpointViewController.swift @@ -24,8 +24,9 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitCore class EndpointViewController: NSViewController, ProfileCustomization { @IBOutlet private weak var labelAddressCaption: NSTextField! diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/MTUViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/MTUViewController.swift index bfd6a06a..764003f3 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/MTUViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/MTUViewController.swift @@ -24,8 +24,9 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitCore class MTUViewController: NSViewController, ProfileCustomization { @IBOutlet private weak var popupChoice: NSPopUpButton! diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/ProfileCustomizationViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/ProfileCustomizationViewController.swift index a285bbd8..5b6da80e 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/ProfileCustomizationViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/ProfileCustomizationViewController.swift @@ -24,8 +24,10 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitCore +import TunnelKitOpenVPN protocol ProfileCustomization: AnyObject { var profile: ConnectionProfile? { get set } diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/ProxyViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/ProxyViewController.swift index c794890e..0d76e69f 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/ProxyViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/ProxyViewController.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore class ProxyViewController: NSViewController, ProfileCustomization { diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/TrustedNetworksAddViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/TrustedNetworksAddViewController.swift index a2f0d032..be1dc0a1 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/TrustedNetworksAddViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/TrustedNetworksAddViewController.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore protocol TrustedNetworksAddViewControllerDelegate: AnyObject { diff --git a/Passepartout/App/macOS/Scenes/Service/Customization/TrustedNetworksViewController.swift b/Passepartout/App/macOS/Scenes/Service/Customization/TrustedNetworksViewController.swift index e6eaf909..b3474738 100644 --- a/Passepartout/App/macOS/Scenes/Service/Customization/TrustedNetworksViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/Customization/TrustedNetworksViewController.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore class TrustedNetworksViewController: NSViewController, ProfileCustomization { diff --git a/Passepartout/App/macOS/Scenes/Service/HostServiceView.swift b/Passepartout/App/macOS/Scenes/Service/HostServiceView.swift index e4ae7978..5340514d 100644 --- a/Passepartout/App/macOS/Scenes/Service/HostServiceView.swift +++ b/Passepartout/App/macOS/Scenes/Service/HostServiceView.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore protocol HostServiceViewDelegate: AnyObject { diff --git a/Passepartout/App/macOS/Scenes/Service/ProviderServiceView.swift b/Passepartout/App/macOS/Scenes/Service/ProviderServiceView.swift index 58948fcc..0fb5bba0 100644 --- a/Passepartout/App/macOS/Scenes/Service/ProviderServiceView.swift +++ b/Passepartout/App/macOS/Scenes/Service/ProviderServiceView.swift @@ -24,6 +24,7 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore protocol ProviderServiceViewDelegate: AnyObject { diff --git a/Passepartout/App/macOS/Scenes/Service/ServiceViewController.swift b/Passepartout/App/macOS/Scenes/Service/ServiceViewController.swift index af9f958e..09ab88d5 100644 --- a/Passepartout/App/macOS/Scenes/Service/ServiceViewController.swift +++ b/Passepartout/App/macOS/Scenes/Service/ServiceViewController.swift @@ -24,8 +24,10 @@ // import Cocoa +import PassepartoutConstants import PassepartoutCore -import TunnelKit +import TunnelKitCore +import TunnelKitManager import SwiftyBeaver import Convenience diff --git a/Passepartout/Core/Info.plist b/Passepartout/Core/Info.plist deleted file mode 100644 index 654a7bd6..00000000 --- a/Passepartout/Core/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.17.0 - CFBundleVersion - 1025 - NSHumanReadableCopyright - $(CFG_COPYRIGHT) - - diff --git a/Passepartout/Core/PassepartoutCore.h b/Passepartout/Core/PassepartoutCore.h deleted file mode 100644 index 1e171b16..00000000 --- a/Passepartout/Core/PassepartoutCore.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// PassepartoutCore.h -// Passepartout -// -// Created by Davide De Rosa on 3/18/19. -// Copyright (c) 2021 Davide De Rosa. All rights reserved. - -// https://github.com/passepartoutvpn -// -// This file is part of Passepartout. -// -// Passepartout is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Passepartout is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Passepartout. If not, see . -// - -#import - -//! Project version number for PassepartoutCore. -FOUNDATION_EXPORT double PassepartoutCoreVersionNumber; - -//! Project version string for PassepartoutCore. -FOUNDATION_EXPORT const unsigned char PassepartoutCoreVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Passepartout/Core/swiftgen.yml b/Passepartout/Core/swiftgen.yml deleted file mode 100644 index 320d6740..00000000 --- a/Passepartout/Core/swiftgen.yml +++ /dev/null @@ -1,8 +0,0 @@ -strings: - inputs: - - Resources/en.lproj/Core.strings - outputs: - - templateName: structured-swift4 - output: Sources/SwiftGen+Strings.swift - params: - publicAccess: true diff --git a/Passepartout/Tests/Info.plist b/Passepartout/Tests/Info.plist deleted file mode 100644 index b25094a6..00000000 --- a/Passepartout/Tests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.17.0 - CFBundleVersion - 1025 - - diff --git a/Passepartout/Tunnel/PacketTunnelProvider.swift b/Passepartout/Tunnel/PacketTunnelProvider.swift index 624418ba..66048eb6 100644 --- a/Passepartout/Tunnel/PacketTunnelProvider.swift +++ b/Passepartout/Tunnel/PacketTunnelProvider.swift @@ -23,7 +23,9 @@ // along with Passepartout. If not, see . // -import TunnelKit +import Foundation +import TunnelKitOpenVPN +import PassepartoutConstants class PacketTunnelProvider: OpenVPNTunnelProvider { override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) { diff --git a/Passepartout/Tunnel/Tunnel-iOS.entitlements b/Passepartout/Tunnel/Tunnel-iOS.entitlements index 7e8ffa9c..93208e36 100644 --- a/Passepartout/Tunnel/Tunnel-iOS.entitlements +++ b/Passepartout/Tunnel/Tunnel-iOS.entitlements @@ -8,7 +8,7 @@ com.apple.security.application-groups - group.$(CFG_GROUP_ID) + group.com.algoritmico.Passepartout keychain-access-groups diff --git a/PassepartoutCore/Package.resolved b/PassepartoutCore/Package.resolved new file mode 100644 index 00000000..d1b180c1 --- /dev/null +++ b/PassepartoutCore/Package.resolved @@ -0,0 +1,79 @@ +{ + "object": { + "pins": [ + { + "package": "Convenience", + "repositoryURL": "https://github.com/keeshux/convenience", + "state": { + "branch": null, + "revision": "c7399a59539308db5a05b6b83fb10e23fcc81426", + "version": null + } + }, + { + "package": "DTFoundation", + "repositoryURL": "https://github.com/Cocoanetics/DTFoundation.git", + "state": { + "branch": null, + "revision": "76062513434421cb6c8a1ae1d4f8368a7ebc2da3", + "version": "1.7.18" + } + }, + { + "package": "FontAwesome", + "repositoryURL": "https://github.com/thii/FontAwesome.swift", + "state": { + "branch": null, + "revision": "07883a32d49dfc7bdedbeea115067b53dfbeeb43", + "version": "1.9.1" + } + }, + { + "package": "Kvitto", + "repositoryURL": "https://github.com/Cocoanetics/Kvitto", + "state": { + "branch": null, + "revision": "88888674d772ddcf19671159ed0022cb0bc37be2", + "version": "1.0.6" + } + }, + { + "package": "MBProgressHUD", + "repositoryURL": "https://github.com/jdg/MBProgressHUD", + "state": { + "branch": null, + "revision": "bca42b801100b2b3a4eda0ba8dd33d858c780b0d", + "version": "1.2.0" + } + }, + { + "package": "openssl-apple", + "repositoryURL": "https://github.com/keeshux/openssl-apple", + "state": { + "branch": null, + "revision": "1889136399ba40e4fc358cfe7fafef7170aac3f7", + "version": "1.1.112" + } + }, + { + "package": "SwiftyBeaver", + "repositoryURL": "https://github.com/SwiftyBeaver/SwiftyBeaver", + "state": { + "branch": null, + "revision": "2c039501d6eeb4d4cd4aec4a8d884ad28862e044", + "version": "1.9.5" + } + }, + { + "package": "TunnelKit", + "repositoryURL": "https://github.com/passepartoutvpn/tunnelkit", + "state": { + "branch": null, + "revision": "3a546ebfbb4cde41496cc719781dbf11477ae161", + "version": null + } + } + ] + }, + "version": 1 +} diff --git a/PassepartoutCore/Package.swift b/PassepartoutCore/Package.swift new file mode 100644 index 00000000..40f73113 --- /dev/null +++ b/PassepartoutCore/Package.swift @@ -0,0 +1,61 @@ +// swift-tools-version:5.5 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "PassepartoutCore", + defaultLocalization: "en", + platforms: [ + .iOS(.v12), .macOS(.v10_15) + ], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "PassepartoutCore", + targets: ["PassepartoutCore"]), + .library( + name: "PassepartoutOpenVPNTunnel", + targets: ["PassepartoutOpenVPNTunnel"]) + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + // .package(url: /* package url */, from: "1.0.0"), + .package(name: "TunnelKit", url: "https://github.com/passepartoutvpn/tunnelkit", revision: "3a546ebfbb4cde41496cc719781dbf11477ae161"), + .package(name: "Convenience", url: "https://github.com/keeshux/convenience", revision: "c7399a59539308db5a05b6b83fb10e23fcc81426"), + .package(url: "https://github.com/Cocoanetics/Kvitto", from: "1.0.0") + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "PassepartoutConstants", + dependencies: []), + .target( + name: "PassepartoutCore", + dependencies: [ + "PassepartoutConstants", + .product(name: "TunnelKitOpenVPN", package: "TunnelKit"), + .product(name: "TunnelKitLZO", package: "TunnelKit"), + "Convenience", + .product(name: "ConvenienceUI", package: "Convenience", condition: .when(platforms: [.iOS])), + "Kvitto" + ], + resources: [ + .copy("API") + ]), + .target( + name: "PassepartoutOpenVPNTunnel", + dependencies: [ + "PassepartoutConstants", + .product(name: "TunnelKitOpenVPN", package: "TunnelKit"), + .product(name: "TunnelKitLZO", package: "TunnelKit") + ]), + .testTarget( + name: "PassepartoutCoreTests", + dependencies: ["PassepartoutCore"], + resources: [ + .process("Resources") + ]) + ] +) diff --git a/Passepartout/Core/Sources/AppConstants.swift b/PassepartoutCore/Sources/PassepartoutConstants/AppConstants.swift similarity index 73% rename from Passepartout/Core/Sources/AppConstants.swift rename to PassepartoutCore/Sources/PassepartoutConstants/AppConstants.swift index 8e025caa..bd7b5021 100644 --- a/Passepartout/Core/Sources/AppConstants.swift +++ b/PassepartoutCore/Sources/PassepartoutConstants/AppConstants.swift @@ -24,9 +24,6 @@ // import Foundation -import TunnelKit -import Convenience -import SwiftyBeaver public class AppConstants { public class App { @@ -49,14 +46,16 @@ public class AppConstants { public class Store { public static let serviceFilename = "ConnectionService.json" - public static let apiDirectory = "API/\(WebServices.version)" + public static let apiDirectory = "API/\(Services.version)" public static let providersDirectory = "Providers" public static let hostsDirectory = "Hosts" } - + public class Services { + public static let version = "v4" + public static func apiURL(version: String, path: String) -> URL { return Repos.api.appendingPathComponent(version).appendingPathComponent(path) } @@ -79,12 +78,8 @@ public class AppConstants { } public class Log { - public static let level: SwiftyBeaver.Level = .debug - public static let debugFormat = "$DHH:mm:ss$d - $M" - public static var debugSnapshot: () -> String = { TransientStore.shared.service.vpnLog } - public static let viewerRefreshInterval: TimeInterval = 3.0 private static let fileName = "Debug.log" @@ -92,26 +87,6 @@ public class AppConstants { public static var fileURL: URL { return GroupConstants.App.cachesURL.appendingPathComponent(fileName) } - - private static let console: ConsoleDestination = { - let dest = ConsoleDestination() - dest.minLevel = level - dest.useNSLog = true - return dest - }() - - private static let file: FileDestination = { - let dest = FileDestination() - dest.minLevel = level - dest.logFileURL = fileURL - _ = dest.deleteLogFile() - return dest - }() - - public static func configure() { - SwiftyBeaver.addDestination(console) - SwiftyBeaver.addDestination(file) - } } public class IssueReporter { @@ -225,14 +200,14 @@ public class AppConstants { return comps.url! } - public static let guidances: [Infrastructure.Name: String] = [ + public static let guidances: [InfrastructureName: String] = [ .protonvpn: "https://account.protonvpn.com/settings", .surfshark: "https://my.surfshark.com/vpn/manual-setup/main", .torguard: "https://torguard.net/clientarea.php?action=changepw", .windscribe: "https://windscribe.com/getconfig/openvpn" ] - public static let referrals: [Infrastructure.Name: String] = [ + public static let referrals: [InfrastructureName: String] = [ .hideme: "https://member.hide.me/en/checkout?plan=new_default_prices&coupon=6CB-BDB-802&duration=24", .mullvad: "https://mullvad.net/en/account/create/", .nordvpn: "https://go.nordvpn.net/SH21Z", @@ -244,7 +219,7 @@ public class AppConstants { .windscribe: "https://secure.link/kCsD0prd" ] - public static let externalResources: [Infrastructure.Name: String] = [ + public static let externalResources: [InfrastructureName: String] = [ .nordvpn: "https://downloads.nordcdn.com/configs/archives/certificates/servers.zip" // 9MB ] } @@ -286,60 +261,48 @@ public class AppConstants { public struct Credits { public static let author = "Davide De Rosa" - public static let software: [Software] = [ - Software( - "Kvitto", - license: "BSD", - url: "https://raw.githubusercontent.com/Cocoanetics/Kvitto/develop/LICENSE" - ), - Software( - "lzo", - license: "GPLv2", - url: "https://www.gnu.org/licenses/gpl-2.0.txt" - ), - Software( - "MBProgressHUD", - license: "MIT", - url: "https://raw.githubusercontent.com/jdg/MBProgressHUD/master/LICENSE" - ), - Software( - "OpenSSL", - license: "OpenSSL", - url: "https://www.openssl.org/source/license.txt" - ), - Software( - "PIATunnel", - license: "MIT", - url: "https://raw.githubusercontent.com/pia-foss/tunnel-apple/master/LICENSE" - ), - Software( - "SSZipArchive", - license: "MIT", - url: "https://raw.githubusercontent.com/samsoffes/ssziparchive/master/LICENSE" - ), - Software( - "SwiftGen", - license: "MIT", - url: "https://raw.githubusercontent.com/SwiftGen/SwiftGen/master/LICENCE" - ), - Software( - "SwiftyBeaver", - license: "MIT", - url: "https://raw.githubusercontent.com/SwiftyBeaver/SwiftyBeaver/master/LICENSE" - ), - Software( - "Circle Icons", - notice: "The logo is taken from the awesome Circle Icons set by Nick Roach." - ), - Software( - "Country flags", - notice: "The country flags are taken from: https://github.com/lipis/flag-icon-css/" - ), - Software( - "OpenVPN", - notice: "© 2002-2018 OpenVPN Inc. - OpenVPN is a registered trademark of OpenVPN Inc." - ) - ] + public static let softwareArrays: [[String]] = [[ + "Kvitto", + "BSD", + "https://raw.githubusercontent.com/Cocoanetics/Kvitto/develop/LICENSE" + ], [ + "lzo", + "GPLv2", + "https://www.gnu.org/licenses/gpl-2.0.txt" + ], [ + "MBProgressHUD", + "MIT", + "https://raw.githubusercontent.com/jdg/MBProgressHUD/master/LICENSE" + ], [ + "OpenSSL", + "OpenSSL", + "https://www.openssl.org/source/license.txt" + ], [ + "PIATunnel", + "MIT", + "https://raw.githubusercontent.com/pia-foss/tunnel-apple/master/LICENSE" + ], [ + "SSZipArchive", + "MIT", + "https://raw.githubusercontent.com/samsoffes/ssziparchive/master/LICENSE" + ], [ + "SwiftGen", + "MIT", + "https://raw.githubusercontent.com/SwiftGen/SwiftGen/master/LICENCE" + ], [ + "SwiftyBeaver", + "MIT", + "https://raw.githubusercontent.com/SwiftyBeaver/SwiftyBeaver/master/LICENSE" + ], [ + "Circle Icons", + "The logo is taken from the awesome Circle Icons set by Nick Roach." + ], [ + "Country flags", + "The country flags are taken from: https://github.com/lipis/flag-icon-css/" + ], [ + "OpenVPN", + "© 2002-2018 OpenVPN Inc. - OpenVPN is a registered trademark of OpenVPN Inc." + ]] } public struct Rating { @@ -350,19 +313,19 @@ public class AppConstants { #endif } - struct InApp { - static let locksBetaFeatures = true + public struct InApp { + public static let locksBetaFeatures = true #if os(iOS) - static var isBetaFullVersion: Bool { + public static var isBetaFullVersion: Bool { return ProcessInfo.processInfo.environment["FULL_VERSION"] != nil } - static let lastFullVersionBuild: (Int, LocalProduct) = (2016, .fullVersion_iOS) + public static let lastFullVersionBuild: (Int, LocalProduct) = (2016, .fullVersion_iOS) #else - static let isBetaFullVersion = false + public static let isBetaFullVersion = false - static let lastFullVersionBuild: (Int, LocalProduct) = (0, .fullVersion_macOS) + public static let lastFullVersionBuild: (Int, LocalProduct) = (0, .fullVersion_macOS) #endif } } diff --git a/Passepartout/Core/Sources/GroupConstants.swift b/PassepartoutCore/Sources/PassepartoutConstants/GroupConstants.swift similarity index 96% rename from Passepartout/Core/Sources/GroupConstants.swift rename to PassepartoutCore/Sources/PassepartoutConstants/GroupConstants.swift index 2b161c2c..bb92f12c 100644 --- a/Passepartout/Core/Sources/GroupConstants.swift +++ b/PassepartoutCore/Sources/PassepartoutConstants/GroupConstants.swift @@ -24,7 +24,6 @@ // import Foundation -import Convenience public class GroupConstants { public class App { @@ -48,7 +47,7 @@ public class GroupConstants { private static var containerURL: URL { guard let url = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: groupId) else { print("Unable to access App Group container") - return FileManager.default.userURL(for: .documentDirectory, appending: nil) + return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] } return url } diff --git a/Passepartout/Core/Sources/Services/Infrastructure+Name.swift b/PassepartoutCore/Sources/PassepartoutConstants/InfrastructureName.swift similarity index 88% rename from Passepartout/Core/Sources/Services/Infrastructure+Name.swift rename to PassepartoutCore/Sources/PassepartoutConstants/InfrastructureName.swift index 099bad83..aa821071 100644 --- a/Passepartout/Core/Sources/Services/Infrastructure+Name.swift +++ b/PassepartoutCore/Sources/PassepartoutConstants/InfrastructureName.swift @@ -1,5 +1,5 @@ // -// Infrastructure+Name.swift +// InfrastructureName.swift // Passepartout // // Created by Davide De Rosa on 11/24/19. @@ -24,15 +24,10 @@ // import Foundation -import SwiftyBeaver -private let log = SwiftyBeaver.self +public typealias InfrastructureName = String -extension Infrastructure { - public typealias Name = String -} - -extension Infrastructure.Name { +extension InfrastructureName { public static let hideme = "hideme" public static let mullvad = "mullvad" diff --git a/Passepartout/Core/Sources/Model/LocalProduct.swift b/PassepartoutCore/Sources/PassepartoutConstants/LocalProduct.swift similarity index 86% rename from Passepartout/Core/Sources/Model/LocalProduct.swift rename to PassepartoutCore/Sources/PassepartoutConstants/LocalProduct.swift index 814923b7..9724895d 100644 --- a/Passepartout/Core/Sources/Model/LocalProduct.swift +++ b/PassepartoutCore/Sources/PassepartoutConstants/LocalProduct.swift @@ -35,7 +35,7 @@ public struct LocalProduct: RawRepresentable, Equatable, Hashable { private static let featuresBundle = "\(bundle).features" - private static let providersBundle = "\(bundle).providers" + public static let providersBundle = "\(bundle).providers" // MARK: Donations @@ -91,18 +91,6 @@ public struct LocalProduct: RawRepresentable, Equatable, Hashable { self.init(rawValue: "\(LocalProduct.featuresBundle).\(featureId)")! } - // MARK: Providers - -// public static var allProviders: [LocalProduct] { -// return InfrastructureFactory.shared.allMetadata.map { -// return LocalProduct(providerMetadata: $0) -// } -// } - - fileprivate init(providerMetadata: Infrastructure.Metadata) { - self.init(rawValue: "\(LocalProduct.providersBundle).\(providerMetadata.inApp ?? providerMetadata.name)")! - } - // MARK: All public static var all: [LocalProduct] { @@ -142,12 +130,6 @@ public struct LocalProduct: RawRepresentable, Equatable, Hashable { } } -public extension Infrastructure.Metadata { - var product: LocalProduct { - return LocalProduct(providerMetadata: self) - } -} - public extension LocalProduct { func matchesStoreKitProduct(_ skProduct: SKProduct) -> Bool { return skProduct.productIdentifier == rawValue diff --git a/PassepartoutCore/Sources/PassepartoutCore/API b/PassepartoutCore/Sources/PassepartoutCore/API new file mode 160000 index 00000000..02768b6c --- /dev/null +++ b/PassepartoutCore/Sources/PassepartoutCore/API @@ -0,0 +1 @@ +Subproject commit 02768b6c06fd37a8c9b15a9e72bbecdd62cc440f diff --git a/PassepartoutCore/Sources/PassepartoutCore/AppConstants+Core.swift b/PassepartoutCore/Sources/PassepartoutCore/AppConstants+Core.swift new file mode 100644 index 00000000..82793751 --- /dev/null +++ b/PassepartoutCore/Sources/PassepartoutCore/AppConstants+Core.swift @@ -0,0 +1,70 @@ +// +// AppConstants+Core.swift +// Passepartout +// +// Created by Davide De Rosa on 11/5/21. +// Copyright (c) 2021 Davide De Rosa. All rights reserved. +// +// https://github.com/passepartoutvpn +// +// This file is part of Passepartout. +// +// Passepartout is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Passepartout is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Passepartout. If not, see . +// + +import Foundation +import PassepartoutConstants +import Convenience +import SwiftyBeaver + +extension AppConstants.Log { + public static let level: SwiftyBeaver.Level = .debug + + private static let console: ConsoleDestination = { + let dest = ConsoleDestination() + dest.minLevel = level + dest.useNSLog = true + return dest + }() + + private static let file: FileDestination = { + let dest = FileDestination() + dest.minLevel = level + dest.logFileURL = fileURL + _ = dest.deleteLogFile() + return dest + }() + + public static func configure() { + SwiftyBeaver.addDestination(console) + SwiftyBeaver.addDestination(file) + } +} + +extension AppConstants.Credits { + public static var software: [Software] { + return softwareArrays.map { + switch $0.count { + case 2: + return Software($0[0], notice: $0[1]) + + case 3: + return Software($0[0], license: $0[1], url: $0[2]) + + default: + fatalError("Not enough Software arguments") + } + } + } +} diff --git a/Passepartout/Core/Sources/ApplicationError.swift b/PassepartoutCore/Sources/PassepartoutCore/ApplicationError.swift similarity index 100% rename from Passepartout/Core/Sources/ApplicationError.swift rename to PassepartoutCore/Sources/PassepartoutCore/ApplicationError.swift diff --git a/Passepartout/Core/Sources/Issue.swift b/PassepartoutCore/Sources/PassepartoutCore/Issue.swift similarity index 98% rename from Passepartout/Core/Sources/Issue.swift rename to PassepartoutCore/Sources/PassepartoutCore/Issue.swift index 54ff717a..65d38b09 100644 --- a/Passepartout/Core/Sources/Issue.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Issue.swift @@ -24,7 +24,7 @@ // import Foundation -import TunnelKit +import TunnelKitCore #if os(iOS) import MessageUI #endif diff --git a/Passepartout/Core/Sources/Model/ConnectionProfile.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionProfile.swift similarity index 97% rename from Passepartout/Core/Sources/Model/ConnectionProfile.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionProfile.swift index 2c8b3458..4ca6af50 100644 --- a/Passepartout/Core/Sources/Model/ConnectionProfile.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionProfile.swift @@ -24,8 +24,10 @@ // import Foundation -import TunnelKit import NetworkExtension +import TunnelKitCore +import TunnelKitOpenVPN +import TunnelKitAppExtension public enum Context: String, Codable { case provider diff --git a/Passepartout/Core/Sources/Model/ConnectionService+Configurations.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService+Configurations.swift similarity index 100% rename from Passepartout/Core/Sources/Model/ConnectionService+Configurations.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService+Configurations.swift diff --git a/Passepartout/Core/Sources/Model/ConnectionService+Migration.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService+Migration.swift similarity index 97% rename from Passepartout/Core/Sources/Model/ConnectionService+Migration.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService+Migration.swift index 01a46afb..3ab437f9 100644 --- a/Passepartout/Core/Sources/Model/ConnectionService+Migration.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService+Migration.swift @@ -25,7 +25,9 @@ import Foundation import SwiftyBeaver -import TunnelKit +import TunnelKitCore +import TunnelKitAppExtension +import PassepartoutConstants private let log = SwiftyBeaver.self diff --git a/Passepartout/Core/Sources/Model/ConnectionService.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService.swift similarity index 98% rename from Passepartout/Core/Sources/Model/ConnectionService.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService.swift index b908ff1a..0b014abc 100644 --- a/Passepartout/Core/Sources/Model/ConnectionService.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/ConnectionService.swift @@ -24,9 +24,13 @@ // import Foundation -import TunnelKit import NetworkExtension import SwiftyBeaver +import TunnelKitCore +import TunnelKitAppExtension +import TunnelKitManager +import TunnelKitOpenVPN +import PassepartoutConstants private let log = SwiftyBeaver.self @@ -636,7 +640,7 @@ public class ConnectionService: Codable { } public extension ConnectionService { - func providerNames() -> [Infrastructure.Name] { + func providerNames() -> [InfrastructureName] { return ids(forContext: .provider) } @@ -644,7 +648,7 @@ public extension ConnectionService { return ids(forContext: .host) } - func sortedProviderNames() -> [Infrastructure.Name] { + func sortedProviderNames() -> [InfrastructureName] { return providerNames().sorted() } @@ -660,7 +664,7 @@ public extension ConnectionService { return screenTitle(ProfileKey(.host, id)) } - func screenTitle(forProviderName name: Infrastructure.Name) -> String { + func screenTitle(forProviderName name: InfrastructureName) -> String { return screenTitle(ProfileKey(.provider, name)) } diff --git a/Passepartout/Core/Sources/Model/Credentials.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/Credentials.swift similarity index 98% rename from Passepartout/Core/Sources/Model/Credentials.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/Credentials.swift index 9f54b244..f56a6adf 100644 --- a/Passepartout/Core/Sources/Model/Credentials.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/Credentials.swift @@ -24,7 +24,7 @@ // import Foundation -import TunnelKit +import TunnelKitOpenVPN public typealias Credentials = OpenVPN.Credentials diff --git a/Passepartout/Core/Sources/Model/DataUnit.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/DataUnit.swift similarity index 100% rename from Passepartout/Core/Sources/Model/DataUnit.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/DataUnit.swift diff --git a/Passepartout/Core/Sources/Model/DebugLog.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/DebugLog.swift similarity index 98% rename from Passepartout/Core/Sources/Model/DebugLog.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/DebugLog.swift index 1af20b0e..ea1edddb 100644 --- a/Passepartout/Core/Sources/Model/DebugLog.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/DebugLog.swift @@ -29,6 +29,7 @@ import UIKit #else import Cocoa #endif +import PassepartoutConstants public struct DebugLog { private let raw: String diff --git a/Passepartout/Core/Sources/Model/EndpointDataSource.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/EndpointDataSource.swift similarity index 98% rename from Passepartout/Core/Sources/Model/EndpointDataSource.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/EndpointDataSource.swift index 8e8a12ae..d39a6223 100644 --- a/Passepartout/Core/Sources/Model/EndpointDataSource.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/EndpointDataSource.swift @@ -24,7 +24,7 @@ // import Foundation -import TunnelKit +import TunnelKitCore public protocol EndpointDataSource { var mainAddress: String? { get } diff --git a/Passepartout/Core/Sources/Model/GracefulVPN.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/GracefulVPN.swift similarity index 98% rename from Passepartout/Core/Sources/Model/GracefulVPN.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/GracefulVPN.swift index 3fd00d48..52c3a500 100644 --- a/Passepartout/Core/Sources/Model/GracefulVPN.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/GracefulVPN.swift @@ -25,7 +25,8 @@ import Foundation import SwiftyBeaver -import TunnelKit +import TunnelKitCore +import TunnelKitManager private let log = SwiftyBeaver.self diff --git a/PassepartoutCore/Sources/PassepartoutCore/Model/LocalProduct+Infrastructure.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/LocalProduct+Infrastructure.swift new file mode 100644 index 00000000..6199ee66 --- /dev/null +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/LocalProduct+Infrastructure.swift @@ -0,0 +1,27 @@ +// +// File.swift +// +// +// Created by Davide De Rosa on 04/11/21. +// + +import Foundation +import PassepartoutConstants + +public extension LocalProduct { +// public static var allProviders: [LocalProduct] { +// return InfrastructureFactory.shared.allMetadata.map { +// return LocalProduct(providerMetadata: $0) +// } +// } + + fileprivate init(providerMetadata: Infrastructure.Metadata) { + self.init(rawValue: "\(LocalProduct.providersBundle).\(providerMetadata.inApp ?? providerMetadata.name)")! + } +} + +public extension Infrastructure.Metadata { + var product: LocalProduct { + return LocalProduct(providerMetadata: self) + } +} diff --git a/Passepartout/Core/Sources/Model/OpenVPNOptions.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/OpenVPNOptions.swift similarity index 98% rename from Passepartout/Core/Sources/Model/OpenVPNOptions.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/OpenVPNOptions.swift index 7a361d40..cc76eb83 100644 --- a/Passepartout/Core/Sources/Model/OpenVPNOptions.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/OpenVPNOptions.swift @@ -24,7 +24,7 @@ // import Foundation -import TunnelKit +import TunnelKitOpenVPN extension OpenVPN.Cipher { public static let available: [OpenVPN.Cipher] = [ diff --git a/Passepartout/Core/Sources/Model/Preferences.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/Preferences.swift similarity index 100% rename from Passepartout/Core/Sources/Model/Preferences.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/Preferences.swift diff --git a/Passepartout/Core/Sources/Model/ProductManager.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/ProductManager.swift similarity index 99% rename from Passepartout/Core/Sources/Model/ProductManager.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/ProductManager.swift index 95848349..d941a645 100644 --- a/Passepartout/Core/Sources/Model/ProductManager.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/ProductManager.swift @@ -28,7 +28,9 @@ import StoreKit import Convenience import SwiftyBeaver import Kvitto -import TunnelKit +import TunnelKitCore +import TunnelKitManager +import PassepartoutConstants private let log = SwiftyBeaver.self diff --git a/Passepartout/Core/Sources/Model/ProfileNetworkSettings.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/ProfileNetworkSettings.swift similarity index 99% rename from Passepartout/Core/Sources/Model/ProfileNetworkSettings.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/ProfileNetworkSettings.swift index ebb0b8ed..76ec26cf 100644 --- a/Passepartout/Core/Sources/Model/ProfileNetworkSettings.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/ProfileNetworkSettings.swift @@ -24,7 +24,8 @@ // import Foundation -import TunnelKit +import TunnelKitCore +import TunnelKitOpenVPN public enum NetworkChoice: String, Codable { case client diff --git a/Passepartout/Core/Sources/Model/Profiles/HostConnectionProfile.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/HostConnectionProfile.swift similarity index 99% rename from Passepartout/Core/Sources/Model/Profiles/HostConnectionProfile.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/HostConnectionProfile.swift index 9a411f28..0c800963 100644 --- a/Passepartout/Core/Sources/Model/Profiles/HostConnectionProfile.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/HostConnectionProfile.swift @@ -24,7 +24,8 @@ // import Foundation -import TunnelKit +import TunnelKitCore +import TunnelKitOpenVPN public class HostConnectionProfile: ConnectionProfile, Codable, Equatable { diff --git a/Passepartout/Core/Sources/Model/Profiles/PlaceholderConnectionProfile.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/PlaceholderConnectionProfile.swift similarity index 98% rename from Passepartout/Core/Sources/Model/Profiles/PlaceholderConnectionProfile.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/PlaceholderConnectionProfile.swift index bc12ac0d..9783e110 100644 --- a/Passepartout/Core/Sources/Model/Profiles/PlaceholderConnectionProfile.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/PlaceholderConnectionProfile.swift @@ -24,7 +24,8 @@ // import Foundation -import TunnelKit +import TunnelKitCore +import TunnelKitOpenVPN public class PlaceholderConnectionProfile: ConnectionProfile { public let context: Context diff --git a/Passepartout/Core/Sources/Model/Profiles/PoolCategory.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/PoolCategory.swift similarity index 100% rename from Passepartout/Core/Sources/Model/Profiles/PoolCategory.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/PoolCategory.swift diff --git a/Passepartout/Core/Sources/Model/Profiles/ProfileKey.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/ProfileKey.swift similarity index 96% rename from Passepartout/Core/Sources/Model/Profiles/ProfileKey.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/ProfileKey.swift index dabfd56f..54d72622 100644 --- a/Passepartout/Core/Sources/Model/Profiles/ProfileKey.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/ProfileKey.swift @@ -24,6 +24,7 @@ // import Foundation +import PassepartoutConstants public struct ProfileKey: RawRepresentable, Hashable, Codable, CustomStringConvertible { private static let separator: Character = "." @@ -42,7 +43,7 @@ public struct ProfileKey: RawRepresentable, Hashable, Codable, CustomStringConve id = profile.id } - public init(_ name: Infrastructure.Name) { + public init(_ name: InfrastructureName) { context = .provider id = name } diff --git a/Passepartout/Core/Sources/Model/Profiles/ProviderConnectionProfile.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/ProviderConnectionProfile.swift similarity index 97% rename from Passepartout/Core/Sources/Model/Profiles/ProviderConnectionProfile.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/ProviderConnectionProfile.swift index 8b1ec1b9..b842dc02 100644 --- a/Passepartout/Core/Sources/Model/Profiles/ProviderConnectionProfile.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/Profiles/ProviderConnectionProfile.swift @@ -24,7 +24,9 @@ // import Foundation -import TunnelKit +import TunnelKitCore +import TunnelKitOpenVPN +import PassepartoutConstants public class ProviderConnectionProfile: ConnectionProfile, Codable, Equatable { @@ -51,7 +53,7 @@ public class ProviderConnectionProfile: ConnectionProfile, Codable, Equatable { case manualNetworkSettings } - public let name: Infrastructure.Name + public let name: InfrastructureName public var infrastructure: Infrastructure { guard let infra = InfrastructureFactory.shared.infrastructure(forName: name) else { @@ -88,7 +90,7 @@ public class ProviderConnectionProfile: ConnectionProfile, Codable, Equatable { public var favoriteGroupIds: [String]? - public init(name: Infrastructure.Name) { + public init(name: InfrastructureName) { self.name = name poolId = "" presetId = "" diff --git a/Passepartout/Core/Sources/Model/SessionProxy+Communication.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/SessionProxy+Communication.swift similarity index 98% rename from Passepartout/Core/Sources/Model/SessionProxy+Communication.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/SessionProxy+Communication.swift index df75575d..03ff9429 100644 --- a/Passepartout/Core/Sources/Model/SessionProxy+Communication.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/SessionProxy+Communication.swift @@ -24,7 +24,7 @@ // import Foundation -import TunnelKit +import TunnelKitOpenVPN public extension OpenVPN.ConfigurationBuilder { // mutating func copyCommunication(from other: OpenVPN.ConfigurationBuilder) { diff --git a/Passepartout/Core/Sources/Model/TransientStore.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/TransientStore.swift similarity index 97% rename from Passepartout/Core/Sources/Model/TransientStore.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/TransientStore.swift index 6bfbcb7c..b9832a8b 100644 --- a/Passepartout/Core/Sources/Model/TransientStore.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Model/TransientStore.swift @@ -24,8 +24,10 @@ // import Foundation -import TunnelKit import SwiftyBeaver +import TunnelKitCore +import TunnelKitOpenVPN +import PassepartoutConstants private let log = SwiftyBeaver.self @@ -230,3 +232,9 @@ public class TransientStore { } } } + +extension TransientStore { + public var debugSnapshot: () -> String { + { self.service.vpnLog } + } +} diff --git a/Passepartout/Core/Sources/Model/TrustPolicy.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/TrustPolicy.swift similarity index 100% rename from Passepartout/Core/Sources/Model/TrustPolicy.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/TrustPolicy.swift diff --git a/Passepartout/Core/Sources/Model/TrustedNetworks.swift b/PassepartoutCore/Sources/PassepartoutCore/Model/TrustedNetworks.swift similarity index 100% rename from Passepartout/Core/Sources/Model/TrustedNetworks.swift rename to PassepartoutCore/Sources/PassepartoutCore/Model/TrustedNetworks.swift diff --git a/Passepartout/Core/Resources/de.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/de.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/de.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/de.lproj/Core.strings diff --git a/Passepartout/Core/Resources/el.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/el.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/el.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/el.lproj/Core.strings diff --git a/Passepartout/Core/Resources/en.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/en.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/en.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/en.lproj/Core.strings diff --git a/Passepartout/Core/Resources/es.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/es.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/es.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/es.lproj/Core.strings diff --git a/Passepartout/Core/Resources/fr.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/fr.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/fr.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/fr.lproj/Core.strings diff --git a/Passepartout/Core/Resources/it.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/it.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/it.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/it.lproj/Core.strings diff --git a/Passepartout/Core/Resources/nl.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/nl.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/nl.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/nl.lproj/Core.strings diff --git a/Passepartout/Core/Resources/pl.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/pl.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/pl.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/pl.lproj/Core.strings diff --git a/Passepartout/Core/Resources/pt.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/pt.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/pt.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/pt.lproj/Core.strings diff --git a/Passepartout/Core/Resources/ru.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/ru.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/ru.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/ru.lproj/Core.strings diff --git a/Passepartout/Core/Resources/sv.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/sv.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/sv.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/sv.lproj/Core.strings diff --git a/Passepartout/Core/Resources/zh-Hans.lproj/Core.strings b/PassepartoutCore/Sources/PassepartoutCore/Resources/zh-Hans.lproj/Core.strings similarity index 100% rename from Passepartout/Core/Resources/zh-Hans.lproj/Core.strings rename to PassepartoutCore/Sources/PassepartoutCore/Resources/zh-Hans.lproj/Core.strings diff --git a/Passepartout/Core/Sources/Services/Infrastructure+CredentialsPurpose.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+CredentialsPurpose.swift similarity index 95% rename from Passepartout/Core/Sources/Services/Infrastructure+CredentialsPurpose.swift rename to PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+CredentialsPurpose.swift index 9489d208..a0beda71 100644 --- a/Passepartout/Core/Sources/Services/Infrastructure+CredentialsPurpose.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+CredentialsPurpose.swift @@ -24,6 +24,7 @@ // import Foundation +import PassepartoutConstants extension Infrastructure { public enum CredentialsPurpose { @@ -33,7 +34,7 @@ extension Infrastructure { } } -extension Infrastructure.Name { +extension InfrastructureName { public var credentialsPurpose: Infrastructure.CredentialsPurpose { switch self { case .protonvpn, .surfshark, .torguard, .windscribe: diff --git a/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+External.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+External.swift new file mode 100644 index 00000000..665f0b26 --- /dev/null +++ b/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+External.swift @@ -0,0 +1,59 @@ +// +// Infrastructure+External.swift +// Passepartout +// +// Created by Davide De Rosa on 11/4/21. +// Copyright (c) 2021 Davide De Rosa. All rights reserved. +// +// https://github.com/passepartoutvpn +// +// This file is part of Passepartout. +// +// Passepartout is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Passepartout is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Passepartout. If not, see . +// + +import Foundation +import PassepartoutConstants +import DTFoundation + +extension InfrastructureName { + public var externalURL: URL { + return GroupConstants.App.externalURL.appendingPathComponent(self) + } + + public func importExternalResources(from url: URL, completionHandler: @escaping () -> Void) { + var task: () -> Void + switch self { + case .nordvpn: + task = { + let archive = DTZipArchive(atPath: url.path) + archive?.uncompress(toPath: self.externalURL.path, completion: nil) + } + + default: + task = {} + } + execute(task: task, completionHandler: completionHandler) + } + + private func execute(task: @escaping () -> Void, completionHandler: @escaping () -> Void) { + let queue: DispatchQueue = .global(qos: .background) + queue.async { + task() + DispatchQueue.main.async { + completionHandler() + } + } + } +} diff --git a/Passepartout/Core/Sources/Services/Infrastructure+Metadata.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+Metadata.swift similarity index 95% rename from Passepartout/Core/Sources/Services/Infrastructure+Metadata.swift rename to PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+Metadata.swift index b527d68d..ac0e9c68 100644 --- a/Passepartout/Core/Sources/Services/Infrastructure+Metadata.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure+Metadata.swift @@ -25,12 +25,13 @@ import Foundation import SwiftyBeaver +import PassepartoutConstants private let log = SwiftyBeaver.self extension Infrastructure { public struct Metadata: Codable, Hashable, Comparable, CustomStringConvertible { - public let name: Name + public let name: InfrastructureName public let inApp: String? diff --git a/Passepartout/Core/Sources/Services/Infrastructure.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure.swift similarity index 73% rename from Passepartout/Core/Sources/Services/Infrastructure.swift rename to PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure.swift index dd3d394f..56bbfd44 100644 --- a/Passepartout/Core/Sources/Services/Infrastructure.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Services/Infrastructure.swift @@ -24,7 +24,7 @@ // import Foundation -import SSZipArchive +import PassepartoutConstants public class Infrastructure: Codable { public struct Defaults: Codable { @@ -47,7 +47,7 @@ public class Infrastructure: Codable { return num ?? 0 } - public let name: Name + public let name: InfrastructureName public let categories: [PoolCategory] @@ -92,33 +92,3 @@ public class Infrastructure: Codable { return presets.first { $0.id == identifier } } } - -extension Infrastructure.Name { - public var externalURL: URL { - return GroupConstants.App.externalURL.appendingPathComponent(self) - } - - public func importExternalResources(from url: URL, completionHandler: @escaping () -> Void) { - var task: () -> Void - switch self { - case .nordvpn: - task = { - SSZipArchive.unzipFile(atPath: url.path, toDestination: self.externalURL.path) - } - - default: - task = {} - } - execute(task: task, completionHandler: completionHandler) - } - - private func execute(task: @escaping () -> Void, completionHandler: @escaping () -> Void) { - let queue: DispatchQueue = .global(qos: .background) - queue.async { - task() - DispatchQueue.main.async { - completionHandler() - } - } - } -} diff --git a/Passepartout/Core/Sources/Services/InfrastructureFactory.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/InfrastructureFactory.swift similarity index 92% rename from Passepartout/Core/Sources/Services/InfrastructureFactory.swift rename to PassepartoutCore/Sources/PassepartoutCore/Services/InfrastructureFactory.swift index 15a1b1a5..0115e12c 100644 --- a/Passepartout/Core/Sources/Services/InfrastructureFactory.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Services/InfrastructureFactory.swift @@ -25,6 +25,7 @@ import Foundation import SwiftyBeaver +import PassepartoutConstants private let log = SwiftyBeaver.self @@ -37,9 +38,9 @@ public class InfrastructureFactory { fileprivate var cachedMetadata: [Infrastructure.Metadata] - private var cachedInfrastructures: [Infrastructure.Name: Infrastructure] + private var cachedInfrastructures: [InfrastructureName: Infrastructure] - private var lastUpdate: [Infrastructure.Name: Date] + private var lastUpdate: [InfrastructureName: Date] private init() { cachePath = GroupConstants.App.cachesURL @@ -161,15 +162,15 @@ public class InfrastructureFactory { return cachedMetadata } - public func metadata(forName name: Infrastructure.Name) -> Infrastructure.Metadata? { + public func metadata(forName name: InfrastructureName) -> Infrastructure.Metadata? { return cachedMetadata.first(where: { $0.name == name}) } - public func infrastructure(forName name: Infrastructure.Name) -> Infrastructure? { + public func infrastructure(forName name: InfrastructureName) -> Infrastructure? { return cachedInfrastructures[name] } - private func bundledInfrastructure(withName name: Infrastructure.Name) -> Infrastructure? { + private func bundledInfrastructure(withName name: InfrastructureName) -> Infrastructure? { guard let url = name.bundleURL else { return nil } @@ -191,7 +192,7 @@ public class InfrastructureFactory { } } - public func update(_ name: Infrastructure.Name, notBeforeInterval minInterval: TimeInterval?, completionHandler: @escaping ((Infrastructure, Date)?, Error?) -> Void) -> Bool { + public func update(_ name: InfrastructureName, notBeforeInterval minInterval: TimeInterval?, completionHandler: @escaping ((Infrastructure, Date)?, Error?) -> Void) -> Bool { let ifModifiedSince = modificationDate(forName: name) if let lastInfrastructureUpdate = lastUpdate[name] { @@ -280,7 +281,7 @@ public class InfrastructureFactory { } } - private func save(_ name: Infrastructure.Name, with infrastructure: Infrastructure, lastModified: Date) { + private func save(_ name: InfrastructureName, with infrastructure: Infrastructure, lastModified: Date) { cachedInfrastructures[name] = infrastructure let fm = FileManager.default @@ -302,17 +303,17 @@ public class InfrastructureFactory { return WebServices.Endpoint.providersIndex.apiURL(relativeTo: cachePath) } - private func cacheURL(forName name: Infrastructure.Name) -> URL { + private func cacheURL(forName name: InfrastructureName) -> URL { return WebServices.Endpoint.providerNetwork(name).apiURL(relativeTo: cachePath) } private var bundledMetadataURL: URL? { - return WebServices.Endpoint.providersIndex.bundleURL(in: Bundle(for: InfrastructureFactory.self)) + return WebServices.Endpoint.providersIndex.bundleURL(in: Bundle.module) } // MARK: Modification dates - public func modificationDate(forName name: Infrastructure.Name) -> Date? { + public func modificationDate(forName name: InfrastructureName) -> Date? { let optBundleDate = bundleModificationDate(forName: name) guard let cacheDate = cacheModificationDate(forName: name) else { return optBundleDate @@ -323,12 +324,12 @@ public class InfrastructureFactory { return max(cacheDate, bundleDate) } - private func cacheModificationDate(forName name: Infrastructure.Name) -> Date? { + private func cacheModificationDate(forName name: InfrastructureName) -> Date? { let url = cacheURL(forName: name) return FileManager.default.modificationDate(of: url.path) } - private func bundleModificationDate(forName name: Infrastructure.Name) -> Date? { + private func bundleModificationDate(forName name: InfrastructureName) -> Date? { guard let url = name.bundleURL else { return nil } @@ -342,9 +343,9 @@ extension Infrastructure { } } -private extension Infrastructure.Name { +private extension InfrastructureName { var bundleURL: URL? { - return WebServices.Endpoint.providerNetwork(self).bundleURL(in: Bundle(for: InfrastructureFactory.self)) + return WebServices.Endpoint.providerNetwork(self).bundleURL(in: Bundle.module) } } diff --git a/Passepartout/Core/Sources/Services/InfrastructurePreset.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/InfrastructurePreset.swift similarity index 98% rename from Passepartout/Core/Sources/Services/InfrastructurePreset.swift rename to PassepartoutCore/Sources/PassepartoutCore/Services/InfrastructurePreset.swift index ae2abf0f..6f90f0ec 100644 --- a/Passepartout/Core/Sources/Services/InfrastructurePreset.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Services/InfrastructurePreset.swift @@ -24,7 +24,9 @@ // import Foundation -import TunnelKit +import TunnelKitCore +import TunnelKitOpenVPN +import PassepartoutConstants // supports a subset of OpenVPNTunnelProvider.Configuration // ignores new JSON keys @@ -100,7 +102,7 @@ public class InfrastructurePreset: Codable { return configuration.sessionConfiguration.endpointProtocols?.firstIndex(of: proto) != nil } - public func externalConfiguration(forKey key: ExternalKey, infrastructureName: Infrastructure.Name, pool: Pool) throws -> Any? { + public func externalConfiguration(forKey key: ExternalKey, infrastructureName: InfrastructureName, pool: Pool) throws -> Any? { guard let pattern = external?[key] else { return nil } @@ -126,7 +128,7 @@ public class InfrastructurePreset: Codable { return nil } - public func injectExternalConfiguration(_ configuration: inout OpenVPNTunnelProvider.ConfigurationBuilder, with infrastructureName: Infrastructure.Name, pool: Pool) throws { + public func injectExternalConfiguration(_ configuration: inout OpenVPNTunnelProvider.ConfigurationBuilder, with infrastructureName: InfrastructureName, pool: Pool) throws { guard let external = external, !external.isEmpty else { return } diff --git a/Passepartout/Core/Sources/Services/Pool.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/Pool.swift similarity index 99% rename from Passepartout/Core/Sources/Services/Pool.swift rename to PassepartoutCore/Sources/PassepartoutCore/Services/Pool.swift index 9307431b..bf418e58 100644 --- a/Passepartout/Core/Sources/Services/Pool.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Services/Pool.swift @@ -24,7 +24,7 @@ // import Foundation -import TunnelKit +import TunnelKitCore public class Pool: Codable, Hashable { public enum CodingKeys: String, CodingKey { diff --git a/Passepartout/Core/Sources/Services/PoolGroup.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/PoolGroup.swift similarity index 100% rename from Passepartout/Core/Sources/Services/PoolGroup.swift rename to PassepartoutCore/Sources/PassepartoutCore/Services/PoolGroup.swift diff --git a/Passepartout/Core/Sources/Services/WebServices.swift b/PassepartoutCore/Sources/PassepartoutCore/Services/WebServices.swift similarity index 88% rename from Passepartout/Core/Sources/Services/WebServices.swift rename to PassepartoutCore/Sources/PassepartoutCore/Services/WebServices.swift index 8f7b2851..0a2e6069 100644 --- a/Passepartout/Core/Sources/Services/WebServices.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Services/WebServices.swift @@ -25,10 +25,9 @@ import Foundation import Convenience +import PassepartoutConstants public class WebServices { - public static let version = "v4" - public enum Group: String { case providers } @@ -36,7 +35,7 @@ public class WebServices { public enum Endpoint: Convenience.Endpoint { case providersIndex - case providerNetwork(Infrastructure.Name) + case providerNetwork(InfrastructureName) var pathName: String { switch self { @@ -67,7 +66,7 @@ public class WebServices { // MARK: Endpoint public var url: URL { - return AppConstants.Services.apiURL(version: WebServices.version, path: path) + return AppConstants.Services.apiURL(version: AppConstants.Services.version, path: path) } } @@ -87,7 +86,7 @@ public class WebServices { } } - public func providerNetwork(with name: Infrastructure.Name, ifModifiedSince lastModified: Date?, completionHandler: @escaping (Response?, Error?) -> Void) { + public func providerNetwork(with name: InfrastructureName, ifModifiedSince lastModified: Date?, completionHandler: @escaping (Response?, Error?) -> Void) { var request = ws.get(WebServices.Endpoint.providerNetwork(name)) if let lastModified = lastModified { request.addValue(ResponseParser.lastModifiedString(date: lastModified), forHTTPHeaderField: "If-Modified-Since") diff --git a/Passepartout/Core/Sources/SwiftGen+Strings.swift b/PassepartoutCore/Sources/PassepartoutCore/SwiftGen+Strings.swift similarity index 100% rename from Passepartout/Core/Sources/SwiftGen+Strings.swift rename to PassepartoutCore/Sources/PassepartoutCore/SwiftGen+Strings.swift diff --git a/Passepartout/Core/Sources/UI/TrustedNetworksUI.swift b/PassepartoutCore/Sources/PassepartoutCore/UI/TrustedNetworksUI.swift similarity index 100% rename from Passepartout/Core/Sources/UI/TrustedNetworksUI.swift rename to PassepartoutCore/Sources/PassepartoutCore/UI/TrustedNetworksUI.swift diff --git a/Passepartout/Core/Sources/Utils.swift b/PassepartoutCore/Sources/PassepartoutCore/Utils.swift similarity index 98% rename from Passepartout/Core/Sources/Utils.swift rename to PassepartoutCore/Sources/PassepartoutCore/Utils.swift index 727c0bef..78b14178 100644 --- a/Passepartout/Core/Sources/Utils.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/Utils.swift @@ -31,6 +31,7 @@ import CoreWLAN #endif import StoreKit import SwiftyBeaver +import PassepartoutConstants private let log = SwiftyBeaver.self @@ -203,13 +204,13 @@ public extension Infrastructure.Metadata { var guidanceString: String? { let prefix = "account.sections.guidance.footer.infrastructure" let key = "\(prefix).\(name)" - var format = NSLocalizedString(key, tableName: "Core", bundle: Bundle(for: Infrastructure.self), comment: "") + var format = NSLocalizedString(key, tableName: "Core", bundle: Bundle.module, comment: "") // i.e. key not found if format == key { let purpose = name.credentialsPurpose let defaultKey = "\(prefix).default.\(purpose)" - format = NSLocalizedString(defaultKey, tableName: "Core", bundle: Bundle(for: Infrastructure.self), comment: "") + format = NSLocalizedString(defaultKey, tableName: "Core", bundle: Bundle.module, comment: "") } return String(format: format, locale: .current, description) diff --git a/Passepartout/Core/Sources/VPN+Shared.swift b/PassepartoutCore/Sources/PassepartoutCore/VPN+Shared.swift similarity index 93% rename from Passepartout/Core/Sources/VPN+Shared.swift rename to PassepartoutCore/Sources/PassepartoutCore/VPN+Shared.swift index 82679d12..aa6a1cde 100644 --- a/Passepartout/Core/Sources/VPN+Shared.swift +++ b/PassepartoutCore/Sources/PassepartoutCore/VPN+Shared.swift @@ -24,7 +24,9 @@ // import Foundation -import TunnelKit +import TunnelKitManager +import TunnelKitOpenVPN +import PassepartoutConstants public extension VPN { #if os(macOS) || !targetEnvironment(simulator) diff --git a/PassepartoutCore/Sources/PassepartoutOpenVPNTunnel/Dummy.swift b/PassepartoutCore/Sources/PassepartoutOpenVPNTunnel/Dummy.swift new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/PassepartoutCore/Sources/PassepartoutOpenVPNTunnel/Dummy.swift @@ -0,0 +1 @@ + diff --git a/Passepartout/Tests/ConnectionServiceTests.swift b/PassepartoutCore/Tests/PassepartoutCoreTests/ConnectionServiceTests.swift similarity index 94% rename from Passepartout/Tests/ConnectionServiceTests.swift rename to PassepartoutCore/Tests/PassepartoutCoreTests/ConnectionServiceTests.swift index 2600c0be..914c9c73 100644 --- a/Passepartout/Tests/ConnectionServiceTests.swift +++ b/PassepartoutCore/Tests/PassepartoutCoreTests/ConnectionServiceTests.swift @@ -24,11 +24,11 @@ // import XCTest -import TunnelKit +import TunnelKitCore @testable import PassepartoutCore class ConnectionServiceTests: XCTestCase { - let url = Bundle(for: ConnectionServiceTests.self).url(forResource: "ConnectionService", withExtension: "json")! + let url = Bundle.module.url(forResource: "ConnectionService", withExtension: "json")! override func setUp() { // Put setup code here. This method is called before the invocation of each test method in the class. diff --git a/Passepartout/Tests/InfrastructureTests.swift b/PassepartoutCore/Tests/PassepartoutCoreTests/InfrastructureTests.swift similarity index 84% rename from Passepartout/Tests/InfrastructureTests.swift rename to PassepartoutCore/Tests/PassepartoutCoreTests/InfrastructureTests.swift index 8e53a43d..3881a879 100644 --- a/Passepartout/Tests/InfrastructureTests.swift +++ b/PassepartoutCore/Tests/PassepartoutCoreTests/InfrastructureTests.swift @@ -24,8 +24,9 @@ // import XCTest -import TunnelKit +import TunnelKitCore @testable import PassepartoutCore +import DTFoundation class InfrastructureTests: XCTestCase { private var infra: Infrastructure! @@ -110,4 +111,20 @@ class InfrastructureTests: XCTestCase { print(ifactory.allMetadata) } } + + func testExtraction() { + let archive = DTZipArchive(atPath: Bundle.module.path(forResource: "example", ofType: "zip")!) + let exp = expectation(description: "Extraction") + let toPath = FileManager.default.temporaryDirectory.path + archive?.uncompress(toPath: toPath) { error in + if let error = error { + print("Extraction failed:", error) + } else { + print("Extraction succeeded!") + } + exp.fulfill() + XCTAssertNil(error) + } + waitForExpectations(timeout: 10.0, handler: nil) + } } diff --git a/Passepartout/Tests/ConnectionService.json b/PassepartoutCore/Tests/PassepartoutCoreTests/Resources/ConnectionService.json similarity index 100% rename from Passepartout/Tests/ConnectionService.json rename to PassepartoutCore/Tests/PassepartoutCoreTests/Resources/ConnectionService.json diff --git a/PassepartoutCore/Tests/PassepartoutCoreTests/Resources/example.zip b/PassepartoutCore/Tests/PassepartoutCoreTests/Resources/example.zip new file mode 100644 index 0000000000000000000000000000000000000000..1959b19fc217af2506b1a1aa721f8ad977c1dcd5 GIT binary patch literal 794 zcmWIWW@Zs#U|`^2*z4x%e^2`N&iyv8T!_ z6H6<&85mi#RJd50KVgBZ zX4~YA?z0|z|CprKeOPveK+S8OPma%Tf4h9ia?>-}^V{&$yNfAQZ?Aow z-y^2m^Op;%zU_Hwvo0s>Px5UKQK|dC6F-P|UHi4Mc#6iK6rbeNZ~k=8-5hh?`d3HT zda)M_%llW~i&|)Yn8CU_TH@8Cs7PFxBtG2Su3D|Qbdd0K@r*;2KN}bm5BUbyONr0wWx7Bo}>`gwO zOVv)RSGdGPKCF)r3sPRWu7M>#B*?@ijAQD$4=3eQ^}d=Vdav|;6cff}aU~{m=DOl_ z3*uJq%3?W{?h$>eXk~z_$f7I!E4oYt&i`mgJNkLf5{dZ5)vo^(*1lRh$zPjywbpqS zF?m+2$Nf8ZcqOhddA`X*;W2Byknt)fv7;GpUh$b}JE~rK{KI?e8n3R2VN1h)_!um` z^!`F`jtf)F$u_Y~A)yluqSTdE&15NDx?|IYRSz$_7PQ=Z?Y2kQNv)zUhPP4k(d`e+ zzqtdv8JXmmaV1;{V1i~~0H#oeC5<2!JQ=e>k}+Bm4)A7W11Vz!LSG=g9hd_c7yz>> BRa*c6 literal 0 HcmV?d00001 diff --git a/Passepartout/Tests/UtilsTests.swift b/PassepartoutCore/Tests/PassepartoutCoreTests/UtilsTests.swift similarity index 100% rename from Passepartout/Tests/UtilsTests.swift rename to PassepartoutCore/Tests/PassepartoutCoreTests/UtilsTests.swift diff --git a/PassepartoutCore/swiftgen.yml b/PassepartoutCore/swiftgen.yml new file mode 100644 index 00000000..b6c950c3 --- /dev/null +++ b/PassepartoutCore/swiftgen.yml @@ -0,0 +1,8 @@ +strings: + inputs: + - Sources/PassepartoutCore/Resources/en.lproj/Core.strings + outputs: + - templateName: structured-swift4 + output: Sources/PassepartoutCore/SwiftGen+Strings.swift + params: + publicAccess: true diff --git a/Podfile b/Podfile deleted file mode 100644 index 8451e5d3..00000000 --- a/Podfile +++ /dev/null @@ -1,57 +0,0 @@ -source 'https://cdn.cocoapods.org/' -use_frameworks! - -load 'Podfile.include' - -$tunnelkit_name = 'TunnelKit' -$tunnelkit_specs = ['Protocols/OpenVPN', 'Extra/LZO'] - -def shared_pods - pod_version $tunnelkit_name, $tunnelkit_specs, '~> 3.5.0' - #pod_git $tunnelkit_name, $tunnelkit_specs, '16c0041' - #pod_path $tunnelkit_name, $tunnelkit_specs, '..' - pod 'SSZipArchive' - pod 'Kvitto' -end -def shared_pods_ios - shared_pods - for spec in ['About', 'Alerts', 'Dialogs', 'InApp', 'Misc', 'Options', 'Persistence', 'Reviewer', 'Tables', 'WebServices'] do - pod "Convenience/#{spec}", :git => 'https://github.com/keeshux/convenience', :commit => '5ed1fe0' - end -end -def shared_pods_macos - shared_pods - for spec in ['InApp', 'Misc', 'Persistence', 'Reviewer', 'WebServices'] do - pod "Convenience/#{spec}", :git => 'https://github.com/keeshux/convenience', :commit => '5ed1fe0' - end -end - -abstract_target 'ios' do - platform :ios, '12.0' - target 'PassepartoutCore-iOS' do - shared_pods_ios - end - target 'PassepartoutCoreTests-iOS' do - end - target 'Passepartout-iOS' do - pod 'MBProgressHUD' - end - target 'PassepartoutTunnel-iOS' do - shared_pods_ios - end -end - -abstract_target 'macos' do - platform :osx, '10.15' - target 'PassepartoutCore-macOS' do - shared_pods_macos - end - target 'PassepartoutCoreTests-macOS' do - end - target 'Passepartout-macOS' do - #pod 'AppCenter' - end - target 'PassepartoutTunnel-macOS' do - shared_pods_macos - end -end diff --git a/Podfile.include b/Podfile.include deleted file mode 100644 index 34817cbc..00000000 --- a/Podfile.include +++ /dev/null @@ -1,19 +0,0 @@ -$git_root = "https://github.com/passepartoutvpn" - -def pod_version(name, specs, version) - specs.each { |s| - pod "#{name}/#{s}", version - } -end - -def pod_git(name, specs, sha) - specs.each { |s| - pod "#{name}/#{s}", :git => "#{$git_root}/#{name.downcase}", :commit => sha - } -end - -def pod_path(name, specs, root) - specs.each { |s| - pod "#{name}/#{s}", :path => "#{root}/#{name.downcase}" - } -end diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index b8351806..00000000 --- a/Podfile.lock +++ /dev/null @@ -1,90 +0,0 @@ -PODS: - - Convenience/About (0.0.2): - - Convenience/Tables - - Convenience/Alerts (0.0.2) - - Convenience/Dialogs (0.0.2): - - MBProgressHUD - - Convenience/InApp (0.0.2) - - Convenience/Misc (0.0.2) - - Convenience/Options (0.0.2) - - Convenience/Persistence (0.0.2) - - Convenience/Reviewer (0.0.2) - - Convenience/Tables (0.0.2) - - Convenience/WebServices (0.0.2): - - SwiftyBeaver - - DTFoundation/Core (1.7.18) - - DTFoundation/DTASN1 (1.7.18): - - DTFoundation/Core - - Kvitto (1.0.6): - - DTFoundation/DTASN1 (~> 1.7.17) - - Kvitto/Core (= 1.0.6) - - Kvitto/Core (1.0.6): - - DTFoundation/DTASN1 (~> 1.7.17) - - MBProgressHUD (1.2.0) - - OpenSSL-Apple (1.1.1l.11) - - SSZipArchive (2.4.2) - - SwiftyBeaver (1.9.5) - - TunnelKit/AppExtension (3.5.0): - - SwiftyBeaver - - TunnelKit/Core - - TunnelKit/Core (3.5.0): - - SwiftyBeaver - - TunnelKit/Extra/LZO (3.5.0) - - TunnelKit/Manager (3.5.0): - - SwiftyBeaver - - TunnelKit/Core - - TunnelKit/Protocols/OpenVPN (3.5.0): - - OpenSSL-Apple (~> 1.1.1l.11) - - TunnelKit/AppExtension - - TunnelKit/Manager - -DEPENDENCIES: - - Convenience/About (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/Alerts (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/Dialogs (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/InApp (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/Misc (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/Options (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/Persistence (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/Reviewer (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/Tables (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Convenience/WebServices (from `https://github.com/keeshux/convenience`, commit `5ed1fe0`) - - Kvitto - - MBProgressHUD - - SSZipArchive - - TunnelKit/Extra/LZO (~> 3.5.0) - - TunnelKit/Protocols/OpenVPN (~> 3.5.0) - -SPEC REPOS: - trunk: - - DTFoundation - - Kvitto - - MBProgressHUD - - OpenSSL-Apple - - SSZipArchive - - SwiftyBeaver - - TunnelKit - -EXTERNAL SOURCES: - Convenience: - :commit: 5ed1fe0 - :git: https://github.com/keeshux/convenience - -CHECKOUT OPTIONS: - Convenience: - :commit: 5ed1fe0 - :git: https://github.com/keeshux/convenience - -SPEC CHECKSUMS: - Convenience: c805c2aff569ff735c5d69c2c2b7a9bd110fa507 - DTFoundation: a53f8cda2489208cbc71c648be177f902ee17536 - Kvitto: f02b3f84d84a383504fc57cfe824934c7ed782c0 - MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 - OpenSSL-Apple: fb93d9a7ce4529054764ce19bb80947a38aee09b - SSZipArchive: e7b4f3d9e780c2acc1764cd88fbf2de28f26e5b2 - SwiftyBeaver: 84069991dd5dca07d7069100985badaca7f0ce82 - TunnelKit: da385bd81f797728f86fcf0f2de2e4c4af415c40 - -PODFILE CHECKSUM: ad89fc96adcd2f6e4966c667120585986506e648 - -COCOAPODS: 1.11.2 diff --git a/Submodules/API b/Submodules/API deleted file mode 160000 index 4cd40dcf..00000000 --- a/Submodules/API +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4cd40dcfcd466107a90f6930cdb56775aa328057 diff --git a/Submodules/fastlane-ci-templates b/Submodules/fastlane-ci-templates index 55d1df17..432acbf6 160000 --- a/Submodules/fastlane-ci-templates +++ b/Submodules/fastlane-ci-templates @@ -1 +1 @@ -Subproject commit 55d1df17b95280ce729f5e229199739a32a4014f +Subproject commit 432acbf64f602b3cfc47892a865202cbd4297f81 diff --git a/fastlane/Gymfile b/fastlane/Gymfile index eb5964be..b1f01634 100644 --- a/fastlane/Gymfile +++ b/fastlane/Gymfile @@ -14,5 +14,4 @@ output_directory "dist/#{ENV["PLATFORM"]}" clean true silent false -include_bitcode false skip_profile_detection true