aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ephy-profile-utils.c
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2013-03-09 20:57:09 +0800
committerCarlos Garcia Campos <carlosgc@gnome.org>2013-03-12 17:01:34 +0800
commit2499031072e275e68ad8dc1cb9bd0a53397a5e5a (patch)
treeb94479df9e1470d6855a7bbb4e5b2e0b37fcfa19 /lib/ephy-profile-utils.c
parent78b70aa84bb94f5097d40ffbb461aefcbbaeb979 (diff)
downloadgsoc2013-epiphany-2499031072e275e68ad8dc1cb9bd0a53397a5e5a.tar
gsoc2013-epiphany-2499031072e275e68ad8dc1cb9bd0a53397a5e5a.tar.gz
gsoc2013-epiphany-2499031072e275e68ad8dc1cb9bd0a53397a5e5a.tar.bz2
gsoc2013-epiphany-2499031072e275e68ad8dc1cb9bd0a53397a5e5a.tar.lz
gsoc2013-epiphany-2499031072e275e68ad8dc1cb9bd0a53397a5e5a.tar.xz
gsoc2013-epiphany-2499031072e275e68ad8dc1cb9bd0a53397a5e5a.tar.zst
gsoc2013-epiphany-2499031072e275e68ad8dc1cb9bd0a53397a5e5a.zip
lib: Move auth data query/store methods from ephy-profile-utils to a new file
Move to ephy-form-auth-data and renamed accordingly.
Diffstat (limited to 'lib/ephy-profile-utils.c')
-rw-r--r--lib/ephy-profile-utils.c232
1 files changed, 0 insertions, 232 deletions
diff --git a/lib/ephy-profile-utils.c b/lib/ephy-profile-utils.c
index 5a8f1a33b..5d295e5f3 100644
--- a/lib/ephy-profile-utils.c
+++ b/lib/ephy-profile-utils.c
@@ -25,27 +25,8 @@
#include "ephy-debug.h"
#include "ephy-file-helpers.h"
-#include <glib/gi18n.h>
-#include <libsoup/soup.h>
-
#define PROFILE_MIGRATION_FILE ".migrated"
-const SecretSchema*
-ephy_profile_get_form_password_schema (void)
-{
- static const SecretSchema schema = {
- "org.epiphany.FormPassword", SECRET_SCHEMA_NONE,
- {
- { URI_KEY, SECRET_SCHEMA_ATTRIBUTE_STRING },
- { FORM_USERNAME_KEY, SECRET_SCHEMA_ATTRIBUTE_STRING },
- { FORM_PASSWORD_KEY, SECRET_SCHEMA_ATTRIBUTE_STRING },
- { USERNAME_KEY, SECRET_SCHEMA_ATTRIBUTE_STRING },
- { "NULL", 0 },
- }
- };
- return &schema;
-}
-
int
ephy_profile_utils_get_migration_version ()
{
@@ -105,219 +86,6 @@ ephy_profile_utils_set_migration_version (int version)
return result;
}
-static void
-normalize_and_prepare_uri (SoupURI *uri)
-{
- g_return_if_fail (uri != NULL);
-
- /* We normalize https? schemes here so that we use passwords
- * we stored in https sites in their http counterparts, and
- * vice-versa. */
- if (uri->scheme == SOUP_URI_SCHEME_HTTPS)
- soup_uri_set_scheme (uri, SOUP_URI_SCHEME_HTTP);
-
- soup_uri_set_path (uri, "/");
-}
-
-static GHashTable *
-ephy_profile_utils_get_attributes_table (const char *uri,
- const char *field_username,
- const char *field_password,
- const char *username)
-{
- return secret_attributes_build (EPHY_FORM_PASSWORD_SCHEMA,
- URI_KEY, uri,
- FORM_USERNAME_KEY, field_username,
- FORM_PASSWORD_KEY, field_password,
- username ? USERNAME_KEY : NULL, username,
- NULL);
-}
-
-static void
-store_form_password_cb (SecretService *service,
- GAsyncResult *res,
- GSimpleAsyncResult *async)
-{
- GError *error = NULL;
-
- secret_service_store_finish (service, res, &error);
- if (error != NULL)
- g_simple_async_result_take_error (async, error);
-
- g_simple_async_result_complete (async);
- g_object_unref (async);
-}
-
-void
-_ephy_profile_utils_store_form_auth_data (const char *uri,
- const char *form_username,
- const char *form_password,
- const char *username,
- const char *password,
- GAsyncReadyCallback callback,
- gpointer userdata)
-{
- SoupURI *fake_uri;
- char *fake_uri_str;
- SecretValue *value;
- GHashTable *attributes;
- char *label;
- GSimpleAsyncResult *res;
-
- g_return_if_fail (uri);
- g_return_if_fail (form_username);
- g_return_if_fail (form_password);
- g_return_if_fail (username);
- g_return_if_fail (password);
-
- fake_uri = soup_uri_new (uri);
-
- if (fake_uri == NULL)
- return;
-
- res = g_simple_async_result_new (NULL, callback, userdata,
- _ephy_profile_utils_store_form_auth_data);
-
- normalize_and_prepare_uri (fake_uri);
- fake_uri_str = soup_uri_to_string (fake_uri, FALSE);
- value = secret_value_new (password, -1, "text/plain");
- attributes = ephy_profile_utils_get_attributes_table (fake_uri_str, form_username,
- form_password, username);
- /* Translators: The first %s is the username and the second one is the
- * hostname where this is happening. Example: gnome@gmail.com and
- * mail.google.com.
- */
- label = g_strdup_printf (_("Password for %s in a form in %s"),
- username, fake_uri_str);
- secret_service_store (NULL, EPHY_FORM_PASSWORD_SCHEMA,
- attributes, NULL, label, value,
- NULL,
- (GAsyncReadyCallback)store_form_password_cb,
- g_object_ref (res));
-
- g_free (label);
- secret_value_unref (value);
- g_hash_table_unref (attributes);
- soup_uri_free (fake_uri);
- g_free (fake_uri_str);
- g_object_unref (res);
-}
-
-
-gboolean
-_ephy_profile_utils_store_form_auth_data_finish (GAsyncResult *result,
- GError **error)
-{
- g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, NULL, _ephy_profile_utils_store_form_auth_data), FALSE);
-
- return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error);
-}
-
-typedef struct
-{
- EphyQueryFormDataCallback callback;
- gpointer data;
- GDestroyNotify destroy_data;
-} EphyProfileQueryClosure;
-
-static void
-ephy_profile_query_closure_free (EphyProfileQueryClosure *closure)
-{
- if (closure->destroy_data)
- closure->destroy_data (closure->data);
-
- g_slice_free (EphyProfileQueryClosure, closure);
-}
-
-static void
-search_form_data_cb (SecretService *service,
- GAsyncResult *res,
- EphyProfileQueryClosure *closure)
-{
- GList *results;
- SecretItem *item;
- const char* username = NULL, *password = NULL;
- SecretValue *value = NULL;
- GHashTable *attributes = NULL;
- GError *error = NULL;
-
- results = secret_service_search_finish (service, res, &error);
- if (error) {
- g_warning ("Couldn't retrieve form data: %s", error->message);
- g_error_free (error);
- goto out;
- }
-
- if (!results)
- goto out;
-
- item = (SecretItem*)results->data;
- attributes = secret_item_get_attributes (item);
- username = g_hash_table_lookup (attributes, USERNAME_KEY);
- value = secret_item_get_secret (item);
- password = secret_value_get (value, NULL);
-
- g_list_free_full (results, (GDestroyNotify)g_object_unref);
-
-out:
- if (closure->callback)
- closure->callback (username, password, closure->data);
-
- if (value)
- secret_value_unref (value);
- if (attributes)
- g_hash_table_unref (attributes);
-
- ephy_profile_query_closure_free (closure);
-}
-
-void
-_ephy_profile_utils_query_form_auth_data (const char *uri,
- const char *form_username,
- const char *form_password,
- EphyQueryFormDataCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- SoupURI *key;
- char *key_str;
- EphyProfileQueryClosure *closure;
- GHashTable *attributes;
-
- g_return_if_fail (uri);
- g_return_if_fail (form_username);
- g_return_if_fail (form_password);
-
- key = soup_uri_new (uri);
- g_return_if_fail (key);
-
- normalize_and_prepare_uri (key);
-
- key_str = soup_uri_to_string (key, FALSE);
-
- attributes = ephy_profile_utils_get_attributes_table (key_str, form_username,
- form_password, NULL);
-
- closure = g_slice_new0 (EphyProfileQueryClosure);
- closure->callback = callback;
- closure->data = data;
- closure->destroy_data = destroy_data;
-
- LOG ("Querying Keyring: %s", key_str);
-
- secret_service_search (NULL,
- EPHY_FORM_PASSWORD_SCHEMA,
- attributes,
- SECRET_SEARCH_UNLOCK | SECRET_SEARCH_LOAD_SECRETS,
- NULL, (GAsyncReadyCallback)search_form_data_cb,
- closure);
-
- g_hash_table_unref (attributes);
- soup_uri_free (key);
- g_free (key_str);
-}
-
#define EPHY_PROFILE_MIGRATOR "ephy-profile-migrator"
gboolean