~ubuntu-branches/ubuntu/saucy/plasma-nm/saucy-proposed

« back to all changes in this revision

Viewing changes to vpn/openconnect/openconnectwidget.cpp

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2013-08-16 19:07:09 UTC
  • Revision ID: package-import@ubuntu.com-20130816190709-ef9ydm9skigmg15l
Tags: upstream-0.0~git20130816
ImportĀ upstreamĀ versionĀ 0.0~git20130816

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright 2011 Ilia Kats <ilia-kats@gmx.de>
 
3
Copyright 2013 Lukas Tinkl <ltinkl@redhat.com>
 
4
 
 
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.
 
12
 
 
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.
 
17
 
 
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/>.
 
20
*/
 
21
 
 
22
#include "openconnectwidget.h"
 
23
#include <KDialog>
 
24
 
 
25
#include "ui_openconnectprop.h"
 
26
 
 
27
#include <QString>
 
28
#include "nm-openconnect-service.h"
 
29
 
 
30
class OpenconnectSettingWidgetPrivate
 
31
{
 
32
public:
 
33
    Ui_OpenconnectProp ui;
 
34
    NetworkManager::VpnSetting::Ptr setting;
 
35
};
 
36
 
 
37
OpenconnectSettingWidget::OpenconnectSettingWidget(const NetworkManager::VpnSetting::Ptr &setting, QWidget * parent)
 
38
: SettingWidget(setting, parent), d_ptr(new OpenconnectSettingWidgetPrivate)
 
39
{
 
40
    Q_D(OpenconnectSettingWidget);
 
41
    d->ui.setupUi(this);
 
42
    d->setting = setting;
 
43
 
 
44
    connect(d->ui.leGateway, SIGNAL(textChanged(QString)), SLOT(slotWidgetChanged()));
 
45
 
 
46
    KAcceleratorManager::manage(this);
 
47
 
 
48
    if (d->setting)
 
49
        loadConfig(d->setting);
 
50
}
 
51
 
 
52
OpenconnectSettingWidget::~OpenconnectSettingWidget()
 
53
{
 
54
    delete d_ptr;
 
55
}
 
56
 
 
57
void OpenconnectSettingWidget::loadConfig(const NetworkManager::Setting::Ptr &setting)
 
58
{
 
59
    Q_D(OpenconnectSettingWidget);
 
60
    Q_UNUSED(setting)
 
61
 
 
62
    // General settings
 
63
    const NMStringMap dataMap = d->setting->data();
 
64
 
 
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");
 
73
}
 
74
 
 
75
QVariantMap OpenconnectSettingWidget::setting(bool agentOwned) const
 
76
{
 
77
    Q_D(const OpenconnectSettingWidget);
 
78
    Q_UNUSED(agentOwned)
 
79
 
 
80
    NetworkManager::VpnSetting setting;
 
81
    setting.setServiceType(QLatin1String(NM_DBUS_SERVICE_OPENCONNECT));
 
82
 
 
83
    NMStringMap data;
 
84
 
 
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");
 
98
 
 
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));
 
103
 
 
104
    setting.setData(data);
 
105
    return setting.toMap();
 
106
}
 
107
 
 
108
bool OpenconnectSettingWidget::isValid() const
 
109
{
 
110
    Q_D(const OpenconnectSettingWidget);
 
111
    return !d->ui.leGateway->text().isEmpty();
 
112
}