@@ -31,13 +31,15 @@ class AppState: ObservableObject {
3131
3232 @Published var useLiteralHeaders : Bool = UserDefaults . standard. bool ( forKey: Keys . useLiteralHeaders) {
3333 didSet {
34+ if let onChange { onChange ( tunnelProviderProtocol ( ) ) }
3435 guard persistent else { return }
3536 UserDefaults . standard. set ( useLiteralHeaders, forKey: Keys . useLiteralHeaders)
3637 }
3738 }
3839
3940 @Published var literalHeaders : [ LiteralHeader ] {
4041 didSet {
42+ if let onChange { onChange ( tunnelProviderProtocol ( ) ) }
4143 guard persistent else { return }
4244 try ? UserDefaults . standard. set ( JSONEncoder ( ) . encode ( literalHeaders) , forKey: Keys . literalHeaders)
4345 }
@@ -57,13 +59,17 @@ class AppState: ObservableObject {
5759 // HACK: We can't write to the system keychain, and the user keychain
5860 // isn't accessible, so we'll use providerConfiguration, which is over XPC.
5961 proto. providerConfiguration = [ " token " : sessionToken!]
62+ if useLiteralHeaders, let headers = try ? JSONEncoder ( ) . encode ( literalHeaders) {
63+ proto. providerConfiguration ? [ " literalHeaders " ] = headers
64+ }
6065 proto. serverAddress = baseAccessURL!. absoluteString
6166 return proto
6267 }
6368
6469 private let keychain : Keychain
6570 private let persistent : Bool
6671
72+ // This closure must be called when any property used to configure the VPN changes
6773 let onChange : ( ( NETunnelProviderProtocol ? ) -> Void ) ?
6874
6975 public init ( onChange: ( ( NETunnelProviderProtocol ? ) -> Void ) ? = nil ,
@@ -125,20 +131,20 @@ class AppState: ObservableObject {
125131}
126132
127133struct LiteralHeader : Hashable , Identifiable , Equatable , Codable {
128- var header : String
134+ var name : String
129135 var value : String
130136 var id : String {
131- " \( header ) : \( value) "
137+ " \( name ) : \( value) "
132138 }
133139
134- init ( header : String , value: String ) {
135- self . header = header
140+ init ( name : String , value: String ) {
141+ self . name = name
136142 self . value = value
137143 }
138144}
139145
140146extension LiteralHeader {
141147 func toSDKHeader( ) -> HTTPHeader {
142- . init( header : header , value: value)
148+ . init( name : name , value: value)
143149 }
144150}
0 commit comments