Only require --ca and --cipher from clients

Not in a PUSH_REPLY, for example.
This commit is contained in:
Davide De Rosa 2019-11-20 19:46:52 +01:00
parent b1c11e3e56
commit 13027b8932
1 changed files with 10 additions and 7 deletions

View File

@ -174,20 +174,21 @@ extension OpenVPN {
*/ */
public static func parsed(fromURL url: URL, passphrase: String? = nil, returnsStripped: Bool = false) throws -> Result { public static func parsed(fromURL url: URL, passphrase: String? = nil, returnsStripped: Bool = false) throws -> Result {
let lines = try String(contentsOf: url).trimmedLines() let lines = try String(contentsOf: url).trimmedLines()
return try parsed(fromLines: lines, passphrase: passphrase, originalURL: url, returnsStripped: returnsStripped) return try parsed(fromLines: lines, isClient: true, passphrase: passphrase, originalURL: url, returnsStripped: returnsStripped)
} }
/** /**
Parses a configuration from an array of lines. Parses a configuration from an array of lines.
- Parameter lines: The array of lines holding the configuration. - Parameter lines: The array of lines holding the configuration.
- Parameter isClient: Enables additional checks for client configurations.
- Parameter passphrase: The optional passphrase for encrypted data. - Parameter passphrase: The optional passphrase for encrypted data.
- Parameter originalURL: The optional original URL of the configuration file. - Parameter originalURL: The optional original URL of the configuration file.
- Parameter returnsStripped: When `true`, stores the stripped file into `Result.strippedLines`. Defaults to `false`. - Parameter returnsStripped: When `true`, stores the stripped file into `Result.strippedLines`. Defaults to `false`.
- Returns: The `Result` outcome of the parsing. - Returns: The `Result` outcome of the parsing.
- Throws: `ConfigurationError` if the configuration file is wrong or incomplete. - Throws: `ConfigurationError` if the configuration file is wrong or incomplete.
*/ */
public static func parsed(fromLines lines: [String], passphrase: String? = nil, originalURL: URL? = nil, returnsStripped: Bool = false) throws -> Result { public static func parsed(fromLines lines: [String], isClient: Bool = false, passphrase: String? = nil, originalURL: URL? = nil, returnsStripped: Bool = false) throws -> Result {
var optStrippedLines: [String]? = returnsStripped ? [] : nil var optStrippedLines: [String]? = returnsStripped ? [] : nil
var optWarning: ConfigurationError? var optWarning: ConfigurationError?
var unsupportedError: ConfigurationError? var unsupportedError: ConfigurationError?
@ -587,12 +588,14 @@ extension OpenVPN {
} }
} }
if isClient {
guard let _ = optCA else { guard let _ = optCA else {
throw ConfigurationError.missingConfiguration(option: "ca") throw ConfigurationError.missingConfiguration(option: "ca")
} }
guard let _ = optCipher else { guard let _ = optCipher else {
throw ConfigurationError.missingConfiguration(option: "cipher") throw ConfigurationError.missingConfiguration(option: "cipher")
} }
}
// //