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-03 19:50:08 +0300
committerVic Lee (llyzs) <llyzs@b6cfa94a-2857-405c-b0d6-536ef9fc39e1>2011-02-03 19:50:08 +0300
commitde9fb506dd7b0c46bfb020eefa2f4817cc4f78e0 (patch)
treeea2499524d5ce0b7b8369f5f23b1caeb7c17f99c /remmina
parent624c9feedc09303165d858cdafcbdc958ac90a6c (diff)
Initial implementation for GNOME Keyring plugin
Diffstat (limited to 'remmina')
-rw-r--r--remmina/include/remmina/plugin.h1
-rw-r--r--remmina/src/remminafile.c61
-rw-r--r--remmina/src/remminapluginmanager.c1
3 files changed, 34 insertions, 29 deletions
diff --git a/remmina/include/remmina/plugin.h b/remmina/include/remmina/plugin.h
index 090c58576..3262efc3c 100644
--- a/remmina/include/remmina/plugin.h
+++ b/remmina/include/remmina/plugin.h
@@ -179,6 +179,7 @@ typedef struct _RemminaPluginService
void (* protocol_plugin_chat_receive) (RemminaProtocolWidget *gp, const gchar *text);
RemminaFile* (* file_new) (void);
+ 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);
diff --git a/remmina/src/remminafile.c b/remmina/src/remminafile.c
index b6254b5d8..a6016a613 100644
--- a/remmina/src/remminafile.c
+++ b/remmina/src/remminafile.c
@@ -239,9 +239,16 @@ remmina_file_get_secret (RemminaFile *remminafile, const gchar *setting)
plugin = remmina_plugin_manager_get_secret_plugin ();
if (plugin)
{
- value = plugin->get_password (remminafile, setting);
- remmina_file_set_string_ref (remminafile, setting, value);
- return value && value[0] ? value : NULL;
+ if (remminafile->filename)
+ {
+ value = plugin->get_password (remminafile, setting);
+ remmina_file_set_string_ref (remminafile, setting, value);
+ return value && value[0] ? value : NULL;
+ }
+ else
+ {
+ return NULL;
+ }
}
else
{
@@ -284,29 +291,32 @@ remmina_file_store_group (RemminaFile *remminafile, GKeyFile *gkeyfile, RemminaS
{
if (encrypted)
{
- if (plugin)
- {
- g_key_file_set_string (gkeyfile, "remmina", key, "");
- if (value && value[0])
- {
- plugin->store_password (remminafile, key, value);
- }
- else
- {
- plugin->delete_password (remminafile, key);
- }
- }
- else
+ if (remminafile->filename && g_strcmp0 (remminafile->filename, remmina_pref_file))
{
- if (value && value[0])
+ if (plugin)
{
- s = remmina_crypt_encrypt (value);
- g_key_file_set_string (gkeyfile, "remmina", key, s);
- g_free (s);
+ g_key_file_set_string (gkeyfile, "remmina", key, "");
+ if (value && value[0])
+ {
+ plugin->store_password (remminafile, key, value);
+ }
+ else
+ {
+ plugin->delete_password (remminafile, key);
+ }
}
else
{
- g_key_file_set_string (gkeyfile, "remmina", key, "");
+ if (value && value[0])
+ {
+ s = remmina_crypt_encrypt (value);
+ g_key_file_set_string (gkeyfile, "remmina", key, s);
+ g_free (s);
+ }
+ else
+ {
+ g_key_file_set_string (gkeyfile, "remmina", key, "");
+ }
}
}
}
@@ -318,12 +328,6 @@ remmina_file_store_group (RemminaFile *remminafile, GKeyFile *gkeyfile, RemminaS
}
}
-static void
-remmina_file_store_all (RemminaFile *remminafile, GKeyFile *gkeyfile)
-{
- remmina_file_store_group (remminafile, gkeyfile, REMMINA_SETTING_GROUP_ALL);
-}
-
static GKeyFile*
remmina_file_get_keyfile (RemminaFile *remminafile)
{
@@ -333,8 +337,7 @@ remmina_file_get_keyfile (RemminaFile *remminafile)
gkeyfile = g_key_file_new ();
if (!g_key_file_load_from_file (gkeyfile, remminafile->filename, G_KEY_FILE_NONE, NULL))
{
- /* it's a new file, so we need to initially store everything into it */
- remmina_file_store_all (remminafile, gkeyfile);
+ /* it will fail if it's a new file, but shouldn't matter. */
}
return gkeyfile;
}
diff --git a/remmina/src/remminapluginmanager.c b/remmina/src/remminapluginmanager.c
index d7ea9e1af..6bbe1f441 100644
--- a/remmina/src/remminapluginmanager.c
+++ b/remmina/src/remminapluginmanager.c
@@ -113,6 +113,7 @@ RemminaPluginService remmina_plugin_manager_service =
remmina_protocol_widget_chat_receive,
remmina_file_new,
+ remmina_file_get_filename,
remmina_file_set_string,
remmina_file_get_string,
remmina_file_get_secret,