diff options
author | llyzs <llyzs.vic@gmail.com> | 2011-02-03 19:50:08 +0300 |
---|---|---|
committer | Vic Lee (llyzs) <llyzs@b6cfa94a-2857-405c-b0d6-536ef9fc39e1> | 2011-02-03 19:50:08 +0300 |
commit | de9fb506dd7b0c46bfb020eefa2f4817cc4f78e0 (patch) | |
tree | ea2499524d5ce0b7b8369f5f23b1caeb7c17f99c /remmina | |
parent | 624c9feedc09303165d858cdafcbdc958ac90a6c (diff) |
Initial implementation for GNOME Keyring plugin
Diffstat (limited to 'remmina')
-rw-r--r-- | remmina/include/remmina/plugin.h | 1 | ||||
-rw-r--r-- | remmina/src/remminafile.c | 61 | ||||
-rw-r--r-- | remmina/src/remminapluginmanager.c | 1 |
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, |