@@ -31,13 +31,15 @@ class AppState: ObservableObject {
31
31
32
32
@Published var useLiteralHeaders: Bool = UserDefaults.standard.bool(forKey: Keys.useLiteralHeaders) {
33
33
didSet {
34
+ if let onChange { onChange(tunnelProviderProtocol()) }
34
35
guard persistent else { return }
35
36
UserDefaults.standard.set(useLiteralHeaders, forKey: Keys.useLiteralHeaders)
36
37
}
37
38
}
38
39
39
40
@Published var literalHeaders: [LiteralHeader] {
40
41
didSet {
42
+ if let onChange { onChange(tunnelProviderProtocol()) }
41
43
guard persistent else { return }
42
44
try? UserDefaults.standard.set(JSONEncoder().encode(literalHeaders), forKey: Keys.literalHeaders)
43
45
}
@@ -57,13 +59,17 @@ class AppState: ObservableObject {
57
59
// HACK: We can't write to the system keychain, and the user keychain
58
60
// isn't accessible, so we'll use providerConfiguration, which is over XPC.
59
61
proto.providerConfiguration = ["token": sessionToken!]
62
+ if useLiteralHeaders, let headers = try? JSONEncoder().encode(literalHeaders) {
63
+ proto.providerConfiguration?["literalHeaders"] = headers
64
+ }
60
65
proto.serverAddress = baseAccessURL!.absoluteString
61
66
return proto
62
67
}
63
68
64
69
private let keychain: Keychain
65
70
private let persistent: Bool
66
71
72
+ // This closure must be called when any property used to configure the VPN changes
67
73
let onChange: ((NETunnelProviderProtocol?) -> Void)?
68
74
69
75
public init(onChange: ((NETunnelProviderProtocol?) -> Void)? = nil,
@@ -125,20 +131,20 @@ class AppState: ObservableObject {
125
131
}
126
132
127
133
struct LiteralHeader: Hashable, Identifiable, Equatable, Codable {
128
- var header : String
134
+ var name : String
129
135
var value: String
130
136
var id: String {
131
- "\(header ):\(value)"
137
+ "\(name ):\(value)"
132
138
}
133
139
134
- init(header : String, value: String) {
135
- self.header = header
140
+ init(name : String, value: String) {
141
+ self.name = name
136
142
self.value = value
137
143
}
138
144
}
139
145
140
146
extension LiteralHeader {
141
147
func toSDKHeader() -> HTTPHeader {
142
- .init(header: header , value: value)
148
+ .init(name: name , value: value)
143
149
}
144
150
}
0 commit comments