From 8d0fb5c9b589bce5f015268f9b4687d6c22f55ee Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sun, 19 Mar 2023 08:41:51 +0100 Subject: [PATCH] Support DoH/DoT network settings in WireGuard profiles (#264) --- CHANGELOG.md | 2 ++ Passepartout.xcodeproj/project.pbxproj | 8 ++++---- .../xcshareddata/swiftpm/Package.resolved | 6 +++--- PassepartoutLibrary/Package.swift | 12 +++++++++--- .../Extensions/WireGuardSettings+Network.swift | 4 ++-- .../Pickers/Picker+Network.swift | 2 +- .../WireGuardSettings+VPNConfiguration.swift | 9 ++++++--- 7 files changed, 27 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bd5315c..bf8a72d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,9 +13,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Ukranian translations (Dmitry Chirkin). [#243](https://github.com/passepartoutvpn/passepartout-apple/pull/243) - Restore DNS "Domain" setting. [#260](https://github.com/passepartoutvpn/passepartout-apple/pull/260) - OpenVPN: Full implementation of Tunnelblick XOR patch (tmthecoder). [#245](https://github.com/passepartoutvpn/passepartout-apple/pull/245), [tunnelkit#255][https://github.com/passepartoutvpn/tunnelkit/pull/255] +- WireGuard: DoH/DoT options. [#264](https://github.com/passepartoutvpn/passepartout-apple/pull/264) ### Changed +- Bump targets to iOS 15 / macOS 12. - Move Diagnostics view to Profile bottom. [#261](https://github.com/passepartoutvpn/passepartout-apple/pull/261) ### Fixed diff --git a/Passepartout.xcodeproj/project.pbxproj b/Passepartout.xcodeproj/project.pbxproj index 23aea9c6..4e75efdc 100644 --- a/Passepartout.xcodeproj/project.pbxproj +++ b/Passepartout.xcodeproj/project.pbxproj @@ -1756,8 +1756,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MACOSX_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MACOSX_DEPLOYMENT_TARGET = 12.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -1817,8 +1817,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MACOSX_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MACOSX_DEPLOYMENT_TARGET = 12.0; SDKROOT = iphoneos; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/Passepartout.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Passepartout.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index a9f98fea..9f0d5b2c 100644 --- a/Passepartout.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Passepartout.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -51,7 +51,7 @@ "repositoryURL": "https://github.com/passepartoutvpn/tunnelkit", "state": { "branch": null, - "revision": "e0c0cc137fbceea6970d226445afa79a7903881c", + "revision": "7ce254be0293ba7e1eeda07a3701804de59f7490", "version": null } }, @@ -60,8 +60,8 @@ "repositoryURL": "https://github.com/passepartoutvpn/wireguard-apple", "state": { "branch": null, - "revision": "d3b8f1ac6f3361d69bd3daf8aee3c43012c6ec0b", - "version": "1.0.16" + "revision": "73d9152fa0cb661db0348a1ac11dbbf998422a50", + "version": null } } ] diff --git a/PassepartoutLibrary/Package.swift b/PassepartoutLibrary/Package.swift index 6711cc55..a633076e 100644 --- a/PassepartoutLibrary/Package.swift +++ b/PassepartoutLibrary/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.3 +// swift-tools-version:5.5 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -6,7 +6,7 @@ import PackageDescription let package = Package( name: "PassepartoutLibrary", platforms: [ - .iOS(.v14), .macOS(.v11) + .iOS(.v15), .macOS(.v12) ], products: [ // Products define the executables and libraries a package produces, and make them visible to other packages. @@ -24,7 +24,7 @@ let package = Package( // 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", from: "5.0.0"), - .package(name: "TunnelKit", url: "https://github.com/passepartoutvpn/tunnelkit", .revision("e0c0cc137fbceea6970d226445afa79a7903881c")), + .package(name: "TunnelKit", url: "https://github.com/passepartoutvpn/tunnelkit", .revision("7ce254be0293ba7e1eeda07a3701804de59f7490")), // .package(name: "TunnelKit", path: "../../tunnelkit"), .package(url: "https://github.com/zoul/generic-json-swift", from: "2.0.0"), .package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver", from: "1.9.0") @@ -47,12 +47,18 @@ let package = Package( name: "PassepartoutProfiles", dependencies: [ "PassepartoutProviders" + ], + resources: [ + .process("DataModels/Profiles.xcdatamodeld") ]), .target( name: "PassepartoutProviders", dependencies: [ "PassepartoutCore", "PassepartoutServices" + ], + resources: [ + .process("DataModels/Providers.xcdatamodeld") ]), .target( name: "PassepartoutCore", diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/WireGuardSettings+Network.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/WireGuardSettings+Network.swift index ac716b2a..87515dc3 100644 --- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/WireGuardSettings+Network.swift +++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Extensions/WireGuardSettings+Network.swift @@ -46,11 +46,11 @@ extension Profile.WireGuardSettings: DNSSettingsProviding { } public var dnsHTTPSURL: URL? { - nil + configuration.dnsHTTPSURL } public var dnsTLSServerName: String? { - nil + configuration.dnsTLSServerName } } diff --git a/PassepartoutLibrary/Sources/PassepartoutProfiles/Pickers/Picker+Network.swift b/PassepartoutLibrary/Sources/PassepartoutProfiles/Pickers/Picker+Network.swift index f56a61d7..7580264b 100644 --- a/PassepartoutLibrary/Sources/PassepartoutProfiles/Pickers/Picker+Network.swift +++ b/PassepartoutLibrary/Sources/PassepartoutProfiles/Pickers/Picker+Network.swift @@ -34,7 +34,7 @@ extension Network.DNSSettings { return [.plain, .https, .tls, .disabled] case .wireGuard: - return [.plain, .disabled] + return [.plain, .https, .tls, .disabled] } } } diff --git a/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/WireGuardSettings+VPNConfiguration.swift b/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/WireGuardSettings+VPNConfiguration.swift index 459297b2..250a1120 100644 --- a/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/WireGuardSettings+VPNConfiguration.swift +++ b/PassepartoutLibrary/Sources/PassepartoutVPN/Extensions/WireGuardSettings+VPNConfiguration.swift @@ -104,12 +104,15 @@ extension WireGuard.ConfigurationBuilder { } dnsSearchDomains = allDomains.filter { !$0.isEmpty } + case .https: + dnsHTTPSURL = settings.dnsHTTPSURL + + case .tls: + dnsTLSServerName = settings.dnsTLSServerName + case .disabled: dnsServers = [] dnsSearchDomains = [] - - default: - fatalError("Invalid DNS configuration for WireGuard: \(settings.configurationType)") } } }