diff --git a/vpn/fortisslvpn/fortisslvpnadvanced.ui b/vpn/fortisslvpn/fortisslvpnadvanced.ui
--- a/vpn/fortisslvpn/fortisslvpnadvanced.ui
+++ b/vpn/fortisslvpn/fortisslvpnadvanced.ui
@@ -6,8 +6,8 @@
0
0
- 410
- 110
+ 400
+ 175
@@ -24,6 +24,28 @@
-
+
+
+
+ 0
+ 0
+
+
+
+ Autentication
+
+
+
-
+
+
+ Use a One-Time Password
+
+
+
+
+
+
+ -
@@ -58,7 +80,7 @@
- -
+
-
Qt::Vertical
diff --git a/vpn/fortisslvpn/fortisslvpnauth.cpp b/vpn/fortisslvpn/fortisslvpnauth.cpp
--- a/vpn/fortisslvpn/fortisslvpnauth.cpp
+++ b/vpn/fortisslvpn/fortisslvpnauth.cpp
@@ -40,6 +40,13 @@
d->ui.setupUi(this);
d->setting = setting;
+ const NetworkManager::Setting::SecretFlags otpFlag = static_cast(data.value(NM_FORTISSLVPN_KEY_OTP"-flags").toInt());
+ if (otpFlag == NetworkManager::Setting::NotSaved){
+ d->ui.otpFrame->setVisible(true);
+ } else {
+ d->ui.otpFrame->setVisible(false);
+ }
+
KAcceleratorManager::manage(this);
}
@@ -58,6 +65,13 @@
if (!d->ui.password->text().isEmpty()) {
secrets.insert(QLatin1String(NM_FORTISSLVPN_KEY_PASSWORD), d->ui.password->text());
}
+
+ if (!data.value(NM_FORTISSLVPN_KEY_OTP"-flags").isEmpty()){
+ const NetworkManager::Setting::SecretFlags otpFlag = static_cast(data.value(NM_FORTISSLVPN_KEY_OTP"-flags").toInt());
+ if (otpFlag == NetworkManager::Setting::NotSaved && !d->ui.otp->text().isEmpty()){
+ secrets.insert(QLatin1String(NM_FORTISSLVPN_KEY_OTP),d->ui.otp->text());
+ }
+ }
secretData.insert("secrets", QVariant::fromValue(secrets));
return secretData;
diff --git a/vpn/fortisslvpn/fortisslvpnauth.ui b/vpn/fortisslvpn/fortisslvpnauth.ui
--- a/vpn/fortisslvpn/fortisslvpnauth.ui
+++ b/vpn/fortisslvpn/fortisslvpnauth.ui
@@ -34,6 +34,38 @@
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
-
+
+
+ One Time Password
+
+
+
+ -
+
+
+ Token:
+
+
+
+ -
+
+
+
+
+
diff --git a/vpn/fortisslvpn/fortisslvpnwidget.cpp b/vpn/fortisslvpn/fortisslvpnwidget.cpp
--- a/vpn/fortisslvpn/fortisslvpnwidget.cpp
+++ b/vpn/fortisslvpn/fortisslvpnwidget.cpp
@@ -128,6 +128,12 @@
d->advUi.trustedCert->setText(trustedCert);
}
+ if (!data.value(NM_FORTISSLVPN_KEY_OTP"-flags").isEmpty()){
+ const NetworkManager::Setting::SecretFlags otpFlag = static_cast(data.value(NM_FORTISSLVPN_KEY_OTP"-flags").toInt());
+ if (otpFlag & NetworkManager::Setting::NotSaved){
+ d->advUi.otp->setChecked(true);
+ }
+ }
loadSecrets(setting);
}
@@ -190,7 +196,19 @@
if (!d->advUi.trustedCert->text().isEmpty()) {
data.insert(NM_FORTISSLVPN_KEY_TRUSTED_CERT, d->advUi.trustedCert->text());
}
-
+
+ const NMStringMap prevData = d->setting->data();
+ if (!prevData.value(NM_FORTISSLVPN_KEY_OTP"-flags").isEmpty()){
+ const NetworkManager::Setting::SecretFlags otpFlag = static_cast(data.value(NM_FORTISSLVPN_KEY_OTP"-flags").toInt());
+ } else {
+ otpFlag = NULL;
+ }
+ if (d->advUi.otp->isChecked()){
+ data.insert(QLatin1String(NM_FORTISSLVPN_KEY_OTP"-flags"), QString::number(otpFlags | NetworkManager::Setting::NotSaved);
+ } else {
+ data.insert(QLatin1String(NM_FORTISSLVPN_KEY_OTP"-flags"), QString::number(otpFlags & ~NetworkManager::Setting::NotSaved);
+ }
+
setting.setData(data);
setting.setSecrets(secrets);
diff --git a/vpn/fortisslvpn/nm-fortisslvpn-service.h b/vpn/fortisslvpn/nm-fortisslvpn-service.h
--- a/vpn/fortisslvpn/nm-fortisslvpn-service.h
+++ b/vpn/fortisslvpn/nm-fortisslvpn-service.h
@@ -32,6 +32,7 @@
#define NM_FORTISSLVPN_KEY_GATEWAY "gateway"
#define NM_FORTISSLVPN_KEY_USER "user"
#define NM_FORTISSLVPN_KEY_PASSWORD "password"
+#define NM_FORTISSLVPN_KEY_OTP "otp"
#define NM_FORTISSLVPN_KEY_CA "ca"
#define NM_FORTISSLVPN_KEY_CERT "cert"
#define NM_FORTISSLVPN_KEY_KEY "key"