File add-novellvpn-plugin.diff of Package NetworkManager-kde4
Index: vpnplugins/novellvpn/nm-novellvpn-service.h
===================================================================
--- vpnplugins/novellvpn/nm-novellvpn-service.h (revision 0)
+++ vpnplugins/novellvpn/nm-novellvpn-service.h (revision 0)
@@ -0,0 +1,83 @@
+/* nm-novellvpn-service - novellvpn integration with NetworkManager
+ *
+ * Authors:
+ * Bin Li <bili@novell.com>
+ * Sureshkumar T <tsureshkumar@novell.com>
+ *
+ * Based on work by Dan Williams <dcbw@redhat.com>
+ * Tim Niemueller <tim@niemueller.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifndef NM_NOVELLVPN_SERVICE_H
+#define NM_NOVELLVPN_SERVICE_H
+
+/*
+ Do not change numbers, only add if needed!
+ See properties/nm-novellvpn.c:connection_type_changed() for details
+ */
+
+#define NM_DBUS_SERVICE_NOVELLVPN "org.freedesktop.NetworkManager.novellvpn"
+#define NM_DBUS_INTERFACE_NOVELLVPN "org.freedesktop.NetworkManager.novellvpn"
+#define NM_DBUS_PATH_NOVELLVPN "/org/freedesktop/NetworkManager/novellvpn"
+
+#define NM_NOVELLVPN_CONTYPE_INVALID -1
+#define NM_NOVELLVPN_CONTYPE_GROUPAUTH 0
+#define NM_NOVELLVPN_CONTYPE_X509 1
+
+#define NM_NOVELLVPN_KEY_GWTYPE "gateway-type"
+#define NM_NOVELLVPN_KEY_AUTHTYPE "auth-type"
+#define NM_NOVELLVPN_KEY_NAME "name"
+#define NM_NOVELLVPN_KEY_GATEWAY "remote"
+#define NM_NOVELLVPN_KEY_USER_NAME "username"
+#define NM_NOVELLVPN_KEY_GROUP_NAME "group-name"
+#define NM_NOVELLVPN_KEY_DHGROUP "dhgroup"
+#define NM_NOVELLVPN_KEY_PFSGROUP "pfsgroup"
+#define NM_NOVELLVPN_KEY_CERTIFICATE "certificate"
+#define NM_NOVELLVPN_KEY_NOSPLITTUNNEL "nosplittunnel"
+
+#define NM_NOVELLVPN_KEY_HOW_MANY_PWD "how_many_passwords"
+#define NM_NOVELLVPN_KEY_USER_PWD "unenc-user-password"
+#define NM_NOVELLVPN_KEY_GRP_PWD "unenc-group-password"
+#define NM_NOVELLVPN_KEY_ENC_GRP_PWD "enc-group-password"
+#define NM_NOVELLVPN_KEY_CERT_PWD "unenc-cert-password"
+
+#define NM_NOVELLVPN_GWTYPE_NORTEL_STRING "nortel"
+#define NM_NOVELLVPN_GWTYPE_STDGW_STRING "standard-gateway"
+#define NM_NOVELLVPN_CONTYPE_GROUPAUTH_STRING "XAUTH"
+#define NM_NOVELLVPN_CONTYPE_X509_STRING "X.509"
+
+
+#define NM_NOVELLVPN_GWTYPE_INVALID -1
+#define NM_NOVELLVPN_GWTYPE_NORTEL 0
+#define NM_NOVELLVPN_GWTYPE_STDGW 1
+
+typedef enum {
+ DHGROUP_INVALID = -1,
+ DHGROUP_DH1 = 0,
+ DHGROUP_DH2
+} DHGroup;
+
+
+typedef enum {
+ PFSGROUP_INVALID = -1,
+ PFSGROUP_OFF = 0,
+ PFSGROUP_PFS1,
+ PFSGROUP_PFS2
+} PFSGroup;
+
+#endif
Index: vpnplugins/novellvpn/networkmanagement_novellvpnui.desktop
===================================================================
--- vpnplugins/novellvpn/networkmanagement_novellvpnui.desktop (revision 0)
+++ vpnplugins/novellvpn/networkmanagement_novellvpnui.desktop (revision 0)
@@ -0,0 +1,18 @@
+[Desktop Entry]
+Type=Service
+Icon=
+ServiceTypes=NetworkManagement/VpnUiPlugin
+X-KDE-Library=networkmanagement_novellvpnui
+X-NetworkManager-Services=novellvpn
+X-KDE-PluginInfo-Author=Will Stephenson
+X-KDE-PluginInfo-Email=wstephenson@kde.org
+X-KDE-PluginInfo-Name=networkmanagement_novellvpnui
+X-KDE-PluginInfo-Version=0.1
+X-KDE-PluginInfo-Website=
+X-KDE-PluginInfo-Category=VPNService
+X-KDE-PluginInfo-Depends=
+X-KDE-PluginInfo-License=GPL
+X-KDE-PluginInfo-EnabledByDefault=false
+Name=Novell VPN (turnpike)
+Comment=Enables KNetworkManager to connect to Novell VPN (turnpike) VPNs.
+
Index: vpnplugins/novellvpn/novellvpnprop.ui
===================================================================
--- vpnplugins/novellvpn/novellvpnprop.ui (revision 0)
+++ vpnplugins/novellvpn/novellvpnprop.ui (revision 0)
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>NovellVpnWidget</class>
+ <widget class="QWidget" name="NovellVpnWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>336</width>
+ <height>382</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Novell VPN</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>General</string>
+ </property>
+ <layout class="QFormLayout" name="formLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>&Gateway:</string>
+ </property>
+ <property name="buddy">
+ <cstring>leGateway</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="KLineEdit" name="leGateway"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Gate&way Type:</string>
+ </property>
+ <property name="buddy">
+ <cstring>cmbGwType</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="cmbGwType">
+ <item>
+ <property name="text">
+ <string>Nortel</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Standard Gateway</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Authentication</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>&Type:</string>
+ </property>
+ <property name="buddy">
+ <cstring>cmbAuthType</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="cmbAuthType">
+ <item>
+ <property name="text">
+ <string>XAUTH</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>X.509</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QStackedWidget" name="authTypeStack">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="page">
+ <layout class="QFormLayout" name="formLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>&User Name:</string>
+ </property>
+ <property name="buddy">
+ <cstring>leUserName</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="KLineEdit" name="leUserName"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>&Group Name:</string>
+ </property>
+ <property name="buddy">
+ <cstring>leGroupName</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="KLineEdit" name="leGroupName"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>U&ser Password:</string>
+ </property>
+ <property name="buddy">
+ <cstring>leUserPass</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="KLineEdit" name="leUserPass">
+ <property name="passwordMode">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>G&roup Password:</string>
+ </property>
+ <property name="buddy">
+ <cstring>leGroupPass</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="KLineEdit" name="leGroupPass">
+ <property name="passwordMode">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_2">
+ <layout class="QFormLayout" name="formLayout_3">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string>Certificate &file:</string>
+ </property>
+ <property name="buddy">
+ <cstring>x509Cert</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="KUrlRequester" name="x509Cert"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_14">
+ <property name="text">
+ <string>Certificate &password:</string>
+ </property>
+ <property name="buddy">
+ <cstring>x509CertPass</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="KLineEdit" name="x509CertPass">
+ <property name="passwordMode">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="cbShowPasswords">
+ <property name="text">
+ <string>Show Passwords</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="KPushButton" name="btnAdvanced">
+ <property name="text">
+ <string>Ad&vanced...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>KUrlRequester</class>
+ <extends>QFrame</extends>
+ <header>kurlrequester.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KPushButton</class>
+ <extends>QPushButton</extends>
+ <header>kpushbutton.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KLineEdit</class>
+ <extends>QLineEdit</extends>
+ <header>klineedit.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>cmbAuthType</sender>
+ <signal>currentIndexChanged(int)</signal>
+ <receiver>authTypeStack</receiver>
+ <slot>setCurrentIndex(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>187</x>
+ <y>150</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>45</x>
+ <y>183</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
Index: vpnplugins/novellvpn/novellvpn.cpp
===================================================================
--- vpnplugins/novellvpn/novellvpn.cpp (revision 0)
+++ vpnplugins/novellvpn/novellvpn.cpp (revision 0)
@@ -0,0 +1,47 @@
+/*
+Copyright 2009 Will Stephenson <wstephenson@kde.org>
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of
+the License or (at your option) version 3 or any later version
+accepted by the membership of KDE e.V. (or its successor approved
+by the membership of KDE e.V.), which shall act as a proxy
+defined in Section 14 of version 3 of the license.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "novellvpn.h"
+
+#include <KPluginFactory>
+
+#include "novellvpnwidget.h"
+
+#include "connection.h"
+
+K_PLUGIN_FACTORY( NovellVpnUiPluginFactory, registerPlugin<NovellVpnUiPlugin>(); )
+K_EXPORT_PLUGIN( NovellVpnUiPluginFactory( "networkmanagement_novellvpnui", "libknetworkmanager" ) )
+
+NovellVpnUiPlugin::NovellVpnUiPlugin(QObject * parent, const QVariantList &) : VpnUiPlugin(parent)
+{
+}
+
+NovellVpnUiPlugin::~NovellVpnUiPlugin()
+{
+
+}
+
+SettingWidget * NovellVpnUiPlugin::widget(Knm::Connection * connection, QWidget * parent)
+{
+ NovellVpnSettingWidget * wid = new NovellVpnSettingWidget(connection, parent);
+ return wid;
+}
+
+// vim: sw=4 sts=4 et tw=100
Index: vpnplugins/novellvpn/novellvpnadvancedprop.ui
===================================================================
--- vpnplugins/novellvpn/novellvpnadvancedprop.ui (revision 0)
+++ vpnplugins/novellvpn/novellvpnadvancedprop.ui (revision 0)
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>NovellVpnAdvancedWidget</class>
+ <widget class="QWidget" name="NovellVpnAdvancedWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>156</width>
+ <height>244</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>&DH Group</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QRadioButton" name="rbDh1">
+ <property name="text">
+ <string>768 bits (DH&1)</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="rbDh2">
+ <property name="text">
+ <string>1024 bits (DH&2)</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>&PFS Group</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QRadioButton" name="rbPfOff">
+ <property name="text">
+ <string>&Off</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="rbPf1">
+ <property name="text">
+ <string>&768 bits (PF1)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="rbPf2">
+ <property name="text">
+ <string>102&4 bits (PF2)</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="cbDisableSplit">
+ <property name="text">
+ <string>Disable &split tunnel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
Index: vpnplugins/novellvpn/novellvpnwidget.cpp
===================================================================
--- vpnplugins/novellvpn/novellvpnwidget.cpp (revision 0)
+++ vpnplugins/novellvpn/novellvpnwidget.cpp (revision 0)
@@ -0,0 +1,214 @@
+/*
+Copyright 2009 Will Stephenson <wstephenson@kde.org>
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of
+the License or (at your option) version 3 or any later version
+accepted by the membership of KDE e.V. (or its successor approved
+by the membership of KDE e.V.), which shall act as a proxy
+defined in Section 14 of version 3 of the license.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "novellvpnwidget.h"
+#include "nm-novellvpn-service.h"
+
+#include "settingwidget_p.h"
+
+#include <KDebug>
+#include <KLocale>
+
+#include <nm-setting-vpn.h>
+#include "settings/vpn.h"
+#include "connection.h"
+
+#include "ui_novellvpnprop.h"
+#include "ui_novellvpnadvancedprop.h"
+
+class NovellVpnSettingWidget::Private
+{
+public:
+ Ui_NovellVpnWidget ui;
+ Knm::VpnSetting * setting;
+ Ui_NovellVpnAdvancedWidget advUi;
+ KDialog * advancedDialog;
+};
+
+
+NovellVpnSettingWidget::NovellVpnSettingWidget(Knm::Connection * connection, QWidget * parent)
+: SettingWidget(connection, parent), d(new Private)
+{
+ //setValid(false);
+ d->ui.setupUi(this);
+ d->ui.x509Cert->setMode(KFile::LocalOnly);
+ d->setting = static_cast<Knm::VpnSetting *>(connection->setting(Knm::Setting::Vpn));
+
+ connect(d->ui.leGateway, SIGNAL(textChanged(const QString&)), this, SLOT(validate()));
+ connect(d->ui.cbShowPasswords, SIGNAL(toggled(bool)), this, SLOT(showPasswordsChanged(bool)));
+
+ connect(d->ui.cmbGwType, SIGNAL(currentIndexChanged(int)), this, SLOT(gatewayTypeChanged(int)));
+
+ connect(d->ui.btnAdvanced, SIGNAL(clicked()), this, SLOT(advancedClicked()));
+
+ d->advancedDialog = new KDialog(this);
+ d->advancedDialog->setButtons(KDialog::Ok);
+ d->advancedDialog->setCaption(i18nc("@window:title NovellVPN advanced connection options", "NovellVPN advanced options"));
+ QWidget * advWid = new QWidget(d->advancedDialog);
+ d->advUi.setupUi(advWid);
+ d->advancedDialog->setMainWidget(advWid);
+}
+
+NovellVpnSettingWidget::~NovellVpnSettingWidget()
+{
+ delete d;
+}
+
+void NovellVpnSettingWidget::advancedClicked()
+{
+ d->advancedDialog->exec();
+}
+
+void NovellVpnSettingWidget::gatewayTypeChanged(int gatewayType)
+{
+ if ( gatewayType == 1) {
+ d->ui.cmbAuthType->setCurrentIndex(1);
+ }
+ d->ui.cmbAuthType->setEnabled(gatewayType != 1);
+}
+
+void NovellVpnSettingWidget::showPasswordsChanged(bool show)
+{
+ d->ui.x509CertPass->setPasswordMode(!show);
+ d->ui.leUserPass->setPasswordMode(!show);
+ d->ui.leGroupPass->setPasswordMode(!show);
+}
+
+void NovellVpnSettingWidget::readConfig()
+{
+ kDebug();
+
+ // General settings
+ QStringMap dataMap = d->setting->data();
+
+ d->ui.leGateway->setText( dataMap[NM_NOVELLVPN_KEY_GATEWAY] );
+
+ QString gwType = dataMap[NM_NOVELLVPN_KEY_GWTYPE];
+
+ if (gwType == QLatin1String(NM_NOVELLVPN_GWTYPE_NORTEL_STRING)) {
+ d->ui.cmbGwType->setCurrentIndex(0);
+ QString authType = dataMap[NM_NOVELLVPN_KEY_AUTHTYPE];
+ if (authType == QLatin1String(NM_NOVELLVPN_CONTYPE_GROUPAUTH_STRING)) {
+ d->ui.leUserName->setText(dataMap[NM_NOVELLVPN_KEY_USER_NAME]);
+ d->ui.leGroupName->setText(dataMap[NM_NOVELLVPN_KEY_GROUP_NAME]);
+ } else if (authType == QLatin1String(NM_NOVELLVPN_CONTYPE_X509_STRING)) {
+ readX509Auth(dataMap);
+ }
+ } else if (gwType == QLatin1String(NM_NOVELLVPN_GWTYPE_STDGW_STRING)) {
+ readX509Auth(dataMap);
+ }
+
+ // advanced
+ QString dhGroup = dataMap[QLatin1String(NM_NOVELLVPN_KEY_DHGROUP)];
+ if (dhGroup.toUInt() == 1) {
+ d->advUi.rbDh2->setChecked(true);
+ }
+
+ QString pfsGroup = dataMap[QLatin1String(NM_NOVELLVPN_KEY_PFSGROUP)];
+ if (pfsGroup.toUInt() == PFSGROUP_PFS1) {
+ d->advUi.rbPf1->setChecked(true);
+ } else if (pfsGroup.toUInt() == PFSGROUP_PFS2) {
+ d->advUi.rbPf2->setChecked(true);
+ }
+
+ if (dataMap[QLatin1String(NM_NOVELLVPN_KEY_NOSPLITTUNNEL)] == QLatin1String("yes")) {
+ d->advUi.cbDisableSplit->setChecked(true);
+ }
+}
+
+void NovellVpnSettingWidget::readX509Auth(const QStringMap & dataMap)
+{
+ d->ui.cmbGwType->setCurrentIndex(1);
+ d->ui.x509Cert->setUrl(KUrl(dataMap[NM_NOVELLVPN_KEY_CERTIFICATE]));
+}
+
+void NovellVpnSettingWidget::writeConfig()
+{
+ kDebug();
+
+ d->setting->setServiceType(QLatin1String(NM_DBUS_SERVICE_NOVELLVPN));
+
+ QStringMap data;
+ QVariantMap secretData;
+
+ // required settings
+ data.insert(NM_NOVELLVPN_KEY_GATEWAY, d->ui.leGateway->text());
+
+ if (d->ui.cmbGwType->currentIndex() == 0) {
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_GWTYPE), QLatin1String(NM_NOVELLVPN_GWTYPE_NORTEL_STRING));
+
+ if (d->ui.cmbAuthType->currentIndex() == 0) {
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_AUTHTYPE), QLatin1String(NM_NOVELLVPN_CONTYPE_GROUPAUTH_STRING));
+
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_USER_NAME), d->ui.leUserName->text());
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_GROUP_NAME), d->ui.leGroupName->text());
+ secretData.insert(QLatin1String(NM_NOVELLVPN_KEY_USER_PWD), d->ui.leUserPass->text());
+ secretData.insert(QLatin1String(NM_NOVELLVPN_KEY_GRP_PWD), d->ui.leGroupPass->text());
+ } else {
+ writeX509Auth(data, secretData);
+ }
+ } else {
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_GWTYPE), QLatin1String(NM_NOVELLVPN_GWTYPE_STDGW_STRING));
+ writeX509Auth(data, secretData);
+ }
+
+ // advanced dialog
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_DHGROUP),
+ (d->advUi.rbDh1->isChecked()
+ ? QString::number(DHGROUP_DH1)
+ : QString::number(DHGROUP_DH2)));
+
+ if (d->advUi.rbPfOff->isChecked()) {
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_PFSGROUP), QString::number(PFSGROUP_OFF));
+ } else if (d->advUi.rbPf1->isChecked()) {
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_PFSGROUP), QString::number(PFSGROUP_PFS1));
+ } else {
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_PFSGROUP), QString::number(PFSGROUP_PFS2));
+ }
+
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_NOSPLITTUNNEL), d->advUi.cbDisableSplit->isChecked() ? QLatin1String("yes") : QLatin1String("no"));
+
+ d->setting->setData(data);
+ d->setting->setVpnSecrets(secretData);
+}
+
+void NovellVpnSettingWidget::writeX509Auth(QStringMap & data, QVariantMap & secretData)
+{
+ data.insert(QLatin1String(NM_NOVELLVPN_KEY_AUTHTYPE), QLatin1String(NM_NOVELLVPN_CONTYPE_X509_STRING));
+ data.insert(NM_NOVELLVPN_KEY_CERTIFICATE, d->ui.x509Cert->url().path().toUtf8());
+ secretData.insert(QLatin1String(NM_NOVELLVPN_KEY_CERT_PWD), d->ui.x509CertPass->text());
+}
+
+void NovellVpnSettingWidget::readSecrets()
+{
+ QVariantMap secrets = d->setting->vpnSecrets();
+ kDebug() << "Value of" << NM_NOVELLVPN_KEY_CERT_PWD << secrets.value(QLatin1String(NM_NOVELLVPN_KEY_CERT_PWD)).toString();
+ d->ui.x509CertPass->setText(secrets.value(QLatin1String(NM_NOVELLVPN_KEY_CERT_PWD)).toString());
+ d->ui.leUserPass->setText(secrets.value(QLatin1String(NM_NOVELLVPN_KEY_USER_PWD)).toString());
+ d->ui.leGroupPass->setText(secrets.value(QLatin1String(NM_NOVELLVPN_KEY_GRP_PWD)).toString());
+}
+
+void NovellVpnSettingWidget::validate()
+{
+// setValid(!d->ui.leGateway->text().isEmpty());
+// emit valid(isValid());
+}
+
+// vim: sw=4 sts=4 et tw=100
Index: vpnplugins/novellvpn/novellvpn.h
===================================================================
--- vpnplugins/novellvpn/novellvpn.h (revision 0)
+++ vpnplugins/novellvpn/novellvpn.h (revision 0)
@@ -0,0 +1,42 @@
+/*
+Copyright 2009 Will Stephenson <wstephenson@kde.org>
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of
+the License or (at your option) version 3 or any later version
+accepted by the membership of KDE e.V. (or its successor approved
+by the membership of KDE e.V.), which shall act as a proxy
+defined in Section 14 of version 3 of the license.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef KNM4_NOVELLVPN_H
+#define KNM4_NOVELLVPN_H
+
+#include "vpnuiplugin.h"
+
+#include <QVariant>
+
+namespace Knm
+{
+ class Connection;
+} // namespace Knm
+
+class NovellVpnUiPlugin : public VpnUiPlugin
+{
+Q_OBJECT
+public:
+ NovellVpnUiPlugin(QObject * parent = 0, const QVariantList& = QVariantList());
+ virtual ~NovellVpnUiPlugin();
+ SettingWidget * widget(Knm::Connection *, QWidget * parent = 0);
+};
+
+#endif // KNM4_NOVELLVPN_H
Index: vpnplugins/novellvpn/CMakeLists.txt
===================================================================
--- vpnplugins/novellvpn/CMakeLists.txt (revision 0)
+++ vpnplugins/novellvpn/CMakeLists.txt (revision 0)
@@ -0,0 +1,19 @@
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/ui)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../libs)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/internals)
+
+set(novellvpn_SRCS
+ novellvpn.cpp
+ novellvpnwidget.cpp
+ )
+
+kde4_add_ui_files(novellvpn_SRCS novellvpnprop.ui novellvpnadvancedprop.ui)
+
+kde4_add_plugin(networkmanagement_novellvpnui ${novellvpn_SRCS})
+
+target_link_libraries(networkmanagement_novellvpnui ${KDE4_KIO_LIBS} knmui knminternals )
+
+install(TARGETS networkmanagement_novellvpnui DESTINATION ${PLUGIN_INSTALL_DIR})
+
+install( FILES networkmanagement_novellvpnui.desktop DESTINATION ${SERVICES_INSTALL_DIR})
+
Index: vpnplugins/novellvpn/novellvpnwidget.h
===================================================================
--- vpnplugins/novellvpn/novellvpnwidget.h (revision 0)
+++ vpnplugins/novellvpn/novellvpnwidget.h (revision 0)
@@ -0,0 +1,56 @@
+/*
+Copyright 2009 Will Stephenson <wstephenson@kde.org>
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of
+the License or (at your option) version 3 or any later version
+accepted by the membership of KDE e.V. (or its successor approved
+by the membership of KDE e.V.), which shall act as a proxy
+defined in Section 14 of version 3 of the license.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef NOVELLVPNWIDGET_H
+#define NOVELLVPNWIDGET_H
+
+#include "settingwidget.h"
+
+#include <types.h>
+
+namespace Knm
+{
+ class Connection;
+} // namespace Knm
+
+class NovellVpnSettingWidget : public SettingWidget
+{
+Q_OBJECT
+public:
+ NovellVpnSettingWidget(Knm::Connection *, QWidget * parent = 0);
+ ~NovellVpnSettingWidget();
+ void readConfig();
+ void writeConfig();
+ void readSecrets();
+protected Q_SLOTS:
+ void validate();
+
+ void advancedClicked();
+
+ void gatewayTypeChanged(int);
+ void showPasswordsChanged(bool);
+private:
+ void readX509Auth(const QStringMap &);
+ void writeX509Auth(QStringMap & data, QVariantMap & secretData);
+ class Private;
+ Private * d;
+};
+
+#endif // NOVELLVPNWIDGET_H
Index: vpnplugins/CMakeLists.txt
===================================================================
--- vpnplugins/CMakeLists.txt (revision 1043876)
+++ vpnplugins/CMakeLists.txt (working copy)
@@ -1,3 +1,4 @@
add_subdirectory(openvpn)
+add_subdirectory(novellvpn)
add_subdirectory(pptp)
add_subdirectory(vpnc)