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;
}
Exemple #5
0
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;
}