@@ -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