[network-manager-vpnc] ui: add 'Vendor' and 'Perfect Forward Secrecy' options to GUI (bgo #666932)
- From: JiÅÃ KlimeÅ <jklimes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [network-manager-vpnc] ui: add 'Vendor' and 'Perfect Forward Secrecy' options to GUI (bgo #666932)
- Date: Tue, 28 Feb 2012 09:48:03 +0000 (UTC)
commit 14733a43a15bba3861f585872986cff4c5136bee
Author: JiÅÃ KlimeÅ <jklimes redhat com>
Date: Mon Feb 27 09:48:23 2012 +0100
ui: add 'Vendor' and 'Perfect Forward Secrecy' options to GUI (bgo #666932)
properties/nm-vpnc-dialog.ui | 90 ++++++++++++++++++++++++++++++++++++-
properties/nm-vpnc.c | 101 +++++++++++++++++++++++++++++++++++++++++-
src/nm-vpnc-service.h | 11 ++++-
3 files changed, 198 insertions(+), 4 deletions(-)
---
diff --git a/properties/nm-vpnc-dialog.ui b/properties/nm-vpnc-dialog.ui
index e29bc66..e321849 100644
--- a/properties/nm-vpnc-dialog.ui
+++ b/properties/nm-vpnc-dialog.ui
@@ -61,6 +61,28 @@
</row>
</data>
</object>
+ <object class="GtkListStore" id="model6">
+ <columns>
+ <!-- column-name gchararray -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0"> </col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="model7">
+ <columns>
+ <!-- column-name gchararray -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0"> </col>
+ </row>
+ </data>
+ </object>
<object class="GtkDialog" id="vpnc-advanced-dialog">
<property name="can_focus">False</property>
<property name="border_width">5</property>
@@ -163,6 +185,38 @@
<property name="y_options"></property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="label28">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Vendor:</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="vendor_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">model6</property>
+ <property name="tooltip_text" translatable="yes">Vendor of your IPsec gateway config: Vendor <cisco/netscreen></property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer6"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
</object>
</child>
</object>
@@ -304,6 +358,38 @@
</packing>
</child>
<child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Perfect Forward Secrecy:</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="pfsecrecy_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">model7</property>
+ <property name="tooltip_text" translatable="yes">Diffie-Hellman group to use for PFS config: Perfect Forward Secrecy <nopfs/dh1/dh2/dh5/server></property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer7"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkCheckButton" id="disable_dpd_checkbutton">
<property name="label" translatable="yes">Disable Dead Peer Detection</property>
<property name="visible">True</property>
@@ -316,8 +402,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
</packing>
</child>
<child>
diff --git a/properties/nm-vpnc.c b/properties/nm-vpnc.c
index 1fa5c70..98f8878 100644
--- a/properties/nm-vpnc.c
+++ b/properties/nm-vpnc.c
@@ -6,7 +6,7 @@
*
* Copyright (C) 2005 David Zeuthen, <davidz redhat com>
* Copyright (C) 2005 - 2008 Dan Williams, <dcbw redhat com>
- * Copyright (C) 2005 - 2011 Red Hat, Inc.
+ * Copyright (C) 2005 - 2012 Red Hat, Inc.
*
* 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
@@ -454,6 +454,8 @@ init_plugin_ui (VpncPluginUiWidget *self,
int active = -1;
const char *natt_mode = NULL;
const char *ike_dh_group = NULL;
+ const char *vendor = NULL;
+ const char *pfs_group = NULL;
gboolean enabled = FALSE;
GtkFileFilter *filter;
@@ -559,6 +561,34 @@ init_plugin_ui (VpncPluginUiWidget *self,
}
g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self);
+ /* Vendor combo */
+ active = -1;
+ store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+ if (s_vpn)
+ vendor = nm_setting_vpn_get_data_item (s_vpn, NM_VPNC_KEY_VENDOR);
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("Cisco (default)"), 1, NM_VPNC_VENDOR_CISCO, -1);
+ if ((active < 0) && vendor) {
+ if (!strcmp (vendor, NM_VPNC_VENDOR_CISCO))
+ active = 0;
+ }
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("Netscreen"), 1, NM_VPNC_VENDOR_NETSCREEN, -1);
+ if ((active < 0) && vendor) {
+ if (!strcmp (vendor, NM_VPNC_VENDOR_NETSCREEN))
+ active = 1;
+ }
+
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "vendor_combo"));
+ g_return_val_if_fail (widget != NULL, FALSE);
+ gtk_size_group_add_widget (priv->group, GTK_WIDGET (widget));
+ gtk_combo_box_set_model (GTK_COMBO_BOX (widget), GTK_TREE_MODEL (store));
+ g_object_unref (store);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (widget), active < 0 ? 0 : active);
+ g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self);
+
active = -1;
store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
if (s_vpn)
@@ -652,6 +682,55 @@ init_plugin_ui (VpncPluginUiWidget *self,
}
g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (stuff_changed_cb), self);
+ /* Perfect Forward Secrecy combo */
+ active = -1;
+ store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+ if (s_vpn)
+ pfs_group = nm_setting_vpn_get_data_item (s_vpn, NM_VPNC_KEY_PERFECT_FORWARD);
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("Server (default)"), 1, NM_VPNC_PFS_SERVER, -1);
+ if ((active < 0) && pfs_group) {
+ if (!strcmp (pfs_group, NM_VPNC_PFS_SERVER))
+ active = 0;
+ }
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("None"), 1, NM_VPNC_PFS_NOPFS, -1);
+ if ((active < 0) && pfs_group) {
+ if (!strcmp (pfs_group, NM_VPNC_PFS_NOPFS))
+ active = 1;
+ }
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("DH Group 1"), 1, NM_VPNC_PFS_DH1, -1);
+ if ((active < 0) && pfs_group) {
+ if (!strcmp (pfs_group, NM_VPNC_PFS_DH1))
+ active = 2;
+ }
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("DH Group 2"), 1, NM_VPNC_PFS_DH2, -1);
+ if ((active < 0) && pfs_group) {
+ if (!strcmp (pfs_group, NM_VPNC_PFS_DH2))
+ active = 3;
+ }
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("DH Group 5"), 1, NM_VPNC_PFS_DH5, -1);
+ if ((active < 0) && pfs_group) {
+ if (!strcmp (pfs_group, NM_VPNC_PFS_DH5))
+ active = 4;
+ }
+
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "pfsecrecy_combo"));
+ g_return_val_if_fail (widget != NULL, FALSE);
+ gtk_size_group_add_widget (priv->group, GTK_WIDGET (widget));
+ gtk_combo_box_set_model (GTK_COMBO_BOX (widget), GTK_TREE_MODEL (store));
+ g_object_unref (store);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (widget), active < 0 ? 0 : active);
+ g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self);
+
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "show_passwords_checkbutton"));
g_return_val_if_fail (widget != NULL, FALSE);
g_signal_connect (G_OBJECT (widget), "toggled",
@@ -810,6 +889,16 @@ update_connection (NMVpnPluginUiWidgetInterface *iface,
if (str && strlen (str))
nm_setting_vpn_add_data_item (s_vpn, NM_VPNC_KEY_DOMAIN, str);
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "vendor_combo"));
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter)) {
+ const char *vendor = NULL;
+
+ gtk_tree_model_get (model, &iter, 1, &vendor, -1);
+ nm_setting_vpn_add_data_item (s_vpn, NM_VPNC_KEY_VENDOR, vendor);
+ } else
+ nm_setting_vpn_add_data_item (s_vpn, NM_VPNC_KEY_VENDOR, NM_VPNC_VENDOR_CISCO);
+
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "encryption_combo"));
switch (gtk_combo_box_get_active (GTK_COMBO_BOX (widget))) {
case ENC_TYPE_WEAK:
@@ -843,6 +932,16 @@ update_connection (NMVpnPluginUiWidgetInterface *iface,
} else
nm_setting_vpn_add_data_item (s_vpn, NM_VPNC_KEY_DHGROUP, NM_VPNC_DHGROUP_DH2);
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "pfsecrecy_combo"));
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter)) {
+ const char *pfs = NULL;
+
+ gtk_tree_model_get (model, &iter, 1, &pfs, -1);
+ nm_setting_vpn_add_data_item (s_vpn, NM_VPNC_KEY_PERFECT_FORWARD, pfs);
+ } else
+ nm_setting_vpn_add_data_item (s_vpn, NM_VPNC_KEY_PERFECT_FORWARD, NM_VPNC_PFS_SERVER);
+
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "disable_dpd_checkbutton"));
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
nm_setting_vpn_add_data_item (s_vpn, NM_VPNC_KEY_DPD_IDLE_TIMEOUT, "0");
diff --git a/src/nm-vpnc-service.h b/src/nm-vpnc-service.h
index cf9b6ea..a1d0088 100644
--- a/src/nm-vpnc-service.h
+++ b/src/nm-vpnc-service.h
@@ -15,7 +15,7 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
- * (C) Copyright 2005 - 2011 Red Hat, Inc.
+ * (C) Copyright 2005 - 2012 Red Hat, Inc.
* (C) Copyright 2007 - 2008 Novell, Inc.
*/
@@ -71,6 +71,15 @@
#define NM_VPNC_DHGROUP_DH2 "dh2"
#define NM_VPNC_DHGROUP_DH5 "dh5"
+#define NM_VPNC_PFS_SERVER "server"
+#define NM_VPNC_PFS_NOPFS "nopfs"
+#define NM_VPNC_PFS_DH1 "dh1"
+#define NM_VPNC_PFS_DH2 "dh2"
+#define NM_VPNC_PFS_DH5 "dh5"
+
+#define NM_VPNC_VENDOR_CISCO "cisco"
+#define NM_VPNC_VENDOR_NETSCREEN "netscreen"
+
typedef struct {
NMVPNPlugin parent;
} NMVPNCPlugin;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]