Reorganize project with SwiftPM
- Drop CocoaPods completely - Make PassepartoutCore a Swift package - Enable Bitcode to fix OpenSSL linkage (iOS) - Update CI scripts without CocoaPods
This commit is contained in:
parent
996b2fbcf7
commit
ae1aa1a268
|
@ -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`
|
||||
|
|
|
@ -22,3 +22,5 @@ default.profraw
|
|||
asc-key.json
|
||||
.bundle
|
||||
vendor/
|
||||
.build
|
||||
.swiftpm
|
||||
|
|
|
@ -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
|
||||
|
|
16
.travis.yml
16
.travis.yml
|
@ -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
|
34
Gemfile.lock
34
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
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -51,16 +51,6 @@
|
|||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E9AA98C259F779F003FAFF1"
|
||||
BuildableName = "PassepartoutCoreTests-iOS.xctest"
|
||||
BlueprintName = "PassepartoutCoreTests-iOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
|
|
|
@ -20,6 +20,20 @@
|
|||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E5203B4259F5F3F00CBAB56"
|
||||
BuildableName = "PassepartoutTunnel.appex"
|
||||
BlueprintName = "PassepartoutTunnel-macOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
|
@ -28,16 +42,6 @@
|
|||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E9AA9B9259F7821003FAFF1"
|
||||
BuildableName = "PassepartoutCoreTests-macOS.xctest"
|
||||
BlueprintName = "PassepartoutCoreTests-macOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
|
|
|
@ -1,95 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1240"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E31529A223F9EF400F61841"
|
||||
BuildableName = "PassepartoutCore.framework"
|
||||
BlueprintName = "PassepartoutCore-iOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E31529A223F9EF400F61841"
|
||||
BuildableName = "PassepartoutCore.framework"
|
||||
BlueprintName = "PassepartoutCore-iOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E9AA98C259F779F003FAFF1"
|
||||
BuildableName = "PassepartoutCoreTests-iOS.xctest"
|
||||
BlueprintName = "PassepartoutCoreTests-iOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E31529A223F9EF400F61841"
|
||||
BuildableName = "PassepartoutCore.framework"
|
||||
BlueprintName = "PassepartoutCore-iOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E31529A223F9EF400F61841"
|
||||
BuildableName = "PassepartoutCore.framework"
|
||||
BlueprintName = "PassepartoutCore-iOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
|
@ -1,91 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1240"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E5203E9259F60D600CBAB56"
|
||||
BuildableName = "PassepartoutCore.framework"
|
||||
BlueprintName = "PassepartoutCore-macOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "NO"
|
||||
buildForProfiling = "NO"
|
||||
buildForArchiving = "NO"
|
||||
buildForAnalyzing = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E9AA9B9259F7821003FAFF1"
|
||||
BuildableName = "PassepartoutCoreTests-macOS.xctest"
|
||||
BlueprintName = "PassepartoutCoreTests-macOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E9AA9B9259F7821003FAFF1"
|
||||
BuildableName = "PassepartoutCoreTests-macOS.xctest"
|
||||
BlueprintName = "PassepartoutCoreTests-macOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E5203E9259F60D600CBAB56"
|
||||
BuildableName = "PassepartoutCore.framework"
|
||||
BlueprintName = "PassepartoutCore-macOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
|
@ -1,52 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1240"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E9AA98C259F779F003FAFF1"
|
||||
BuildableName = "PassepartoutCoreTests-iOS.xctest"
|
||||
BlueprintName = "PassepartoutCoreTests-iOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
|
@ -1,52 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1240"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0E9AA9B9259F7821003FAFF1"
|
||||
BuildableName = "PassepartoutCoreTests-macOS.xctest"
|
||||
BlueprintName = "PassepartoutCoreTests-macOS"
|
||||
ReferencedContainer = "container:Passepartout.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Passepartout.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
|
@ -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 }
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -23,10 +23,12 @@
|
|||
// along with Passepartout. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import UIKit
|
||||
import SwiftyBeaver
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKitCore
|
||||
import TunnelKitOpenVPN
|
||||
|
||||
private let log = SwiftyBeaver.self
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
extension UIView {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import Convenience
|
||||
import ConvenienceUI
|
||||
|
||||
extension StrongTableModel {
|
||||
func headerHeight(for section: Int) -> CGFloat {
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
import UIKit
|
||||
import MessageUI
|
||||
import StoreKit
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
struct Theme {
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
import Foundation
|
||||
import Intents
|
||||
import SwiftyBeaver
|
||||
import TunnelKit
|
||||
import TunnelKitManager
|
||||
import PassepartoutCore
|
||||
|
||||
private let log = SwiftyBeaver.self
|
||||
|
|
@ -24,8 +24,10 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import Convenience
|
||||
import ConvenienceUI
|
||||
|
||||
class AboutViewController: UITableViewController, StrongTableHost {
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
//
|
||||
|
||||
import Foundation
|
||||
import TunnelKit
|
||||
import TunnelKitOpenVPN
|
||||
|
||||
protocol ConfigurationModificationDelegate: AnyObject {
|
||||
func configuration(didUpdate newConfiguration: OpenVPN.Configuration)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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?)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import TunnelKit
|
||||
import TunnelKitCore
|
||||
import SwiftyBeaver
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
private let log = SwiftyBeaver.self
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -24,9 +24,10 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import PassepartoutCore
|
||||
import Convenience
|
||||
import SwiftyBeaver
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import ConvenienceUI
|
||||
|
||||
private let log = SwiftyBeaver.self
|
||||
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import Convenience
|
||||
import ConvenienceUI
|
||||
|
||||
protocol ProviderPoolViewControllerDelegate: AnyObject {
|
||||
func providerPoolController(_: ProviderPoolViewController, didSelectPool pool: Pool)
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import UIKit
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
protocol ProviderPresetViewControllerDelegate: AnyObject {
|
||||
|
|
|
@ -25,9 +25,10 @@
|
|||
|
||||
import UIKit
|
||||
import StoreKit
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import SwiftyBeaver
|
||||
import Convenience
|
||||
import ConvenienceUI
|
||||
|
||||
private let log = SwiftyBeaver.self
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -25,8 +25,9 @@
|
|||
|
||||
import UIKit
|
||||
import Intents
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import Convenience
|
||||
import ConvenienceUI
|
||||
|
||||
@available(iOS 12, *)
|
||||
class ShortcutsAddViewController: UITableViewController, StrongTableHost {
|
||||
|
|
|
@ -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] = []
|
||||
|
||||
|
|
|
@ -26,8 +26,9 @@
|
|||
import UIKit
|
||||
import Intents
|
||||
import IntentsUI
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import Convenience
|
||||
import ConvenienceUI
|
||||
|
||||
@available(iOS 12, *)
|
||||
protocol ShortcutsIntentDelegate: AnyObject {
|
||||
|
|
|
@ -24,9 +24,10 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import Convenience
|
||||
import TunnelKit
|
||||
import TunnelKitCore
|
||||
import ServiceManagement
|
||||
|
||||
// comment on release
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -23,10 +23,12 @@
|
|||
// along with Passepartout. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import SwiftyBeaver
|
||||
import TunnelKitCore
|
||||
import TunnelKitOpenVPN
|
||||
|
||||
private let log = SwiftyBeaver.self
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
class Macros {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
protocol TextInputViewControllerDelegate: AnyObject {
|
||||
|
|
|
@ -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?) {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
struct Theme {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
class WindowManager: NSObject {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
protocol OrganizerProfileTableViewDelegate: AnyObject {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import TunnelKitManager
|
||||
|
||||
class DebugLogViewController: NSViewController {
|
||||
@IBOutlet private weak var labelExchangedCaption: NSTextField!
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import ServiceManagement
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
class PreferencesViewController: NSViewController {
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
import Cocoa
|
||||
import StoreKit
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import SwiftyBeaver
|
||||
import Convenience
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import TunnelKit
|
||||
import TunnelKitCore
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
protocol AccountViewControllerDelegate: AnyObject {
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import TunnelKitOpenVPN
|
||||
|
||||
class ConfigurationViewController: NSViewController, ProfileCustomization {
|
||||
private struct Columns {
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import TunnelKitCore
|
||||
|
||||
class DNSViewController: NSViewController, ProfileCustomization {
|
||||
@IBOutlet private weak var popupChoice: NSPopUpButton!
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import TunnelKitOpenVPN
|
||||
|
||||
class DefaultGatewayViewController: NSViewController, ProfileCustomization {
|
||||
@IBOutlet private weak var popupChoice: NSPopUpButton!
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import TunnelKitCore
|
||||
|
||||
class EndpointViewController: NSViewController, ProfileCustomization {
|
||||
@IBOutlet private weak var labelAddressCaption: NSTextField!
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import TunnelKitCore
|
||||
|
||||
class MTUViewController: NSViewController, ProfileCustomization {
|
||||
@IBOutlet private weak var popupChoice: NSPopUpButton!
|
||||
|
|
|
@ -24,8 +24,10 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import TunnelKitCore
|
||||
import TunnelKitOpenVPN
|
||||
|
||||
protocol ProfileCustomization: AnyObject {
|
||||
var profile: ConnectionProfile? { get set }
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
class ProxyViewController: NSViewController, ProfileCustomization {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
protocol TrustedNetworksAddViewControllerDelegate: AnyObject {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
class TrustedNetworksViewController: NSViewController, ProfileCustomization {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
protocol HostServiceViewDelegate: AnyObject {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
|
||||
protocol ProviderServiceViewDelegate: AnyObject {
|
||||
|
|
|
@ -24,8 +24,10 @@
|
|||
//
|
||||
|
||||
import Cocoa
|
||||
import PassepartoutConstants
|
||||
import PassepartoutCore
|
||||
import TunnelKit
|
||||
import TunnelKitCore
|
||||
import TunnelKitManager
|
||||
import SwiftyBeaver
|
||||
import Convenience
|
||||
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.17.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1025</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>$(CFG_COPYRIGHT)</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! 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 <PassepartoutCore/PublicHeader.h>
|
||||
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
strings:
|
||||
inputs:
|
||||
- Resources/en.lproj/Core.strings
|
||||
outputs:
|
||||
- templateName: structured-swift4
|
||||
output: Sources/SwiftGen+Strings.swift
|
||||
params:
|
||||
publicAccess: true
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.17.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1025</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -23,7 +23,9 @@
|
|||
// along with Passepartout. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
import TunnelKit
|
||||
import Foundation
|
||||
import TunnelKitOpenVPN
|
||||
import PassepartoutConstants
|
||||
|
||||
class PacketTunnelProvider: OpenVPNTunnelProvider {
|
||||
override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</array>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.$(CFG_GROUP_ID)</string>
|
||||
<string>group.com.algoritmico.Passepartout</string>
|
||||
</array>
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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")
|
||||
])
|
||||
]
|
||||
)
|
|
@ -24,9 +24,6 @@
|
|||
//
|
||||
|
||||
import Foundation
|
||||
import TunnelKit
|
||||
import Convenience
|
||||
import SwiftyBeaver
|
||||
|
||||
public class AppConstants {
|
||||
public class App {
|
||||
|
@ -49,7 +46,7 @@ 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"
|
||||
|
||||
|
@ -57,6 +54,8 @@ public class AppConstants {
|
|||
}
|
||||
|
||||
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(
|
||||
public static let softwareArrays: [[String]] = [[
|
||||
"Kvitto",
|
||||
license: "BSD",
|
||||
url: "https://raw.githubusercontent.com/Cocoanetics/Kvitto/develop/LICENSE"
|
||||
),
|
||||
Software(
|
||||
"BSD",
|
||||
"https://raw.githubusercontent.com/Cocoanetics/Kvitto/develop/LICENSE"
|
||||
], [
|
||||
"lzo",
|
||||
license: "GPLv2",
|
||||
url: "https://www.gnu.org/licenses/gpl-2.0.txt"
|
||||
),
|
||||
Software(
|
||||
"GPLv2",
|
||||
"https://www.gnu.org/licenses/gpl-2.0.txt"
|
||||
], [
|
||||
"MBProgressHUD",
|
||||
license: "MIT",
|
||||
url: "https://raw.githubusercontent.com/jdg/MBProgressHUD/master/LICENSE"
|
||||
),
|
||||
Software(
|
||||
"MIT",
|
||||
"https://raw.githubusercontent.com/jdg/MBProgressHUD/master/LICENSE"
|
||||
], [
|
||||
"OpenSSL",
|
||||
license: "OpenSSL",
|
||||
url: "https://www.openssl.org/source/license.txt"
|
||||
),
|
||||
Software(
|
||||
"OpenSSL",
|
||||
"https://www.openssl.org/source/license.txt"
|
||||
], [
|
||||
"PIATunnel",
|
||||
license: "MIT",
|
||||
url: "https://raw.githubusercontent.com/pia-foss/tunnel-apple/master/LICENSE"
|
||||
),
|
||||
Software(
|
||||
"MIT",
|
||||
"https://raw.githubusercontent.com/pia-foss/tunnel-apple/master/LICENSE"
|
||||
], [
|
||||
"SSZipArchive",
|
||||
license: "MIT",
|
||||
url: "https://raw.githubusercontent.com/samsoffes/ssziparchive/master/LICENSE"
|
||||
),
|
||||
Software(
|
||||
"MIT",
|
||||
"https://raw.githubusercontent.com/samsoffes/ssziparchive/master/LICENSE"
|
||||
], [
|
||||
"SwiftGen",
|
||||
license: "MIT",
|
||||
url: "https://raw.githubusercontent.com/SwiftGen/SwiftGen/master/LICENCE"
|
||||
),
|
||||
Software(
|
||||
"MIT",
|
||||
"https://raw.githubusercontent.com/SwiftGen/SwiftGen/master/LICENCE"
|
||||
], [
|
||||
"SwiftyBeaver",
|
||||
license: "MIT",
|
||||
url: "https://raw.githubusercontent.com/SwiftyBeaver/SwiftyBeaver/master/LICENSE"
|
||||
),
|
||||
Software(
|
||||
"MIT",
|
||||
"https://raw.githubusercontent.com/SwiftyBeaver/SwiftyBeaver/master/LICENSE"
|
||||
], [
|
||||
"Circle Icons",
|
||||
notice: "The logo is taken from the awesome Circle Icons set by Nick Roach."
|
||||
),
|
||||
Software(
|
||||
"The logo is taken from the awesome Circle Icons set by Nick Roach."
|
||||
], [
|
||||
"Country flags",
|
||||
notice: "The country flags are taken from: https://github.com/lipis/flag-icon-css/"
|
||||
),
|
||||
Software(
|
||||
"The country flags are taken from: https://github.com/lipis/flag-icon-css/"
|
||||
], [
|
||||
"OpenVPN",
|
||||
notice: "© 2002-2018 OpenVPN Inc. - OpenVPN is a registered trademark of OpenVPN Inc."
|
||||
)
|
||||
]
|
||||
"© 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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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"
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 02768b6c06fd37a8c9b15a9e72bbecdd62cc440f
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
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")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue