2
Copyright 2011 Ilia Kats <ilia-kats@gmx.de>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Lesser General Public
6
License as published by the Free Software Foundation; either
7
version 2.1 of the License, or (at your option) version 3, or any
8
later version accepted by the membership of KDE e.V. (or its
9
successor approved by the membership of KDE e.V.), which shall
10
act as a proxy defined in Section 6 of version 3 of the license.
12
This library is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
Lesser General Public License for more details.
17
You should have received a copy of the GNU Lesser General Public
18
License along with this library. If not, see <http://www.gnu.org/licenses/>.
21
#include "openconnectwidget.h"
24
#include <nm-setting-vpn.h>
26
#include "ui_openconnectprop.h"
29
#include "nm-openconnect-service.h"
31
#include "connection.h"
33
class OpenconnectSettingWidgetPrivate
36
Ui_OpenconnectProp ui;
37
Knm::VpnSetting * setting;
40
OpenconnectSettingWidget::OpenconnectSettingWidget(Knm::Connection * connection, QWidget * parent)
41
: SettingWidget(connection, parent), d_ptr(new OpenconnectSettingWidgetPrivate)
43
Q_D(OpenconnectSettingWidget);
45
d->setting = static_cast<Knm::VpnSetting *>(connection->setting(Knm::Setting::Vpn));
48
OpenconnectSettingWidget::~OpenconnectSettingWidget()
53
void OpenconnectSettingWidget::readConfig()
55
Q_D(OpenconnectSettingWidget);
57
QStringMap dataMap = d->setting->data();
58
QStringMap vpnSecretsMap = d->setting->vpnSecrets();
60
d->ui.leGateway->setText(dataMap[NM_OPENCONNECT_KEY_GATEWAY]);
61
d->ui.leCaCertificate->setUrl(KUrl(dataMap[NM_OPENCONNECT_KEY_CACERT]));
62
d->ui.leProxy->setText(dataMap[NM_OPENCONNECT_KEY_PROXY]);
63
d->ui.chkAllowTrojan->setChecked(dataMap[NM_OPENCONNECT_KEY_CSD_ENABLE] == "yes");
64
d->ui.leCsdWrapperScript->setUrl(KUrl(dataMap[NM_OPENCONNECT_KEY_CSD_WRAPPER]));
65
d->ui.leUserCert->setUrl(KUrl(dataMap[NM_OPENCONNECT_KEY_USERCERT]));
66
d->ui.leUserPrivateKey->setUrl(KUrl(dataMap[NM_OPENCONNECT_KEY_PRIVKEY]));
67
d->ui.chkUseFsid->setChecked(dataMap[NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID] == "yes");
70
void OpenconnectSettingWidget::writeConfig()
72
Q_D(OpenconnectSettingWidget);
74
d->setting->setServiceType(QLatin1String(NM_DBUS_SERVICE_OPENCONNECT));
77
QStringMap secretData;
79
data.insert(QLatin1String(NM_OPENCONNECT_KEY_GATEWAY), d->ui.leGateway->text().toUtf8());
80
if (!d->ui.leCaCertificate->url().isEmpty())
81
data.insert(QLatin1String(NM_OPENCONNECT_KEY_CACERT), d->ui.leCaCertificate->url().path().toUtf8());
82
if (!d->ui.leProxy->text().isEmpty())
83
data.insert(QLatin1String(NM_OPENCONNECT_KEY_PROXY), d->ui.leProxy->text().toUtf8());
84
data.insert(QLatin1String(NM_OPENCONNECT_KEY_CSD_ENABLE), d->ui.chkAllowTrojan->isChecked() ? "yes" : "no");
85
if (!d->ui.leCsdWrapperScript->url().isEmpty())
86
data.insert(QLatin1String(NM_OPENCONNECT_KEY_CSD_WRAPPER), d->ui.leCsdWrapperScript->url().path().toUtf8());
87
if (!d->ui.leUserCert->url().isEmpty())
88
data.insert(QLatin1String(NM_OPENCONNECT_KEY_USERCERT), d->ui.leUserCert->url().path().toUtf8());
89
if (!d->ui.leUserPrivateKey->url().isEmpty())
90
data.insert(QLatin1String(NM_OPENCONNECT_KEY_PRIVKEY), d->ui.leUserPrivateKey->url().path().toUtf8());
91
data.insert(QLatin1String(NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID), d->ui.chkUseFsid->isChecked() ? "yes" : "no");
93
/* These are different for every login session, and should not be stored */
94
data.insert(QLatin1String(NM_OPENCONNECT_KEY_COOKIE"-flags"), QString::number(Knm::Setting::NotSaved));
95
data.insert(QLatin1String(NM_OPENCONNECT_KEY_GWCERT"-flags"), QString::number(Knm::Setting::NotSaved));
96
data.insert(QLatin1String(NM_OPENCONNECT_KEY_GATEWAY"-flags"), QString::number(Knm::Setting::NotSaved));
98
d->setting->setData(data);
100
//VpnSecrets empty so far, they will be acquired by the auth dialog
101
d->setting->setVpnSecrets(secretData);
104
void OpenconnectSettingWidget::readSecrets()
108
void OpenconnectSettingWidget::validate()