network-manager-applet r681 - in trunk: . src/connection-editor



Author: dcbw
Date: Thu Apr 17 02:15:13 2008
New Revision: 681
URL: http://svn.gnome.org/viewvc/network-manager-applet?rev=681&view=rev

Log:
2008-04-16  Dan Williams  <dcbw redhat com>

	* src/connection-editor/page-dsl.c
	  src/connection-editor/page-mobile.c
		- fetch secrets from the keyring to populate entries with



Modified:
   trunk/ChangeLog
   trunk/src/connection-editor/page-dsl.c
   trunk/src/connection-editor/page-mobile.c

Modified: trunk/src/connection-editor/page-dsl.c
==============================================================================
--- trunk/src/connection-editor/page-dsl.c	(original)
+++ trunk/src/connection-editor/page-dsl.c	Thu Apr 17 02:15:13 2008
@@ -30,6 +30,7 @@
 
 #include "page-dsl.h"
 #include "nm-connection-editor.h"
+#include "gconf-helpers.h"
 
 G_DEFINE_TYPE (CEPageDsl, ce_page_dsl, CE_TYPE_PAGE)
 
@@ -59,16 +60,40 @@
 }
 
 static void
-populate_ui (CEPageDsl *self)
+populate_ui (CEPageDsl *self, NMConnection *connection)
 {
 	CEPageDslPrivate *priv = CE_PAGE_DSL_GET_PRIVATE (self);
 	NMSettingPPPOE *setting = priv->setting;
+	char *password = setting->password;
+	const char *connection_id;
+	GHashTable *secrets = NULL;
 
 	if (setting->username)
 		gtk_entry_set_text (priv->username, setting->username);
 
-	if (setting->password)
-		gtk_entry_set_text (priv->password, setting->password);
+	/* Grab password from keyring if possible */
+	connection_id = g_object_get_data (G_OBJECT (connection), NMA_CONNECTION_ID_TAG);
+	if (!password && connection_id) {
+		GError *error = NULL;
+		GValue *value;
+
+		secrets = nm_gconf_get_keyring_items (connection, connection_id,
+		                                      nm_setting_get_name (NM_SETTING (priv->setting)),
+		                                      FALSE,
+		                                      &error);
+		if (secrets) {
+			value = g_hash_table_lookup (secrets, NM_SETTING_PPPOE_PASSWORD);
+			if (value)
+				password = (char *) g_value_get_string (value);
+		} else
+			g_error_free (error);
+	}
+
+	if (password)
+		gtk_entry_set_text (priv->password, password);
+
+	if (secrets)
+		g_hash_table_destroy (secrets);
 
 	if (setting->service)
 		gtk_entry_set_text (priv->service, setting->service);
@@ -125,7 +150,7 @@
 	else
 		priv->setting = NM_SETTING_PPPOE (nm_setting_pppoe_new ());
 
-	populate_ui (self);
+	populate_ui (self, connection);
 
 	g_signal_connect (priv->username, "changed", G_CALLBACK (stuff_changed), self);
 	g_signal_connect (priv->password, "changed", G_CALLBACK (stuff_changed), self);

Modified: trunk/src/connection-editor/page-mobile.c
==============================================================================
--- trunk/src/connection-editor/page-mobile.c	(original)
+++ trunk/src/connection-editor/page-mobile.c	Thu Apr 17 02:15:13 2008
@@ -31,6 +31,7 @@
 
 #include "page-mobile.h"
 #include "nm-connection-editor.h"
+#include "gconf-helpers.h"
 
 G_DEFINE_TYPE (CEPageMobile, ce_page_mobile, CE_TYPE_PAGE)
 
@@ -82,12 +83,35 @@
 	priv->puk = GTK_ENTRY (glade_xml_get_widget (xml, "mobile_puk"));
 }
 
+static GHashTable *
+get_secrets (NMConnection *connection, const char *setting_name)
+{
+	const char *connection_id;
+	GError *error = NULL;
+	GHashTable *secrets;
+
+	connection_id = g_object_get_data (G_OBJECT (connection), NMA_CONNECTION_ID_TAG);
+	if (!connection_id)
+		return NULL;
+
+	secrets = nm_gconf_get_keyring_items (connection, connection_id,
+	                                      setting_name,
+	                                      FALSE,
+	                                      &error);
+	if (!secrets)
+		g_error_free (error);
+
+	return secrets;
+}
+
 static void
-populate_gsm_ui (CEPageMobile *self)
+populate_gsm_ui (CEPageMobile *self, NMConnection *connection)
 {
 	CEPageMobilePrivate *priv = CE_PAGE_MOBILE_GET_PRIVATE (self);
 	NMSettingGsm *setting = NM_SETTING_GSM (priv->setting);
 	int type_idx;
+	GHashTable *secrets;
+	GValue *value;
 
 	if (setting->number)
 		gtk_entry_set_text (priv->number, setting->number);
@@ -95,9 +119,6 @@
 	if (setting->username)
 		gtk_entry_set_text (priv->username, setting->username);
 
-	if (setting->password)
-		gtk_entry_set_text (priv->password, setting->password);
-
 	if (setting->apn)
 		gtk_entry_set_text (priv->apn, setting->apn);
 
@@ -126,18 +147,43 @@
 
 	/* FIXME:  band */
 
+	secrets = get_secrets (connection, nm_setting_get_name (priv->setting));
+
+	if (setting->password)
+		gtk_entry_set_text (priv->password, setting->password);
+	else if (secrets) {
+		value = g_hash_table_lookup (secrets, NM_SETTING_GSM_PASSWORD);
+		if (value)
+			gtk_entry_set_text (priv->password, g_value_get_string (value));
+	}
+
 	if (setting->pin)
 		gtk_entry_set_text (priv->pin, setting->pin);
+	else if (secrets) {
+		value = g_hash_table_lookup (secrets, NM_SETTING_GSM_PIN);
+		if (value)
+			gtk_entry_set_text (priv->pin, g_value_get_string (value));
+	}
 
 	if (setting->puk)
 		gtk_entry_set_text (priv->pin, setting->puk);
+	else if (secrets) {
+		value = g_hash_table_lookup (secrets, NM_SETTING_GSM_PUK);
+		if (value)
+			gtk_entry_set_text (priv->puk, g_value_get_string (value));
+	}
+
+	if (secrets)
+		g_hash_table_destroy (secrets);
 }
 
 static void
-populate_cdma_ui (CEPageMobile *self)
+populate_cdma_ui (CEPageMobile *self, NMConnection *connection)
 {
 	CEPageMobilePrivate *priv = CE_PAGE_MOBILE_GET_PRIVATE (self);
 	NMSettingCdma *setting = NM_SETTING_CDMA (priv->setting);
+	GHashTable *secrets;
+	GValue *value;
 
 	if (setting->number)
 		gtk_entry_set_text (priv->number, setting->number);
@@ -145,8 +191,18 @@
 	if (setting->username)
 		gtk_entry_set_text (priv->username, setting->username);
 
+	secrets = get_secrets (connection, nm_setting_get_name (priv->setting));
+
 	if (setting->password)
 		gtk_entry_set_text (priv->password, setting->password);
+	else if (secrets) {
+		value = g_hash_table_lookup (secrets, NM_SETTING_CDMA_PASSWORD);
+		if (value)
+			gtk_entry_set_text (priv->password, g_value_get_string (value));
+	}
+
+	if (secrets)
+		g_hash_table_destroy (secrets);
 
 	/* Hide GSM specific widgets */
 	gtk_widget_hide (glade_xml_get_widget (CE_PAGE (self)->xml, "mobile_basic_label"));
@@ -154,14 +210,14 @@
 }
 
 static void
-populate_ui (CEPageMobile *self)
+populate_ui (CEPageMobile *self, NMConnection *connection)
 {
 	CEPageMobilePrivate *priv = CE_PAGE_MOBILE_GET_PRIVATE (self);
 
 	if (NM_IS_SETTING_GSM (priv->setting))
-		populate_gsm_ui (self);
+		populate_gsm_ui (self, connection);
 	else if (NM_IS_SETTING_CDMA (priv->setting))
-		populate_cdma_ui (self);
+		populate_cdma_ui (self, connection);
 	else
 		g_error ("Invalid setting");
 }
@@ -228,7 +284,7 @@
 	}
 
 	priv->setting = nm_setting_duplicate (setting);
-	populate_ui (self);
+	populate_ui (self, connection);
 
 	g_signal_connect (priv->number, "changed", G_CALLBACK (stuff_changed), self);
 	g_signal_connect (priv->username, "changed", G_CALLBACK (stuff_changed), self);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]