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
This commit is contained in:
committed by
Sivaiah Nallagatla
parent
f000b8fa4f
commit
bbfd4edac1
@ -1,3 +1,23 @@
|
||||
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
|
||||
|
||||
2004-07-26 Jeffrey Stedfast <fejj@novell.com>
|
||||
|
||||
* camel-charset-map.c (camel_charset_best_mask): Changed the logic
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user