2
Copyright 2011 Ilia Kats <ilia-kats@gmx.de>
3
Copyright 2013 Lukas Tinkl <ltinkl@redhat.com>
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Lesser General Public
7
License as published by the Free Software Foundation; either
8
version 2.1 of the License, or (at your option) version 3, or any
9
later version accepted by the membership of KDE e.V. (or its
10
successor approved by the membership of KDE e.V.), which shall
11
act as a proxy defined in Section 6 of version 3 of the license.
13
This library is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
Lesser General Public License for more details.
18
You should have received a copy of the GNU Lesser General Public
19
License along with this library. If not, see <http://www.gnu.org/licenses/>.
22
#include "openconnectwidget.h"
25
#include "ui_openconnectprop.h"
28
#include "nm-openconnect-service.h"
30
class OpenconnectSettingWidgetPrivate
33
Ui_OpenconnectProp ui;
34
NetworkManager::VpnSetting::Ptr setting;
37
OpenconnectSettingWidget::OpenconnectSettingWidget(const NetworkManager::VpnSetting::Ptr &setting, QWidget * parent)
38
: SettingWidget(setting, parent), d_ptr(new OpenconnectSettingWidgetPrivate)
40
Q_D(OpenconnectSettingWidget);
44
connect(d->ui.leGateway, SIGNAL(textChanged(QString)), SLOT(slotWidgetChanged()));
46
KAcceleratorManager::manage(this);
49
loadConfig(d->setting);
52
OpenconnectSettingWidget::~OpenconnectSettingWidget()
57
void OpenconnectSettingWidget::loadConfig(const NetworkManager::Setting::Ptr &setting)
59
Q_D(OpenconnectSettingWidget);
63
const NMStringMap dataMap = d->setting->data();
65
d->ui.leGateway->setText(dataMap[NM_OPENCONNECT_KEY_GATEWAY]);
66
d->ui.leCaCertificate->setUrl(KUrl(dataMap[NM_OPENCONNECT_KEY_CACERT]));
67
d->ui.leProxy->setText(dataMap[NM_OPENCONNECT_KEY_PROXY]);
68
d->ui.chkAllowTrojan->setChecked(dataMap[NM_OPENCONNECT_KEY_CSD_ENABLE] == "yes");
69
d->ui.leCsdWrapperScript->setUrl(KUrl(dataMap[NM_OPENCONNECT_KEY_CSD_WRAPPER]));
70
d->ui.leUserCert->setUrl(KUrl(dataMap[NM_OPENCONNECT_KEY_USERCERT]));
71
d->ui.leUserPrivateKey->setUrl(KUrl(dataMap[NM_OPENCONNECT_KEY_PRIVKEY]));
72
d->ui.chkUseFsid->setChecked(dataMap[NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID] == "yes");
75
QVariantMap OpenconnectSettingWidget::setting(bool agentOwned) const
77
Q_D(const OpenconnectSettingWidget);
80
NetworkManager::VpnSetting setting;
81
setting.setServiceType(QLatin1String(NM_DBUS_SERVICE_OPENCONNECT));
85
data.insert(QLatin1String(NM_OPENCONNECT_KEY_GATEWAY), d->ui.leGateway->text());
86
if (!d->ui.leCaCertificate->url().isEmpty())
87
data.insert(QLatin1String(NM_OPENCONNECT_KEY_CACERT), d->ui.leCaCertificate->url().path());
88
if (!d->ui.leProxy->text().isEmpty())
89
data.insert(QLatin1String(NM_OPENCONNECT_KEY_PROXY), d->ui.leProxy->text());
90
data.insert(QLatin1String(NM_OPENCONNECT_KEY_CSD_ENABLE), d->ui.chkAllowTrojan->isChecked() ? "yes" : "no");
91
if (!d->ui.leCsdWrapperScript->url().isEmpty())
92
data.insert(QLatin1String(NM_OPENCONNECT_KEY_CSD_WRAPPER), d->ui.leCsdWrapperScript->url().path());
93
if (!d->ui.leUserCert->url().isEmpty())
94
data.insert(QLatin1String(NM_OPENCONNECT_KEY_USERCERT), d->ui.leUserCert->url().path());
95
if (!d->ui.leUserPrivateKey->url().isEmpty())
96
data.insert(QLatin1String(NM_OPENCONNECT_KEY_PRIVKEY), d->ui.leUserPrivateKey->url().path());
97
data.insert(QLatin1String(NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID), d->ui.chkUseFsid->isChecked() ? "yes" : "no");
99
/* These are different for every login session, and should not be stored */
100
data.insert(QLatin1String(NM_OPENCONNECT_KEY_COOKIE"-flags"), QString::number(NetworkManager::Setting::NotSaved));
101
data.insert(QLatin1String(NM_OPENCONNECT_KEY_GWCERT"-flags"), QString::number(NetworkManager::Setting::NotSaved));
102
data.insert(QLatin1String(NM_OPENCONNECT_KEY_GATEWAY"-flags"), QString::number(NetworkManager::Setting::NotSaved));
104
setting.setData(data);
105
return setting.toMap();
108
bool OpenconnectSettingWidget::isValid() const
110
Q_D(const OpenconnectSettingWidget);
111
return !d->ui.leGateway->text().isEmpty();