[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [networkmanagement/nm09] /: add support for vpnc hybrid auth
From:       Ilia Kats <ilia-kats () gmx ! net>
Date:       2011-07-16 17:03:24
Message-ID: 20110716170324.131F9A60A6 () git ! kde ! org
[Download RAW message or body]

Git commit ad93e757a74a159e59bbb5d54c39b63b3224a7cc by Ilia Kats.
Committed on 16/07/2011 at 18:36.
Pushed by iliakats into branch 'nm09'.

add support for vpnc hybrid auth

This was finally introduced upstream in network-manager-vpnc commit
efd8ae88aa8d4e91168645f57233ce10bd36cc9f

BUG: 219118

M  +15   -1    vpnplugins/vpnc/vpnc.cpp
M  +1    -1    plasma_nm_version.h
M  +11   -0    vpnplugins/vpnc/vpncwidget.cpp
M  +81   -34   vpnplugins/vpnc/vpncprop.ui
M  +2    -0    vpnplugins/vpnc/nm-vpnc-service.h

http://commits.kde.org/networkmanagement/ad93e757a74a159e59bbb5d54c39b63b3224a7cc

diff --git a/plasma_nm_version.h b/plasma_nm_version.h
index a48263c..8fc4a54 100644
--- a/plasma_nm_version.h
+++ b/plasma_nm_version.h
@@ -1,4 +1,4 @@
 #ifndef PLASMA_NM_VERSION_H
 #define PLASMA_NM_VERSION_H
-static const char * plasmaNmVersion = "nm09-20110712";
+static const char * plasmaNmVersion = "nm09-20110716";
 #endif
diff --git a/vpnplugins/vpnc/nm-vpnc-service.h b/vpnplugins/vpnc/nm-vpnc-service.h
index e68e1ce..1680e3f 100644
--- a/vpnplugins/vpnc/nm-vpnc-service.h
+++ b/vpnplugins/vpnc/nm-vpnc-service.h
@@ -44,6 +44,8 @@
 #define NM_VPNC_KEY_DPD_IDLE_TIMEOUT "DPD idle timeout (our side)"
 #define NM_VPNC_KEY_CISCO_UDP_ENCAPS_PORT "Cisco UDP Encapsulation Port"
 #define NM_VPNC_KEY_LOCAL_PORT "Local Port"
+#define NM_VPNC_KEY_AUTHMODE "IKE Authmode"
+#define NM_VPNC_KEY_CA_FILE "CA-File"
 
 #define NM_VPNC_NATT_MODE_NATT        "natt"
 #define NM_VPNC_NATT_MODE_NONE        "none"
diff --git a/vpnplugins/vpnc/vpnc.cpp b/vpnplugins/vpnc/vpnc.cpp
index e0561cb..58c72ed 100644
--- a/vpnplugins/vpnc/vpnc.cpp
+++ b/vpnplugins/vpnc/vpnc.cpp
@@ -120,6 +120,12 @@ QVariantList VpncUiPlugin::importConnectionSettings(const QString &fileName)
         // Setup cisco-decrypt binary to decrypt the passwords
         QStringList decrArgs;
         QString ciscoDecryptBinary = KStandardDirs::findExe("cisco-decrypt");
+        // at least on Debian, cisco-decrypt is in /usr/lib/vpnc
+        if (ciscoDecryptBinary.isEmpty()) {
+            QFileInfo suspectedBinary(QLatin1String("/usr/lib/vpnc/cisco-decrypt"));
+            if (suspectedBinary.exists() && suspectedBinary.isExecutable())
+                ciscoDecryptBinary = QLatin1String("/usr/lib/vpnc/cisco-decrypt");
+        }
 
         decrPlugin = new VpncUiPluginPrivate();
         decrPlugin->ciscoDecrypt = new KProcess(this);
@@ -185,6 +191,11 @@ QVariantList VpncUiPlugin::importConnectionSettings(const QString &fileName)
         }
         delete decrPlugin;
 
+        // Auth Type
+        if (!cg.readEntry("AuthType").isEmpty() && cg.readEntry("AuthType").toInt() == 5) {
+            data.insert(NM_VPNC_KEY_AUTHMODE, QLatin1String("hybrid"));
+        }
+
         // Optional settings
         // username
         if (!cg.readEntry("Username").isEmpty()) {
@@ -267,7 +278,10 @@ void VpncUiPlugin::exportConnectionSettings(Knm::Connection * connection, const
 
     cg.writeEntry("Description", connection->name());
     cg.writeEntry("Host", data.value(NM_VPNC_KEY_GATEWAY));
-    cg.writeEntry("AuthType", "1");
+    if (data.value(NM_VPNC_KEY_AUTHMODE) == QLatin1String("hybrid"))
+        cg.writeEntry("AuthType", "5");
+    else
+        cg.writeEntry("AuthType", "1");
     cg.writeEntry("GroupName", data.value(NM_VPNC_KEY_ID));
     //cg.writeEntry("GroupPwd", secretData.value(NM_VPNC_KEY_SECRET));
     //cg.writeEntry("UserPassword", secretData.value(NM_VPNC_KEY_XAUTH_PASSWORD));
diff --git a/vpnplugins/vpnc/vpncprop.ui b/vpnplugins/vpnc/vpncprop.ui
index 2c8d5a9..6eb6d12 100644
--- a/vpnplugins/vpnc/vpncprop.ui
+++ b/vpnplugins/vpnc/vpncprop.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>402</width>
-    <height>401</height>
+    <height>421</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -36,22 +36,6 @@
       <item row="0" column="1">
        <widget class="KLineEdit" name="leGateway"/>
       </item>
-      <item row="1" column="0">
-       <widget class="QLabel" name="labelGroup">
-        <property name="text">
-         <string>Group name:</string>
-        </property>
-        <property name="wordWrap">
-         <bool>false</bool>
-        </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_2">
         <property name="text">
@@ -95,7 +79,7 @@
         </item>
        </layout>
       </item>
-      <item row="3" column="0">
+      <item row="4" column="0">
        <widget class="QLabel" name="label_3">
         <property name="text">
          <string>&amp;Group Password:</string>
@@ -105,7 +89,7 @@
         </property>
        </widget>
       </item>
-      <item row="3" column="1">
+      <item row="4" column="1">
        <layout class="QHBoxLayout" name="horizontalLayout_2">
         <item>
          <widget class="KLineEdit" name="leGroupPassword">
@@ -138,7 +122,7 @@
         </item>
        </layout>
       </item>
-      <item row="4" column="1">
+      <item row="5" column="1">
        <widget class="QCheckBox" name="cbShowPasswords">
         <property name="text">
          <string>&amp;Hide passwords</string>
@@ -148,16 +132,41 @@
         </property>
        </widget>
       </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox_2">
-     <property name="title">
-      <string>Optional</string>
-     </property>
-     <layout class="QFormLayout" name="formLayout_2">
-      <item row="0" column="0">
+      <item row="6" column="0" colspan="2">
+       <widget class="QCheckBox" name="cbUseHybridAuth">
+        <property name="text">
+         <string>Use hybrid authentication</string>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="0">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>CA File:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="1">
+       <widget class="KUrlRequester" name="leCaCertPath">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0">
+       <widget class="QLabel" name="labelGroup">
+        <property name="text">
+         <string>Group name:</string>
+        </property>
+        <property name="wordWrap">
+         <bool>false</bool>
+        </property>
+        <property name="buddy">
+         <cstring>leGroupName</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
        <widget class="QLabel" name="label_5">
         <property name="text">
          <string>&amp;Username:</string>
@@ -167,9 +176,24 @@
         </property>
        </widget>
       </item>
-      <item row="0" column="1">
+      <item row="3" column="1">
+       <widget class="KLineEdit" name="leGroupName"/>
+      </item>
+      <item row="1" column="1">
        <widget class="KLineEdit" name="leUserName"/>
       </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_2">
+     <property name="title">
+      <string>Optional</string>
+     </property>
+     <layout class="QFormLayout" name="formLayout_2">
+      <property name="fieldGrowthPolicy">
+       <enum>QFormLayout::ExpandingFieldsGrow</enum>
+      </property>
       <item row="1" column="0">
        <widget class="QLabel" name="label_6">
         <property name="text">
@@ -324,6 +348,11 @@
  <layoutdefault spacing="6" margin="11"/>
  <customwidgets>
   <customwidget>
+   <class>KUrlRequester</class>
+   <extends>QFrame</extends>
+   <header>kurlrequester.h</header>
+  </customwidget>
+  <customwidget>
    <class>KLineEdit</class>
    <extends>QLineEdit</extends>
    <header>klineedit.h</header>
@@ -331,18 +360,20 @@
  </customwidgets>
  <tabstops>
   <tabstop>leGateway</tabstop>
-  <tabstop>leGroupName</tabstop>
+  <tabstop>leUserName</tabstop>
   <tabstop>leUserPassword</tabstop>
   <tabstop>cboUserPassOptions</tabstop>
+  <tabstop>leGroupName</tabstop>
   <tabstop>leGroupPassword</tabstop>
   <tabstop>cboGroupPassOptions</tabstop>
-  <tabstop>cbShowPasswords</tabstop>
-  <tabstop>leUserName</tabstop>
+  <tabstop>cbUseHybridAuth</tabstop>
+  <tabstop>leCaCertPath</tabstop>
   <tabstop>leDomain</tabstop>
   <tabstop>cboEncryptionMethod</tabstop>
   <tabstop>cboNatTraversal</tabstop>
   <tabstop>cboDHGroup</tabstop>
   <tabstop>chkDeadPeerDetection</tabstop>
+  <tabstop>cbShowPasswords</tabstop>
  </tabstops>
  <resources/>
  <connections>
@@ -378,5 +409,21 @@
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>cbUseHybridAuth</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leCaCertPath</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>200</x>
+     <y>161</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>252</x>
+     <y>185</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
 </ui>
diff --git a/vpnplugins/vpnc/vpncwidget.cpp b/vpnplugins/vpnc/vpncwidget.cpp
index ef7d773..10b62a3 100644
--- a/vpnplugins/vpnc/vpncwidget.cpp
+++ b/vpnplugins/vpnc/vpncwidget.cpp
@@ -79,6 +79,11 @@ void VpncSettingWidget::readConfig()
     if (!group.isEmpty()) {
         d->ui.leGroupName->setText(group);
     }
+    // hybrid auth
+    if (dataMap[NM_VPNC_KEY_AUTHMODE] == QLatin1String("hybrid")) {
+        d->ui.cbUseHybridAuth->setChecked(true);
+        d->ui.leCaCertPath->setUrl(KUrl(dataMap[NM_VPNC_KEY_CA_FILE]));
+    }
     // password storage type is set in readSecrets
 
     // Optional settings
@@ -181,6 +186,12 @@ void VpncSettingWidget::writeConfig()
     handleOnePasswordType(d->ui.cboUserPassOptions, NM_VPNC_KEY_XAUTH_PASSWORD, secretsType);
     handleOnePasswordType(d->ui.cboGroupPassOptions, NM_VPNC_KEY_SECRET, secretsType);
 
+    // hybrid auth
+    if (d->ui.cbUseHybridAuth->isChecked()) {
+        data.insert(NM_VPNC_KEY_AUTHMODE, QLatin1String("hybrid"));
+        data.insert(NM_VPNC_KEY_CA_FILE, d->ui.leCaCertPath->url().path().toUtf8());
+    }
+
     // Optional settings
     //   username
     if (!d->ui.leUserName->text().isEmpty()) {

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic