113
113
ENUM_ENTRY (VPNC_PLUGIN_UI_ERROR_INVALID_PROPERTY, "InvalidProperty"),
114
114
/* The specified property was missing and is required. */
115
115
ENUM_ENTRY (VPNC_PLUGIN_UI_ERROR_MISSING_PROPERTY, "MissingProperty"),
116
/* The connection was missing invalid. */
117
ENUM_ENTRY (VPNC_PLUGIN_UI_ERROR_INVALID_CONNECTION, "InvalidConnection"),
118
120
etype = g_enum_register_static ("VpncPluginUiError", values);
169
171
/* Grab secrets from the keyring */
170
172
if (connection) {
171
173
NMSettingConnection *s_con;
173
s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
174
keyring_helpers_lookup_secrets (s_con->uuid, &password, &group_password, NULL);
177
if (nm_connection_get_scope (connection) == NM_CONNECTION_SCOPE_SYSTEM) {
178
s_vpn = (NMSettingVPN *) nm_connection_get_setting (connection, NM_TYPE_SETTING_VPN);
180
tmp = g_hash_table_lookup (s_vpn->secrets, NM_VPNC_KEY_XAUTH_PASSWORD);
182
password = gnome_keyring_memory_strdup (tmp);
184
tmp = g_hash_table_lookup (s_vpn->secrets, NM_VPNC_KEY_SECRET);
186
group_password = gnome_keyring_memory_strdup (tmp);
189
s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
190
keyring_helpers_lookup_secrets (s_con->uuid, &password, &group_password, NULL);
177
194
/* User password */
178
195
widget = glade_xml_get_widget (priv->xml, "user_password_entry");
179
gtk_size_group_add_widget (priv->group, GTK_WIDGET (widget));
183
199
gtk_entry_set_text (GTK_ENTRY (widget), password);
200
gtk_size_group_add_widget (priv->group, GTK_WIDGET (widget));
184
201
g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self);
186
203
/* Group password */
187
204
widget = glade_xml_get_widget (priv->xml, "group_password_entry");
188
gtk_size_group_add_widget (priv->group, GTK_WIDGET (widget));
191
207
if (group_password)
192
208
gtk_entry_set_text (GTK_ENTRY (widget), group_password);
209
gtk_size_group_add_widget (priv->group, GTK_WIDGET (widget));
193
210
g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (stuff_changed_cb), self);
473
490
g_strdup_printf ("%d", priv->orig_dpd_timeout));
493
/* System secrets get stored in the connection, user secrets are saved
494
* via the save_secrets() hook.
496
if (nm_connection_get_scope (connection) == NM_CONNECTION_SCOPE_SYSTEM) {
498
widget = glade_xml_get_widget (priv->xml, "user_password_entry");
499
str = (char *) gtk_entry_get_text (GTK_ENTRY (widget));
500
if (str && strlen (str)) {
501
g_hash_table_insert (s_vpn->secrets,
502
g_strdup (NM_VPNC_KEY_XAUTH_PASSWORD),
507
widget = glade_xml_get_widget (priv->xml, "group_password_entry");
508
str = (char *) gtk_entry_get_text (GTK_ENTRY (widget));
509
if (str && strlen (str)) {
510
g_hash_table_insert (s_vpn->secrets,
511
g_strdup (NM_VPNC_KEY_SECRET),
476
516
nm_connection_add_setting (connection, NM_SETTING (s_vpn));
521
save_secrets (NMVpnPluginUiWidgetInterface *iface,
522
NMConnection *connection,
525
VpncPluginUiWidget *self = VPNC_PLUGIN_UI_WIDGET (iface);
526
VpncPluginUiWidgetPrivate *priv = VPNC_PLUGIN_UI_WIDGET_GET_PRIVATE (self);
527
GnomeKeyringResult ret;
528
NMSettingConnection *s_con;
532
s_con = (NMSettingConnection *) nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION);
535
VPNC_PLUGIN_UI_ERROR,
536
VPNC_PLUGIN_UI_ERROR_INVALID_CONNECTION,
537
"missing 'connection' setting");
541
widget = glade_xml_get_widget (priv->xml, "user_password_entry");
543
str = gtk_entry_get_text (GTK_ENTRY (widget));
544
if (str && strlen (str)) {
545
ret = keyring_helpers_save_secret (s_con->uuid, s_con->id, NULL, VPNC_USER_PASSWORD, str);
546
if (ret != GNOME_KEYRING_RESULT_OK)
547
g_warning ("%s: failed to save user password to keyring.", __func__);
549
keyring_helpers_delete_secret (s_con->uuid, VPNC_USER_PASSWORD);
551
widget = glade_xml_get_widget (priv->xml, "group_password_entry");
553
str = gtk_entry_get_text (GTK_ENTRY (widget));
554
if (str && strlen (str)) {
555
ret = keyring_helpers_save_secret (s_con->uuid, s_con->id, NULL, VPNC_GROUP_PASSWORD, str);
556
if (ret != GNOME_KEYRING_RESULT_OK)
557
g_warning ("%s: failed to save group password to keyring.", __func__);
559
keyring_helpers_delete_secret (s_con->uuid, VPNC_GROUP_PASSWORD);
480
564
static NMVpnPluginUiWidgetInterface *
481
565
nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error)
903
988
return (NM_VPN_PLUGIN_UI_CAPABILITY_IMPORT | NM_VPN_PLUGIN_UI_CAPABILITY_EXPORT);
992
delete_connection (NMVpnPluginUiInterface *iface,
993
NMConnection *connection,
996
NMSettingConnection *s_con;
998
/* Remove any secrets in the keyring associated with this connection's UUID */
999
s_con = (NMSettingConnection *) nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION);
1002
VPNC_PLUGIN_UI_ERROR,
1003
VPNC_PLUGIN_UI_ERROR_INVALID_CONNECTION,
1004
"missing 'connection' setting");
1008
if (!keyring_helpers_delete_secret (s_con->uuid, VPNC_USER_PASSWORD))
1009
g_message ("%s: couldn't delete user password for '%s'", __func__, s_con->id);
1011
if (!keyring_helpers_delete_secret (s_con->uuid, VPNC_GROUP_PASSWORD))
1012
g_message ("%s: couldn't delete group password for '%s'", __func__, s_con->id);
906
1017
static NMVpnPluginUiWidgetInterface *
907
1018
ui_factory (NMVpnPluginUiInterface *iface, NMConnection *connection, GError **error)