Maemo: Do not store the password in the config file, ask the user for it on demand.

This commit is contained in:
Tobias Brunner
2010-10-14 17:36:19 +02:00
parent 04164cba44
commit 8a47cd909b
3 changed files with 65 additions and 48 deletions
@@ -29,7 +29,6 @@ struct _StrongswanConnectionPrivate
gchar *host;
gchar *cert;
gchar *user;
gchar *pass;
};
enum
@@ -39,7 +38,6 @@ enum
PROP_HOST,
PROP_CERT,
PROP_USER,
PROP_PASS,
};
#ifndef USE_DYNAMIC_TYPES
@@ -73,9 +71,6 @@ strongswan_connection_get_property (GObject *object,
case PROP_USER:
g_value_set_string (value, priv->user);
break;
case PROP_PASS:
g_value_set_string (value, priv->pass);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -106,10 +101,6 @@ strongswan_connection_set_property (GObject *object,
g_free (priv->user);
priv->user = g_value_dup_string (value);
break;
case PROP_PASS:
g_free (priv->pass);
priv->pass = g_value_dup_string (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -137,7 +128,6 @@ strongswan_connection_finalize (GObject *object)
g_free (priv->host);
g_free (priv->cert);
g_free (priv->user);
g_free (priv->pass);
G_OBJECT_CLASS (strongswan_connection_parent_class)->finalize (object);
}
@@ -175,12 +165,6 @@ strongswan_connection_class_init (StrongswanConnectionClass *klass)
NULL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class, PROP_PASS,
g_param_spec_string ("pass", "Password",
"The password for EAP authentication",
NULL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_type_class_add_private (klass, sizeof (StrongswanConnectionPrivate));
}
@@ -219,7 +203,6 @@ strongswan_connection_update_from_key_file (GKeyFile *key_file,
priv->host = get_string_from_key_file (key_file, name, "host");
priv->cert = get_string_from_key_file (key_file, name, "cert");
priv->user = get_string_from_key_file (key_file, name, "user");
priv->pass = get_string_from_key_file (key_file, name, "pass");
}
StrongswanConnection *
@@ -269,9 +252,5 @@ strongswan_connection_save_to_key_file (GKeyFile *key_file,
{
g_key_file_set_string (key_file, name, "user", priv->user);
}
if (priv->pass)
{
g_key_file_set_string (key_file, name, "pass", priv->pass);
}
}
+3 -19
View File
@@ -120,44 +120,29 @@ edit_connection (gpointer *parent, StrongswanConnection *conn)
HILDON_CAPTION_OPTIONAL);
gtk_box_pack_start (GTK_BOX (vbox), ucap, TRUE, TRUE, 0);
GtkWidget *pass = hildon_entry_new (HILDON_SIZE_AUTO);
hildon_gtk_entry_set_placeholder_text (GTK_ENTRY (pass), "Password");
hildon_gtk_entry_set_input_mode (GTK_ENTRY (pass),
HILDON_GTK_INPUT_MODE_FULL |
HILDON_GTK_INPUT_MODE_INVISIBLE);
GtkWidget *pcap = hildon_caption_new (group,
"Password",
pass,
NULL,
HILDON_CAPTION_OPTIONAL);
gtk_box_pack_start (GTK_BOX (vbox), pcap, TRUE, TRUE, 0);
if (conn)
{
gchar *c_name, *c_host, *c_cert, *c_user, *c_pass;
gchar *c_name, *c_host, *c_cert, *c_user;
g_object_get (conn,
"name", &c_name,
"host", &c_host,
"cert", &c_cert,
"user", &c_user,
"pass", &c_pass,
NULL);
gtk_entry_set_text (GTK_ENTRY (name), c_name);
gtk_entry_set_text (GTK_ENTRY (host), c_host);
hildon_button_set_value (HILDON_BUTTON (cert),
c_cert ? c_cert : "None");
gtk_entry_set_text (GTK_ENTRY (user), c_user);
gtk_entry_set_text (GTK_ENTRY (pass), c_pass);
g_free (c_name);
g_free (c_host);
g_free (c_cert);
g_free (c_user);
g_free (c_pass);
}
gtk_widget_show_all(dialog);
gtk_widget_show_all (dialog);
guint retval = gtk_dialog_run (GTK_DIALOG (dialog));
gint retval = gtk_dialog_run (GTK_DIALOG (dialog));
if (retval == GTK_RESPONSE_OK)
{
const gchar *c_name, *c_cert;
@@ -173,7 +158,6 @@ edit_connection (gpointer *parent, StrongswanConnection *conn)
"host", gtk_entry_get_text (GTK_ENTRY (host)),
"cert", c_cert,
"user", gtk_entry_get_text (GTK_ENTRY (user)),
"pass", gtk_entry_get_text (GTK_ENTRY (pass)),
NULL);
strongswan_connections_save_connection (ListDialog.conns, conn);
}
+62 -8
View File
@@ -106,6 +106,24 @@ update_status_menu (StrongswanStatus *plugin)
}
}
static void
update_dialog_connecting (StrongswanStatus *plugin)
{
StrongswanStatusPrivate *priv = plugin->priv;
gtk_widget_set_sensitive (priv->box, FALSE);
hildon_gtk_window_set_progress_indicator (GTK_WINDOW (priv->dialog), 1);
}
static void
update_dialog_default (StrongswanStatus *plugin)
{
StrongswanStatusPrivate *priv = plugin->priv;
gtk_widget_set_sensitive (priv->box, TRUE);
hildon_gtk_window_set_progress_indicator (GTK_WINDOW (priv->dialog), 0);
}
static void
dialog_response (GtkDialog *dialog, gint response_id, StrongswanStatus *plugin)
{
@@ -155,20 +173,50 @@ connect_callback (const gchar* interface, const gchar* method,
if (priv->dialog)
{
gtk_widget_set_sensitive (priv->box, TRUE);
hildon_gtk_window_set_progress_indicator (GTK_WINDOW (priv->dialog), 0);
update_dialog_default (plugin);
gtk_dialog_response (GTK_DIALOG (priv->dialog), GTK_RESPONSE_OK);
}
}
static void
update_dialog_connecting (StrongswanStatus *plugin)
static gboolean
get_password (StrongswanStatus *plugin, gchar **password)
{
StrongswanStatusPrivate *priv = plugin->priv;
gboolean result = FALSE;
gtk_widget_set_sensitive (priv->box, FALSE);
hildon_gtk_window_set_progress_indicator (GTK_WINDOW (priv->dialog), 1);
GtkWidget *dialog = gtk_dialog_new_with_buttons (
"Connecting...",
GTK_WINDOW(priv->dialog),
GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR,
GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL,
GTK_STOCK_OK,
GTK_RESPONSE_OK,
NULL);
GtkWidget *vbox = GTK_DIALOG (dialog)->vbox;
GtkSizeGroup *group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
GtkWidget *pass = hildon_entry_new (HILDON_SIZE_AUTO);
hildon_gtk_entry_set_placeholder_text (GTK_ENTRY (pass), "Password");
hildon_gtk_entry_set_input_mode (GTK_ENTRY (pass),
HILDON_GTK_INPUT_MODE_FULL |
HILDON_GTK_INPUT_MODE_INVISIBLE);
GtkWidget *pcap = hildon_caption_new (group,
"Password",
pass,
NULL,
HILDON_CAPTION_OPTIONAL);
gtk_box_pack_start (GTK_BOX (vbox), pcap, TRUE, TRUE, 0);
gtk_widget_show_all (dialog);
gint retval = gtk_dialog_run (GTK_DIALOG (dialog));
if (retval == GTK_RESPONSE_OK)
{
*password = g_strdup (gtk_entry_get_text (GTK_ENTRY (pass)));
result = TRUE;
}
gtk_widget_destroy (dialog);
return result;
}
static void
@@ -216,11 +264,17 @@ connect_clicked (HildonButton *button, StrongswanStatus *plugin)
}
gchar *c_host, *c_cert, *c_user, *c_pass;
if (!get_password (plugin, &c_pass))
{
update_dialog_default (plugin);
return;
}
g_object_get (conn,
"host", &c_host,
"cert", &c_cert,
"user", &c_user,
"pass", &c_pass,
NULL);
osso_rpc_async_run (priv->context,