Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorllyzs <llyzs.vic@gmail.com>2011-02-06 10:39:00 +0300
committerVic Lee (llyzs) <llyzs@b6cfa94a-2857-405c-b0d6-536ef9fc39e1>2011-02-06 10:39:00 +0300
commit2b72284688ec9799ac865d932fddaa95f8197d0c (patch)
tree713a524cc701bc7f581bcfcac1731039dd99fbca /remmina
parentde9fb506dd7b0c46bfb020eefa2f4817cc4f78e0 (diff)
Various fixes for gnome-keyring related codes
Diffstat (limited to 'remmina')
-rw-r--r--remmina/include/remmina/plugin.h5
-rw-r--r--remmina/src/remminafile.c30
-rw-r--r--remmina/src/remminafile.h2
-rw-r--r--remmina/src/remminafileeditor.c9
4 files changed, 27 insertions, 19 deletions
diff --git a/remmina/include/remmina/plugin.h b/remmina/include/remmina/plugin.h
index 3262efc3c..3de9979fd 100644
--- a/remmina/include/remmina/plugin.h
+++ b/remmina/include/remmina/plugin.h
@@ -127,9 +127,6 @@ typedef struct _RemminaSecretPlugin
void (* store_password) (RemminaFile *remminafile, const gchar *key, const gchar *password);
gchar* (* get_password) (RemminaFile *remminafile, const gchar *key);
void (* delete_password) (RemminaFile *remminafile, const gchar *key);
- void (* store_group_password) (const gchar *name, const gchar *password);
- gchar* (* get_group_password) (const gchar *name);
- void (* delete_group_password) (const gchar *name);
} RemminaSecretPlugin;
/* Plugin Service is a struct containing a list of function pointers,
@@ -182,7 +179,7 @@ typedef struct _RemminaPluginService
const gchar* (* file_get_path) (RemminaFile *remminafile);
void (* file_set_string) (RemminaFile *remminafile, const gchar *setting, const gchar *value);
const gchar* (* file_get_string) (RemminaFile *remminafile, const gchar *setting);
- const gchar* (* file_get_secret) (RemminaFile *remminafile, const gchar *setting);
+ gchar* (* file_get_secret) (RemminaFile *remminafile, const gchar *setting);
void (* file_set_int) (RemminaFile *remminafile, const gchar *setting, gint value);
gint (* file_get_int) (RemminaFile *remminafile, const gchar *setting, gint default_value);
diff --git a/remmina/src/remminafile.c b/remmina/src/remminafile.c
index a6016a613..798ff7af0 100644
--- a/remmina/src/remminafile.c
+++ b/remmina/src/remminafile.c
@@ -181,7 +181,14 @@ remmina_file_load (const gchar *filename)
if (encrypted)
{
s = g_key_file_get_string (gkeyfile, "remmina", key, NULL);
- remmina_file_set_string_ref (remminafile, key, remmina_crypt_decrypt (s));
+ if (g_strcmp0 (s, ".") == 0)
+ {
+ remmina_file_set_string (remminafile, key, s);
+ }
+ else
+ {
+ remmina_file_set_string_ref (remminafile, key, remmina_crypt_decrypt (s));
+ }
g_free (s);
}
else
@@ -230,20 +237,19 @@ remmina_file_get_string (RemminaFile *remminafile, const gchar *setting)
return value && value[0] ? value : NULL;
}
-const gchar*
+gchar*
remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting)
{
RemminaSecretPlugin *plugin;
- gchar *value;
+ const gchar *cs;
plugin = remmina_plugin_manager_get_secret_plugin ();
+ cs = remmina_file_get_string (remminafile, setting);
if (plugin)
{
- if (remminafile->filename)
+ if (remminafile->filename && g_strcmp0 (cs, ".") == 0)
{
- value = plugin->get_password (remminafile, setting);
- remmina_file_set_string_ref (remminafile, setting, value);
- return value && value[0] ? value : NULL;
+ return plugin->get_password (remminafile, setting);
}
else
{
@@ -252,7 +258,7 @@ remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting)
}
else
{
- return remmina_file_get_string (remminafile, setting);
+ return g_strdup (cs);
}
}
@@ -295,13 +301,17 @@ remmina_file_store_group (RemminaFile *remminafile, GKeyFile *gkeyfile, RemminaS
{
if (plugin)
{
- g_key_file_set_string (gkeyfile, "remmina", key, "");
if (value && value[0])
{
- plugin->store_password (remminafile, key, value);
+ if (g_strcmp0 (value, ".") != 0)
+ {
+ plugin->store_password (remminafile, key, value);
+ }
+ g_key_file_set_string (gkeyfile, "remmina", key, ".");
}
else
{
+ g_key_file_set_string (gkeyfile, "remmina", key, "");
plugin->delete_password (remminafile, key);
}
}
diff --git a/remmina/src/remminafile.h b/remmina/src/remminafile.h
index 141489645..273c25876 100644
--- a/remmina/src/remminafile.h
+++ b/remmina/src/remminafile.h
@@ -56,7 +56,7 @@ RemminaFile* remmina_file_load (const gchar *filename);
void remmina_file_set_string (RemminaFile *remminafile, const gchar *setting, const gchar *value);
void remmina_file_set_string_ref (RemminaFile *remminafile, const gchar *setting, gchar *value);
const gchar* remmina_file_get_string (RemminaFile *remminafile, const gchar *setting);
-const gchar* remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting);
+gchar* remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting);
void remmina_file_set_int (RemminaFile *remminafile, const gchar *setting, gint value);
gint remmina_file_get_int (RemminaFile *remminafile, const gchar *setting, gint default_value);
/* Create or overwrite the .remmina file */
diff --git a/remmina/src/remminafileeditor.c b/remmina/src/remminafileeditor.c
index d950ed7b7..2e791bcc2 100644
--- a/remmina/src/remminafileeditor.c
+++ b/remmina/src/remminafileeditor.c
@@ -382,7 +382,7 @@ static void
remmina_file_editor_create_password (RemminaFileEditor *gfe, GtkWidget *table, gint row)
{
GtkWidget *widget;
- const gchar *cs;
+ gchar *s;
widget = gtk_label_new (_("Password"));
gtk_widget_show (widget);
@@ -395,10 +395,11 @@ remmina_file_editor_create_password (RemminaFileEditor *gfe, GtkWidget *table, g
gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE);
gfe->priv->password_entry = widget;
- cs = remmina_file_get_secret (gfe->priv->remmina_file, "password");
- if (cs)
+ s = remmina_file_get_secret (gfe->priv->remmina_file, "password");
+ if (s)
{
- gtk_entry_set_text (GTK_ENTRY (widget), cs);
+ gtk_entry_set_text (GTK_ENTRY (widget), s);
+ g_free (s);
}
}