Подключение к VPN с помощью Swift 3
Я пытаюсь подключиться к VPN в приложении для iOS. Что я уже знаю, это тип VPN (L2TP поверх IPSec), имя учетной записи, пароль и общий секрет. Соединение работает через настройки сети Mac. Хотя, кажется, немного сложнее, когда вы должны использовать эту информацию в коде.
Сначала я импортировал необходимую библиотеку.
import NetworkExtension
Затем я пытаюсь загрузить настройки и, в случае ошибки, использую свои и сохранить их. Выглядит так:
NEVPNManager.shared().loadFromPreferences { error in
// config
NEVPNManager.shared().saveToPreferences { error in
if (error == nil) {
do {
try NEVPNManager.shared().connection.startVPNTunnel()
} catch {
print("Couldn't connect")
}
} else {
print("NEVPNManager.saveToPreferencesWithCompletionHandler failed: \(error!.localizedDescription)")
}
}
}
Где вы можете увидеть "// config", мои данные должны быть переданы. Я не уверен на 100%, правильно ли я все делаю.
Там постоянная let p = NEVPNProtocolIPSec()
где я размещаю свои данные. Это как p.username = "smth"
,
Вопрос в том, какие поля p
должно быть заполнено? Где я могу разместить общий секрет?
--- ОБНОВИТЬ ---
Я всегда получаю ошибку:
NEVPNManager.saveToPreferencesWithCompletionHandler не выполнен: операция не может быть завершена. (NEVPNErrorDomain ошибка 4.)
Я не могу найти что-то конкретное в этом.
Во время настройки для полей.sharedSecretReference и.passwordReference требуются данные? объект. Я получаю это с помощью keychain.get("passref")?.data(using: .utf8, allowLossyConversion: true)
предшествует
let keychain: KeychainSwift! = KeychainSwift()
keychain.set("<my_password>", forKey: "passref")
( отсюда приходит класс KeychainSwift)
Где я делаю ошибку?