blob: 200704cf7c104125deb487fcca880907f17cc883 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
//
// RelaySelectorWrapper.swift
// PacketTunnel
//
// Created by pronebird on 08/08/2023.
// Copyright © 2023 Mullvad VPN AB. All rights reserved.
//
import MullvadSettings
import MullvadTypes
public final class RelaySelectorWrapper: RelaySelectorProtocol, Sendable {
let relayCache: RelayCacheProtocol
public init(relayCache: RelayCacheProtocol) {
self.relayCache = relayCache
}
public func selectRelays(
tunnelSettings: LatestTunnelSettings,
connectionAttemptCount: UInt
) throws -> SelectedRelays {
let obfuscation = try ObfuscatorPortSelector(
relays: try relayCache.read().relays
).obfuscate(
tunnelSettings: tunnelSettings,
connectionAttemptCount: connectionAttemptCount
)
return switch tunnelSettings.tunnelMultihopState {
case .off:
try SinglehopPicker(
obfuscation: obfuscation,
constraints: tunnelSettings.relayConstraints,
connectionAttemptCount: connectionAttemptCount,
daitaSettings: tunnelSettings.daita
).pick()
case .on:
try MultihopPicker(
obfuscation: obfuscation,
constraints: tunnelSettings.relayConstraints,
connectionAttemptCount: connectionAttemptCount,
daitaSettings: tunnelSettings.daita
).pick()
}
}
}
|