diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2023-04-20 14:38:57 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2023-04-20 14:38:57 +0200 |
| commit | c985d81959dc482d5277e9a76bf8a8f74663df3e (patch) | |
| tree | a586ec2ecd496d4cfe12a2e53f6c8dbec1200a8c | |
| parent | 1e8239d684ed688fcbe6ca5bdbd2e5db319a1c9f (diff) | |
| parent | fe8b0f89b4d60bc2396768cb0e8eb711639b2dfa (diff) | |
| download | mullvadvpn-c985d81959dc482d5277e9a76bf8a8f74663df3e.tar.xz mullvadvpn-c985d81959dc482d5277e9a76bf8a8f74663df3e.zip | |
Merge branch 'add-http-proxy-configuration'
| -rw-r--r-- | ios/MullvadREST/RESTURLSession.swift | 27 |
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 ) |
