summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2023-04-20 14:38:57 +0200
committerAndrej Mihajlov <and@mullvad.net>2023-04-20 14:38:57 +0200
commitc985d81959dc482d5277e9a76bf8a8f74663df3e (patch)
treea586ec2ecd496d4cfe12a2e53f6c8dbec1200a8c
parent1e8239d684ed688fcbe6ca5bdbd2e5db319a1c9f (diff)
parentfe8b0f89b4d60bc2396768cb0e8eb711639b2dfa (diff)
downloadmullvadvpn-c985d81959dc482d5277e9a76bf8a8f74663df3e.tar.xz
mullvadvpn-c985d81959dc482d5277e9a76bf8a8f74663df3e.zip
Merge branch 'add-http-proxy-configuration'
-rw-r--r--ios/MullvadREST/RESTURLSession.swift27
1 files changed, 25 insertions, 2 deletions
diff --git a/ios/MullvadREST/RESTURLSession.swift b/ios/MullvadREST/RESTURLSession.swift
index f1d3dfe501..87e2d7abbe 100644
--- a/ios/MullvadREST/RESTURLSession.swift
+++ b/ios/MullvadREST/RESTURLSession.swift
@@ -9,7 +9,27 @@
import Foundation
extension REST {
- public static func makeURLSession() -> URLSession {
+ public struct HTTPProxyConfiguration {
+ public var address: String
+ public var port: UInt16
+
+ public init(address: String, port: UInt16) {
+ self.address = address
+ self.port = port
+ }
+
+ fileprivate func apply(to sessionConfiguration: URLSessionConfiguration) {
+ var configuration = [CFString: Any]()
+
+ configuration[kCFNetworkProxiesHTTPProxy] = address
+ configuration[kCFNetworkProxiesHTTPPort] = NSNumber(value: port)
+ configuration[kCFNetworkProxiesProxyAutoConfigEnable] = kCFBooleanFalse
+
+ sessionConfiguration.connectionProxyDictionary = configuration
+ }
+ }
+
+ public static func makeURLSession(httpProxyConfiguration: HTTPProxyConfiguration? = nil) -> URLSession {
let certificatePath = Bundle(for: SSLPinningURLSessionDelegate.self)
.path(forResource: "le_root_cert", ofType: "cer")!
let data = FileManager.default.contents(atPath: certificatePath)!
@@ -20,8 +40,11 @@ extension REST {
trustedRootCertificates: [secCertificate]
)
+ let sessionConfiguration = URLSessionConfiguration.ephemeral
+ httpProxyConfiguration?.apply(to: sessionConfiguration)
+
let session = URLSession(
- configuration: .ephemeral,
+ configuration: sessionConfiguration,
delegate: sessionDelegate,
delegateQueue: nil
)