void kolab_util_backend_koma_table_cleanup_cb (gpointer data, GObject *object, gboolean is_last_ref) { KolabMailAccess *koma = KOLAB_MAIL_ACCESS (object); GHashTable *koma_table = (GHashTable *) data; const gchar *host = NULL; const gchar *user = NULL; gchar *user_at_host = NULL; KolabSettingsHandler *ksettings = NULL; CamelKolabIMAPXSettings *camel_settings; CamelNetworkSettings *network_settings; /* gboolean ok; */ g_debug ("%s()[%u] called.", __func__, __LINE__); g_assert (data != NULL); g_assert (G_IS_OBJECT (object)); (void)is_last_ref; ksettings = kolab_mail_access_get_settings_handler (koma); camel_settings = kolab_settings_handler_get_camel_settings (ksettings); network_settings = CAMEL_NETWORK_SETTINGS (camel_settings); host = camel_network_settings_get_host (network_settings); user = camel_network_settings_get_user (network_settings); user_at_host = g_strdup_printf ("%s@%s", user, host); (void)g_hash_table_remove (koma_table, user_at_host); g_free (user_at_host); g_object_remove_toggle_ref (object, kolab_util_backend_koma_table_cleanup_cb, data); } /* kolab_util_backend_koma_table_cleanup_cb () */
static EGwConnection * get_cnc (GtkWindow *parent_window) { CamelNetworkSettings *network_settings; const gchar *failed_auth; gchar *uri, *key, *prompt, *password = NULL; CamelNetworkSecurityMethod security_method; const gchar *scheme; const gchar *host; const gchar *user; gboolean remember; gchar *soap_port; if (!CAMEL_IS_NETWORK_SETTINGS (settings)) return NULL; network_settings = CAMEL_NETWORK_SETTINGS (settings); host = camel_network_settings_get_host (network_settings); user = camel_network_settings_get_user (network_settings); if (host == NULL || *host == '\0') return NULL; if (user == NULL || *user == '\0') return NULL; g_object_get ( settings, "soap-port", &soap_port, "security-method", &security_method, NULL); if (security_method == CAMEL_NETWORK_SECURITY_METHOD_NONE) scheme = "http"; else scheme = "https"; key = g_strdup_printf ("groupwise://%s@%s/", user, host); uri = g_strdup_printf ("%s://%s:%s/soap", scheme, host, soap_port); failed_auth = ""; prompt = g_strdup_printf (_("%sEnter password for %s (user %s)"), failed_auth, host, user); password = e_passwords_get_password (NULL, key); if (!password) password = e_passwords_ask_password (prompt, NULL, key, prompt, E_PASSWORDS_REMEMBER_FOREVER | E_PASSWORDS_SECRET, &remember, parent_window); g_free (prompt); return e_gw_connection_new (uri, user, password); }
static gboolean mail_config_remote_backend_check_complete (EMailConfigServiceBackend *backend) { EMailConfigRemoteBackend *remote_backend; CamelSettings *settings; CamelNetworkSettings *network_settings; CamelProvider *provider; EPortEntry *port_entry; const gchar *host; const gchar *user; gboolean correct, complete = TRUE; remote_backend = E_MAIL_CONFIG_REMOTE_BACKEND (backend); settings = e_mail_config_service_backend_get_settings (backend); provider = e_mail_config_service_backend_get_provider (backend); g_return_val_if_fail (provider != NULL, FALSE); network_settings = CAMEL_NETWORK_SETTINGS (settings); host = camel_network_settings_get_host (network_settings); user = camel_network_settings_get_user (network_settings); correct = TRUE; if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_HOST) && (host == NULL || *host == '\0')) correct = FALSE; complete = complete && correct; e_util_set_entry_issue_hint (remote_backend->host_entry, correct ? NULL : _("Server address cannot be empty")); correct = TRUE; port_entry = E_PORT_ENTRY (remote_backend->port_entry); if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_PORT) && !e_port_entry_is_valid (port_entry)) correct = FALSE; complete = complete && correct; gtk_widget_set_visible (remote_backend->port_error_image, !correct); correct = TRUE; if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_USER) && (user == NULL || *user == '\0')) correct = FALSE; complete = complete && correct; e_util_set_entry_issue_hint (remote_backend->user_entry, correct ? NULL : _("User name cannot be empty")); return complete; }
gchar* kolab_util_backend_account_uid_new_from_settings (KolabSettingsHandler *ksettings, GError **err) { CamelKolabIMAPXSettings *camel_settings; CamelNetworkSettings *network_settings; const gchar *host = NULL; const gchar *user = NULL; const gchar *esource_uid = NULL; gchar *account_uid = NULL; gchar *tmp_str = NULL; GError *tmp_err = NULL; g_assert (KOLAB_IS_SETTINGS_HANDLER (ksettings)); g_return_val_if_fail (err == NULL || *err == NULL, NULL); esource_uid = kolab_settings_handler_get_char_field (ksettings, KOLAB_SETTINGS_HANDLER_CHAR_FIELD_ESOURCE_UID, &tmp_err); if (tmp_err != NULL) { g_warning ("%s: %s", __func__, tmp_err->message); g_error_free (tmp_err); tmp_err = NULL; } if (esource_uid != NULL) { account_uid = g_strdup (esource_uid); goto done; } /* fallback in case we don't have an ESource UID set */ camel_settings = kolab_settings_handler_get_camel_settings (ksettings); network_settings = CAMEL_NETWORK_SETTINGS (camel_settings); host = camel_network_settings_get_host (network_settings); user = camel_network_settings_get_user (network_settings); tmp_str = g_strconcat (user, "@", host, NULL); account_uid = g_strconcat (KOLAB_CAMEL_PROVIDER_PROTOCOL, "__", tmp_str, NULL); g_free (tmp_str); done: return account_uid; }
gboolean e_mapi_util_trigger_krb_auth_from_settings (CamelMapiSettings *mapi_settings, GError **error) { EMapiProfileData empd = { 0 }; CamelNetworkSettings *network_settings; g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (mapi_settings), FALSE); network_settings = CAMEL_NETWORK_SETTINGS (mapi_settings); empd.server = camel_network_settings_get_host (network_settings); empd.username = camel_network_settings_get_user (network_settings); e_mapi_util_profiledata_from_settings (&empd, mapi_settings); return e_mapi_util_trigger_krb_auth (&empd, error); }
static gboolean mail_config_remote_backend_check_complete (EMailConfigServiceBackend *backend) { EMailConfigRemoteBackend *remote_backend; CamelSettings *settings; CamelNetworkSettings *network_settings; CamelProvider *provider; EPortEntry *port_entry; const gchar *host; const gchar *user; remote_backend = E_MAIL_CONFIG_REMOTE_BACKEND (backend); settings = e_mail_config_service_backend_get_settings (backend); provider = e_mail_config_service_backend_get_provider (backend); g_return_val_if_fail (provider != NULL, FALSE); network_settings = CAMEL_NETWORK_SETTINGS (settings); host = camel_network_settings_get_host (network_settings); user = camel_network_settings_get_user (network_settings); if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_HOST) && (host == NULL || *host == '\0')) return FALSE; port_entry = E_PORT_ENTRY (remote_backend->port_entry); if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_PORT) && !e_port_entry_is_valid (port_entry)) return FALSE; if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_USER) && (user == NULL || *user == '\0')) return FALSE; return TRUE; }