Intercept potentially unsupported options

As warnings.
This commit is contained in:
Davide De Rosa 2018-10-27 14:50:46 +02:00
parent 9cb8cf92ca
commit 0b7ab7bca6
1 changed files with 22 additions and 3 deletions

View File

@ -37,6 +37,8 @@ struct ParsedFile {
let configuration: TunnelKitProvider.Configuration
let strippedLines: [String]?
let warning: ApplicationError?
}
extension TunnelKitProvider.Configuration {
@ -78,6 +80,7 @@ extension TunnelKitProvider.Configuration {
static func parsed(from url: URL, returnsStripped: Bool = false) throws -> ParsedFile {
let lines = try String(contentsOf: url).trimmedLines()
var strippedLines: [String]? = returnsStripped ? [] : nil
var warning: ApplicationError? = nil
var defaultProto: TunnelKitProvider.SocketType?
var defaultPort: UInt16?
@ -221,13 +224,23 @@ extension TunnelKitProvider.Configuration {
unsupportedError = ApplicationError.unsupportedConfiguration(option: "auth \(rawValue)")
}
}
Regex.compLZO.enumerateComponents(in: line) { _ in
Regex.compLZO.enumerateArguments(in: line) {
isHandled = true
compressionFraming = .compLZO
guard let arg = $0.first, arg == "no" else {
warning = .unsupportedConfiguration(option: "compression")
return
}
}
Regex.compress.enumerateComponents(in: line) { _ in
Regex.compress.enumerateArguments(in: line) {
isHandled = true
compressionFraming = .compress
guard $0.isEmpty else {
warning = .unsupportedConfiguration(option: "compression")
return
}
}
Regex.keyDirection.enumerateArguments(in: line) {
isHandled = true
@ -325,7 +338,13 @@ extension TunnelKitProvider.Configuration {
var builder = TunnelKitProvider.ConfigurationBuilder(sessionConfiguration: sessionBuilder.build())
builder.endpointProtocols = endpointProtocols
return ParsedFile(url: url, hostname: hostname, configuration: builder.build(), strippedLines: strippedLines)
return ParsedFile(
url: url,
hostname: hostname,
configuration: builder.build(),
strippedLines: strippedLines,
warning: warning
)
}
}