aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
diff options
context:
space:
mode:
authorSivaiah Nallagatla <snallagatla@novell.com>2004-07-29 14:46:26 +0800
committerSivaiah Nallagatla <siva@src.gnome.org>2004-07-29 14:46:26 +0800
commitbbfd4edac1f291d0a969cd4b5012e04d16379cbb (patch)
tree1bcb56bef9a72e929572232e8511c22a95db16e5 /camel/providers
parentf000b8fa4fda0208ea241179451d62c27c4b3ffd (diff)
downloadgsoc2013-evolution-bbfd4edac1f291d0a969cd4b5012e04d16379cbb.tar
gsoc2013-evolution-bbfd4edac1f291d0a969cd4b5012e04d16379cbb.tar.gz
gsoc2013-evolution-bbfd4edac1f291d0a969cd4b5012e04d16379cbb.tar.bz2
gsoc2013-evolution-bbfd4edac1f291d0a969cd4b5012e04d16379cbb.tar.lz
gsoc2013-evolution-bbfd4edac1f291d0a969cd4b5012e04d16379cbb.tar.xz
gsoc2013-evolution-bbfd4edac1f291d0a969cd4b5012e04d16379cbb.tar.zst
gsoc2013-evolution-bbfd4edac1f291d0a969cd4b5012e04d16379cbb.zip
Add an entry to specify POA address and a check box to say whehter ssl has
2004-07-29 Sivaiah Nallagatla <snallagatla@novell.com> * proivders/groupwise/camel-groupwise-provider.c : Add an entry to specify POA address and a check box to say whehter ssl has to be used for SOAP or not (groupwise_auto_detect_cb) : new function to automatically fill POA address with host specified in receiving mail page (camel_provider_module_init) : use the new auto_detect funcntion * providers/groupwise/camel-gw-listener.c (modify_esource) (account_changed) (add_calendar_tasks_sources) (remove_calendar_tasks_sources) (get_addressbook_names_from_server) (add_addressbook_sources) (modify_addressbook_sources) (remove_addressbook_sources) : while forming the uri, use the value from new poa_address setting instead of url->host. Also use ssl setting from the new check box provider instaed of imap one (get_addressbook_names_from_server) : display an error to user when connection cpuld not be established with server during account setup svn path=/trunk/; revision=26765
Diffstat (limited to 'camel/providers')
-rw-r--r--camel/providers/groupwise/camel-groupwise-provider.c19
-rw-r--r--camel/providers/groupwise/camel-gw-listener.c177
2 files changed, 136 insertions, 60 deletions
diff --git a/camel/providers/groupwise/camel-groupwise-provider.c b/camel/providers/groupwise/camel-groupwise-provider.c
index 2eedaa054e..108c23620b 100644
--- a/camel/providers/groupwise/camel-groupwise-provider.c
+++ b/camel/providers/groupwise/camel-groupwise-provider.c
@@ -68,8 +68,14 @@ CamelProviderConfEntry groupwise_conf_entries[] = {
{CAMEL_PROVIDER_CONF_SECTION_START, "soapport", NULL,
N_("Address Book And Calendar") },
+ { CAMEL_PROVIDER_CONF_ENTRY , "poa", NULL,
+ N_("Post Office Agent:"), NULL },
+
{ CAMEL_PROVIDER_CONF_ENTRY, "soap_port", NULL,
N_("Post Office Agent SOAP Port:"), "7181" },
+
+ { CAMEL_PROVIDER_CONF_CHECKBOX, "soap_ssl", NULL,
+ N_("Use ssl"), "1"},
{ CAMEL_PROVIDER_CONF_HIDDEN, "auth-domain", NULL,
NULL, "Groupwise" },
@@ -109,6 +115,18 @@ CamelServiceAuthType camel_groupwise_password_authtype = {
TRUE
};
+static int
+groupwise_auto_detect_cb (CamelURL *url, GHashTable **auto_detected,
+ CamelException *ex)
+{
+ *auto_detected = g_hash_table_new (g_str_hash, g_str_equal);
+
+ g_hash_table_insert (*auto_detected, g_strdup ("poa"),
+ g_strdup (url->host));
+
+ return 0;
+}
+
void
camel_provider_module_init(void)
{
@@ -117,6 +135,7 @@ camel_provider_module_init(void)
imap_provider = camel_provider_get("imap://", NULL);
groupwise_provider.url_hash = groupwise_url_hash;
groupwise_provider.url_equal = groupwise_url_equal;
+ groupwise_provider.auto_detect = groupwise_auto_detect_cb;
groupwise_provider.authtypes = g_list_prepend (groupwise_provider.authtypes, &camel_groupwise_password_authtype);
if (imap_provider != NULL) {
groupwise_provider.object_types[CAMEL_PROVIDER_STORE] = imap_provider->object_types [CAMEL_PROVIDER_STORE];
diff --git a/camel/providers/groupwise/camel-gw-listener.c b/camel/providers/groupwise/camel-gw-listener.c
index 09c36fa9fe..cbfbb233b6 100644
--- a/camel/providers/groupwise/camel-gw-listener.c
+++ b/camel/providers/groupwise/camel-gw-listener.c
@@ -30,6 +30,7 @@
#include "camel-i18n.h"
#include <e-gw-connection.h>
#include <e-passwords.h>
+#include "widgets/misc/e-error.h"
/*stores some info about all currently existing groupwise accounts
list of GwAccountInfo structures */
@@ -252,9 +253,13 @@ modify_esource (const char* conf_key, GwAccountInfo *old_account_info, const cha
CamelURL *url;
gboolean found_group;
GConfClient* client;
-
+ const char *poa_address;
+
url = camel_url_new (old_account_info->source_url, NULL);
- old_relative_uri = g_strdup_printf ("%s@%s/", url->user, url->host);
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return;
+ old_relative_uri = g_strdup_printf ("%s@%s/", url->user, poa_address);
client = gconf_client_get_default ();
list = e_source_list_new_for_gconf (client, conf_key);
groups = e_source_list_peek_groups (list);
@@ -305,13 +310,24 @@ add_calendar_tasks_sources (GwAccountInfo *info)
char *relative_uri;
const char *soap_port;
const char * use_ssl;
-
+ const char *poa_address;
+
url = camel_url_new (info->source_url, NULL);
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return;
soap_port = camel_url_get_param (url, "soap_port");
+
if (!soap_port || strlen (soap_port) == 0)
soap_port = "7181";
- use_ssl = camel_url_get_param (url, "use_ssl");
- relative_uri = g_strdup_printf ("%s@%s/", url->user, url->host);
+
+ use_ssl = camel_url_get_param (url, "soap_ssl");
+ if (use_ssl)
+ use_ssl = "always";
+ else
+ use_ssl = NULL;
+
+ relative_uri = g_strdup_printf ("%s@%s/", url->user, poa_address);
add_esource ("/apps/evolution/calendar/sources", info->name, _("Calendar"), url->user, relative_uri, soap_port, use_ssl);
add_esource ("/apps/evolution/tasks/sources", info->name, _("Checklist"), url->user, relative_uri, soap_port, use_ssl);
@@ -329,12 +345,19 @@ remove_calendar_tasks_sources (GwAccountInfo *info)
CamelURL *url;
char *relative_uri;
const char *soap_port;
+ const char *poa_address;
url = camel_url_new (info->source_url, NULL);
+
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return;
+
soap_port = camel_url_get_param (url, "soap_port");
if (!soap_port || strlen (soap_port) == 0)
soap_port = "7181";
- relative_uri = g_strdup_printf ("%s@%s/", url->user, url->host);
+
+ relative_uri = g_strdup_printf ("%s@%s/", url->user, poa_address);
remove_esource ("/apps/evolution/calendar/sources", info->name, _("Calendar"), relative_uri);
remove_esource ("/apps/evolution/tasks/sources", info->name, _("Checklist"), relative_uri);
camel_url_free (url);
@@ -357,51 +380,57 @@ get_addressbook_names_from_server (char *source_url)
char *prompt;
char *uri;
const char *use_ssl;
+ const char *poa_address;
url = camel_url_new (source_url, NULL);
if (url == NULL) {
return NULL;
}
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return NULL;
+
soap_port = camel_url_get_param (url, "soap_port");
if (!soap_port || strlen (soap_port) == 0)
soap_port = "7181";
- use_ssl = camel_url_get_param (url, "use_ssl");
- key = g_strdup_printf ("groupwise://%s@%s/", url->user, url->host);
+ use_ssl = camel_url_get_param (url, "soap_ssl");
+ key = g_strdup_printf ("groupwise://%s@%s/", url->user, poa_address);
if (use_ssl)
- uri = g_strdup_printf ("https://%s:%s/soap", url->host, soap_port);
+ uri = g_strdup_printf ("https://%s:%s/soap", poa_address, soap_port);
else
- uri = g_strdup_printf ("http://%s:%s/soap", url->host, soap_port);
+ uri = g_strdup_printf ("http://%s:%s/soap", poa_address, soap_port);
failed_auth = "";
+ cnc = NULL;
do {
prompt = g_strdup_printf (_("%sEnter password for %s (user %s)"),
- failed_auth, url->host, url->user);
+ failed_auth, poa_address, url->user);
password = e_passwords_ask_password (prompt, "Groupwise", key, prompt, TRUE,
E_PASSWORDS_REMEMBER_FOREVER, &remember,
NULL);
g_free (prompt);
- /*FIXME warn user that he can not get all his address books if he cancels */
- if (!password)
- return NULL;
+
+ if (!password)
+ break;
cnc = e_gw_connection_new (uri, url->user, password);
failed_auth = _("Failed to authenticate.\n");
} while (cnc == NULL);
-
+
if (E_IS_GW_CONNECTION(cnc)) {
book_list = NULL;
status = e_gw_connection_get_address_book_list (cnc, &book_list);
if (status == E_GW_CONNECTION_STATUS_OK)
return book_list;
- else
- return NULL;
+
+
}
-
-
+ e_error_run (NULL, "mail:gw-accountsetup-error", poa_address, NULL);
+ return NULL;
}
-static void
+static gboolean
add_addressbook_sources (EAccount *account)
{
CamelURL *url;
@@ -413,54 +442,51 @@ add_addressbook_sources (EAccount *account)
GList *books_list, *temp_list;
GConfClient* client;
const char* use_ssl;
-
+ const char *poa_address;
+
+
url = camel_url_new (account->source->url, NULL);
if (url == NULL) {
- return;
+ return FALSE;
}
+
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return FALSE;
+
soap_port = camel_url_get_param (url, "soap_port");
if (!soap_port || strlen (soap_port) == 0)
soap_port = "7181";
- use_ssl = camel_url_get_param (url, "use_ssl");
- base_uri = g_strdup_printf ("groupwise://%s@%s", url->user, url->host);
+ use_ssl = camel_url_get_param (url, "soap_ssl");
+ base_uri = g_strdup_printf ("groupwise://%s@%s", url->user, poa_address);
client = gconf_client_get_default ();
list = e_source_list_new_for_gconf (client, "/apps/evolution/addressbook/sources" );
group = e_source_group_new (account->name, base_uri);
books_list = get_addressbook_names_from_server (account->source->url);
- if (! books_list) {
- source = e_source_new ("Frequent Contacts", g_strconcat (";", "Frequent Contacts", NULL));
+ temp_list = books_list;
+ if (!temp_list)
+ return FALSE;
+ for (; temp_list != NULL; temp_list = g_list_next (temp_list)) {
+ const char *book_name = e_gw_container_get_name (E_GW_CONTAINER(temp_list->data));
+ source = e_source_new (book_name, g_strconcat (";",book_name, NULL));
e_source_set_property (source, "auth", "plain/password");
+ e_source_set_property (source, "auth-domain", "Groupwise");
e_source_set_property (source, "port", soap_port);
e_source_set_property(source, "user", url->user);
- e_source_set_property (source, "auth-domain", "Groupwise");
- e_source_set_property (source, "completion", "true");
+
+ if (!e_gw_container_get_is_writable (E_GW_CONTAINER(temp_list->data)))
+ e_source_set_property (source, "completion", "true");
+ if (e_gw_container_get_is_frequent_contacts (E_GW_CONTAINER(temp_list->data)))
+ e_source_set_property (source, "completion", "true");
e_source_set_property (source, "use_ssl", use_ssl);
e_source_group_add_source (group, source, -1);
g_object_unref (source);
- } else {
+ g_object_unref (E_GW_CONTAINER(temp_list->data));
- temp_list = books_list;
- for (; temp_list != NULL; temp_list = g_list_next (temp_list)) {
- const char *book_name = e_gw_container_get_name (E_GW_CONTAINER(temp_list->data));
- source = e_source_new (book_name, g_strconcat (";",book_name, NULL));
- e_source_set_property (source, "auth", "plain/password");
- e_source_set_property (source, "auth-domain", "Groupwise");
- e_source_set_property (source, "port", soap_port);
- e_source_set_property(source, "user", url->user);
-
- if (!e_gw_container_get_is_writable (E_GW_CONTAINER(temp_list->data)))
- e_source_set_property (source, "completion", "true");
- if (e_gw_container_get_is_frequent_contacts (E_GW_CONTAINER(temp_list->data)))
- e_source_set_property (source, "completion", "true");
- e_source_set_property (source, "use_ssl", use_ssl);
- e_source_group_add_source (group, source, -1);
- g_object_unref (source);
- g_object_unref (E_GW_CONTAINER(temp_list->data));
-
- }
-
- g_list_free (books_list);
}
+
+ g_list_free (books_list);
+
e_source_list_add_group (list, group, -1);
e_source_list_sync (list, NULL);
@@ -468,6 +494,8 @@ add_addressbook_sources (EAccount *account)
g_object_unref (list);
g_object_unref (client);
g_free (base_uri);
+
+ return TRUE;
}
static void
@@ -486,23 +514,31 @@ modify_addressbook_sources ( EAccount *account, GwAccountInfo *existing_account_
GSList *sources;
ESource *source;
GConfClient *client;
+ const char *poa_address;
url = camel_url_new (existing_account_info->source_url, NULL);
if (url == NULL) {
return;
}
- old_base_uri = g_strdup_printf ("groupwise://%s@%s", url->user, url->host);
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return;
+
+ old_base_uri = g_strdup_printf ("groupwise://%s@%s", url->user, poa_address);
camel_url_free (url);
url = camel_url_new (account->source->url, NULL);
if (url == NULL)
return ;
- new_base_uri = g_strdup_printf ("groupwise://%s@%s", url->user, url->host);
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return;
+ new_base_uri = g_strdup_printf ("groupwise://%s@%s", url->user, poa_address);
soap_port = camel_url_get_param (url, "soap_port");
if (!soap_port || strlen (soap_port) == 0)
soap_port = "7181";
- use_ssl = camel_url_get_param (url, "use_ssl");
+ use_ssl = camel_url_get_param (url, "soap_ssl");
client = gconf_client_get_default ();
list = e_source_list_new_for_gconf (client, "/apps/evolution/addressbook/sources" );
@@ -558,14 +594,21 @@ remove_addressbook_sources (GwAccountInfo *existing_account_info)
char *base_uri;
const char *soap_port;
GConfClient *client;
+ const char *poa_address;
+
url = camel_url_new (existing_account_info->source_url, NULL);
if (url == NULL) {
return;
}
+
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return;
+
soap_port = camel_url_get_param (url, "soap_port");
if (!soap_port || strlen (soap_port) == 0)
soap_port = "7181";
- base_uri = g_strdup_printf ("groupwise://%s@%s", url->user, url->host);
+ base_uri = g_strdup_printf ("groupwise://%s@%s", url->user, poa_address);
client = gconf_client_get_default ();
list = e_source_list_new_for_gconf (client, "/apps/evolution/addressbook/sources" );
groups = e_source_list_peek_groups (list);
@@ -598,6 +641,8 @@ account_added (EAccountList *account_listener, EAccount *account)
{
GwAccountInfo *info;
+ gboolean status;
+
if (!is_groupwise_account (account))
return;
@@ -605,8 +650,9 @@ account_added (EAccountList *account_listener, EAccount *account)
info->uid = g_strdup (account->uid);
info->name = g_strdup (account->name);
info->source_url = g_strdup (account->source->url);
- add_calendar_tasks_sources (info);
- add_addressbook_sources (account);
+ status = add_addressbook_sources (account);
+ if (status)
+ add_calendar_tasks_sources (info);
groupwise_accounts = g_list_append (groupwise_accounts, info);
}
@@ -645,7 +691,8 @@ account_changed (EAccountList *account_listener, EAccount *account)
const char *soap_port;
GwAccountInfo *existing_account_info;
const char *use_ssl;
-
+ const char *poa_address;
+
is_gw_account = is_groupwise_account (account);
existing_account_info = lookup_account_info (account->uid);
@@ -669,15 +716,25 @@ account_changed (EAccountList *account_listener, EAccount *account)
/* some info of groupwise account is changed . update the sources with new info if required */
url = camel_url_new (existing_account_info->source_url, NULL);
- old_relative_uri = g_strdup_printf ("%s@%s/", url->user, url->host);
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return;
+ old_relative_uri = g_strdup_printf ("%s@%s/", url->user, poa_address);
camel_url_free (url);
url = camel_url_new (account->source->url, NULL);
+
+ poa_address = camel_url_get_param (url, "poa");
+ if (!poa_address || strlen (poa_address) ==0)
+ return;
soap_port = camel_url_get_param (url, "soap_port");
if (!soap_port || strlen (soap_port) == 0)
soap_port = "7181";
- use_ssl = camel_url_get_param (url, "use_ssl");
- relative_uri = g_strdup_printf ("%s@%s/", url->user, url->host);
+ use_ssl = camel_url_get_param (url, "soap_ssl");
+ if (use_ssl)
+ use_ssl = "always";
+
+ relative_uri = g_strdup_printf ("%s@%s/", url->user, poa_address);
if (strcmp (existing_account_info->name, account->name) != 0 || strcmp (existing_account_info->source_url, account->source->url) != 0) {