2
Copyright 2013 Jan Grulich <jgrulich@redhat.com>
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 "openswanwidget.h"
22
#include "ui_openswan.h"
23
#include "nm-openswan-service.h"
25
#include <NetworkManagerQt/Setting>
27
#include <QDBusMetaType>
30
OpenswanWidget::OpenswanWidget(const NetworkManager::VpnSetting::Ptr &setting, QWidget* parent, Qt::WindowFlags f):
31
SettingWidget(setting, parent, f),
32
m_ui(new Ui::OpenswanWidget),
35
qDBusRegisterMetaType<NMStringMap>();
39
connect(m_ui->cbUsernamePasswordMode, SIGNAL(currentIndexChanged(int)), SLOT(userPasswordTypeChanged(int)));
40
connect(m_ui->cbGroupPasswordMode, SIGNAL(currentIndexChanged(int)), SLOT(groupPasswordTypeChanged(int)));
42
connect(m_ui->ckShowPasswords, SIGNAL(toggled(bool)), SLOT(showPassword(bool)));
44
connect(m_ui->gateway, SIGNAL(textChanged(QString)), SLOT(slotWidgetChanged()));
45
connect(m_ui->groupname, SIGNAL(textChanged(QString)), SLOT(slotWidgetChanged()));
47
KAcceleratorManager::manage(this);
53
OpenswanWidget::~OpenswanWidget()
58
void OpenswanWidget::loadConfig(const NetworkManager::Setting::Ptr &setting)
62
const NMStringMap data = m_setting->data();
63
const NMStringMap secrets = m_setting->secrets();
65
const QString gateway = data.value(NM_OPENSWAN_RIGHT);
66
if (!gateway.isEmpty()) {
67
m_ui->gateway->setText(gateway);
70
const QString groupName = data.value(NM_OPENSWAN_LEFTID);
71
if (!groupName.isEmpty()) {
72
m_ui->groupname->setText(groupName);
75
const QString userPassword = secrets.value(NM_OPENSWAN_XAUTH_PASSWORD);
76
if (!userPassword.isEmpty()) {
77
m_ui->userPassword->setText(userPassword);
80
const QString groupPassword = secrets.value(NM_OPENSWAN_PSK_VALUE);
81
if (!groupPassword.isEmpty()) {
82
m_ui->groupPassword->setText(groupPassword);
85
const QString userPasswordMode = data.value(NM_OPENSWAN_XAUTH_PASSWORD_INPUT_MODES);
86
if (userPasswordMode == NM_OPENSWAN_PW_TYPE_SAVE) {
87
m_ui->cbUsernamePasswordMode->setCurrentIndex(0);
88
} else if (userPasswordMode == NM_OPENSWAN_PW_TYPE_ASK) {
89
m_ui->cbUsernamePasswordMode->setCurrentIndex(1);
90
} else if (userPasswordMode == NM_OPENSWAN_PW_TYPE_UNUSED) {
91
m_ui->cbUsernamePasswordMode->setCurrentIndex(2);
94
const QString groupPasswordMode = data.value(NM_OPENSWAN_PSK_INPUT_MODES);
95
if (groupPasswordMode == NM_OPENSWAN_PW_TYPE_SAVE) {
96
m_ui->cbGroupPasswordMode->setCurrentIndex(0);
97
} else if (groupPasswordMode == NM_OPENSWAN_PW_TYPE_ASK) {
98
m_ui->cbGroupPasswordMode->setCurrentIndex(1);
99
} else if (groupPasswordMode == NM_OPENSWAN_PW_TYPE_UNUSED) {
100
m_ui->cbGroupPasswordMode->setCurrentIndex(2);
103
const QString username = data.value(NM_OPENSWAN_LEFTXAUTHUSER);
104
if (!username.isEmpty()) {
105
m_ui->username->setText(username);
108
const QString phase1 = data.value(NM_OPENSWAN_IKE);
109
if (!phase1.isEmpty()) {
110
m_ui->phase1->setText(phase1);
113
const QString phase2 = data.value(NM_OPENSWAN_ESP);
114
if (!phase2.isEmpty()) {
115
m_ui->phase2->setText(phase2);
118
const QString domain = data.value(NM_OPENSWAN_DOMAIN);
119
if (!domain.isEmpty()) {
120
m_ui->domain->setText(domain);
124
QVariantMap OpenswanWidget::setting(bool agentOwned) const
126
NetworkManager::VpnSetting setting;
127
setting.setServiceType(QLatin1String(NM_DBUS_SERVICE_OPENSWAN));
131
if (!m_ui->gateway->text().isEmpty()) {
132
data.insert(NM_OPENSWAN_RIGHT, m_ui->gateway->text());
135
if (!m_ui->groupname->text().isEmpty()) {
136
data.insert(NM_OPENSWAN_LEFTID, m_ui->groupname->text());
139
if (!m_ui->userPassword->text().isEmpty()) {
140
secrets.insert(NM_OPENSWAN_XAUTH_PASSWORD, m_ui->userPassword->text());
143
const int usernamePasswordMode = m_ui->cbUsernamePasswordMode->currentIndex();
144
if (usernamePasswordMode == 0) {
145
data.insert(NM_OPENSWAN_XAUTH_PASSWORD_INPUT_MODES, NM_OPENSWAN_PW_TYPE_SAVE);
147
data.insert(NM_OPENSWAN_XAUTH_PASSWORD"-flags", QString::number(NetworkManager::Setting::AgentOwned));
149
data.insert(NM_OPENSWAN_XAUTH_PASSWORD"-flags", QString::number(NetworkManager::Setting::None));
151
} else if (usernamePasswordMode == 1) {
152
data.insert(NM_OPENSWAN_XAUTH_PASSWORD_INPUT_MODES, NM_OPENSWAN_PW_TYPE_ASK);
153
data.insert(NM_OPENSWAN_XAUTH_PASSWORD"-flags", QString::number(NetworkManager::Setting::NotSaved));
155
data.insert(NM_OPENSWAN_XAUTH_PASSWORD_INPUT_MODES, NM_OPENSWAN_PW_TYPE_UNUSED);
156
data.insert(NM_OPENSWAN_XAUTH_PASSWORD"-flags", QString::number(NetworkManager::Setting::NotRequired));
159
if (!m_ui->groupPassword->text().isEmpty()) {
160
secrets.insert(NM_OPENSWAN_PSK_VALUE, m_ui->groupPassword->text());
163
const int groupPasswordMode = m_ui->cbGroupPasswordMode->currentIndex();
164
if (groupPasswordMode == 0) {
165
data.insert(NM_OPENSWAN_PSK_INPUT_MODES, NM_OPENSWAN_PW_TYPE_SAVE);
167
data.insert(NM_OPENSWAN_PSK_VALUE"-flags", QString::number(NetworkManager::Setting::AgentOwned));
169
data.insert(NM_OPENSWAN_PSK_VALUE"-flags", QString::number(NetworkManager::Setting::None));
171
} else if (groupPasswordMode == 1) {
172
data.insert(NM_OPENSWAN_PSK_INPUT_MODES, NM_OPENSWAN_PW_TYPE_ASK);
173
data.insert(NM_OPENSWAN_PSK_VALUE"-flags", QString::number(NetworkManager::Setting::NotSaved));
175
data.insert(NM_OPENSWAN_PSK_INPUT_MODES, NM_OPENSWAN_PW_TYPE_UNUSED);
176
data.insert(NM_OPENSWAN_PSK_VALUE"-flags", QString::number(NetworkManager::Setting::NotRequired));
179
if (!m_ui->username->text().isEmpty()) {
180
data.insert(NM_OPENSWAN_LEFTXAUTHUSER, m_ui->username->text());
183
if (!m_ui->phase1->text().isEmpty()) {
184
data.insert(NM_OPENSWAN_IKE, m_ui->phase1->text());
187
if (!m_ui->phase2->text().isEmpty()) {
188
data.insert(NM_OPENSWAN_ESP, m_ui->phase2->text());
191
if (!m_ui->domain->text().isEmpty()) {
192
data.insert(NM_OPENSWAN_DOMAIN, m_ui->domain->text());
195
setting.setData(data);
196
setting.setSecrets(secrets);
197
return setting.toMap();
200
void OpenswanWidget::userPasswordTypeChanged(int index)
202
if (index == 1 || index == 2) {
203
m_ui->userPassword->setEnabled(false);
205
m_ui->userPassword->setEnabled(true);
209
void OpenswanWidget::groupPasswordTypeChanged(int index)
211
if (index == 1 || index == 2) {
212
m_ui->groupPassword->setEnabled(false);
214
m_ui->groupPassword->setEnabled(true);
218
void OpenswanWidget::showPassword(bool show)
220
m_ui->userPassword->setPasswordMode(!show);
221
m_ui->groupPassword->setPasswordMode(!show);
224
bool OpenswanWidget::isValid() const
226
return !m_ui->gateway->text().isEmpty() && !m_ui->groupname->text().isEmpty();