static const gchar * cal_backend_http_ensure_uri (ECalBackendHttp *backend) { ESource *source; ESourceSecurity *security_extension; ESourceWebdav *webdav_extension; SoupURI *soup_uri; gboolean secure_connection; const gchar *extension_name; gchar *uri_string; if (backend->priv->uri != NULL) return backend->priv->uri; source = e_backend_get_source (E_BACKEND (backend)); extension_name = E_SOURCE_EXTENSION_SECURITY; security_extension = e_source_get_extension (source, extension_name); extension_name = E_SOURCE_EXTENSION_WEBDAV_BACKEND; webdav_extension = e_source_get_extension (source, extension_name); secure_connection = e_source_security_get_secure (security_extension); soup_uri = e_source_webdav_dup_soup_uri (webdav_extension); uri_string = soup_uri_to_string (soup_uri, FALSE); soup_uri_free (soup_uri); backend->priv->uri = webcal_to_http_method ( uri_string, secure_connection); g_free (uri_string); return backend->priv->uri; }
static void e_mail_config_mapi_extension_constructed (GObject *object) { EExtension *extension; EExtensible *extensible; ESource *source; ESourceBackend *backend_ext; EMailConfigNotebook *notebook; const gchar *backend_name; const gchar *extension_name; extension = E_EXTENSION (object); extensible = e_extension_get_extensible (extension); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (e_mail_config_mapi_extension_parent_class)->constructed (object); notebook = E_MAIL_CONFIG_NOTEBOOK (extensible); source = e_mail_config_notebook_get_account_source (notebook); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; backend_ext = e_source_get_extension (source, extension_name); backend_name = e_source_backend_get_backend_name (backend_ext); if (g_strcmp0 (backend_name, "mapi") == 0) { ESource *profile_source; ESourceCamel *camel_ext; ESourceRegistry *registry; EMailSession *mail_session; CamelSettings *settings; const gchar *profile; mail_session = e_mail_config_notebook_get_session (notebook); registry = e_mail_session_get_registry (mail_session); if (e_source_get_parent (source)) profile_source = e_source_registry_ref_source (registry, e_source_get_parent (source)); else profile_source = g_object_ref (source); camel_ext = e_source_get_extension (profile_source, e_source_camel_get_extension_name (backend_name)); settings = e_source_camel_get_settings (camel_ext); profile = camel_mapi_settings_get_profile (CAMEL_MAPI_SETTINGS (settings)); /* add page only when editing already configured accounts */ if (profile && *profile) { EMailConfigPage *page; page = e_mail_config_mapi_page_new (source, registry); e_mail_config_notebook_add_page (notebook, page); } g_object_unref (profile_source); } }
static void calendar_sources_registry_source_changed_cb (ESourceRegistry *registry, ESource *source, CalendarSources *sources) { if (e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR)) { CalendarSourceData *source_data; ESourceSelectable *extension; gboolean have_client; gboolean show_source; source_data = &sources->priv->appointment_sources; extension = e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR); have_client = (g_hash_table_lookup (source_data->clients, source) != NULL); show_source = e_source_get_enabled (source) && e_source_selectable_get_selected (extension); if (!show_source && have_client) { g_hash_table_remove (source_data->clients, source); g_signal_emit (sources, source_data->changed_signal, 0); } if (show_source && !have_client) { create_client_for_source (source, source_data->source_type, source_data); g_signal_emit (sources, source_data->changed_signal, 0); } } if (e_source_has_extension (source, E_SOURCE_EXTENSION_TASK_LIST)) { CalendarSourceData *source_data; ESourceSelectable *extension; gboolean have_client; gboolean show_source; source_data = &sources->priv->task_sources; extension = e_source_get_extension (source, E_SOURCE_EXTENSION_TASK_LIST); have_client = (g_hash_table_lookup (source_data->clients, source) != NULL); show_source = e_source_get_enabled (source) && e_source_selectable_get_selected (extension); if (!show_source && have_client) { g_hash_table_remove (source_data->clients, source); g_signal_emit (sources, source_data->changed_signal, 0); } if (show_source && !have_client) { create_client_for_source (source, source_data->source_type, source_data); g_signal_emit (sources, source_data->changed_signal, 0); } } }
static void outlook_backend_child_added (ECollectionBackend *backend, ESource *child_source) { ESource *collection_source; const gchar *extension_name; gboolean is_mail = FALSE; collection_source = e_backend_get_source (E_BACKEND (backend)); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; is_mail |= e_source_has_extension (child_source, extension_name); extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY; is_mail |= e_source_has_extension (child_source, extension_name); extension_name = E_SOURCE_EXTENSION_MAIL_TRANSPORT; is_mail |= e_source_has_extension (child_source, extension_name); /* Synchronize mail-related user with the collection identity. */ extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; if (is_mail && e_source_has_extension (child_source, extension_name)) { ESourceAuthentication *auth_child_extension; ESourceCollection *collection_extension; const gchar *collection_identity; const gchar *auth_child_user; extension_name = E_SOURCE_EXTENSION_COLLECTION; collection_extension = e_source_get_extension ( collection_source, extension_name); collection_identity = e_source_collection_get_identity ( collection_extension); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; auth_child_extension = e_source_get_extension ( child_source, extension_name); auth_child_user = e_source_authentication_get_user ( auth_child_extension); /* XXX Do not override an existing user name setting. * The IMAP or (especially) SMTP configuration may * have been modified to use a non-Outlook server. */ if (auth_child_user == NULL) e_source_authentication_set_user ( auth_child_extension, collection_identity); } /* Chain up to parent's child_added() method. */ E_COLLECTION_BACKEND_CLASS (e_outlook_backend_parent_class)-> child_added (backend, child_source); }
static void google_backend_add_tasks (ECollectionBackend *backend) { ESource *source; ESource *collection_source; ESourceRegistryServer *server; ESourceExtension *extension; ESourceCollection *collection_extension; const gchar *backend_name; const gchar *extension_name; const gchar *resource_id; collection_source = e_backend_get_source (E_BACKEND (backend)); resource_id = GOOGLE_TASKS_RESOURCE_ID; source = e_collection_backend_new_child (backend, resource_id); e_source_set_display_name (source, _("Tasks")); collection_extension = e_source_get_extension ( collection_source, E_SOURCE_EXTENSION_COLLECTION); /* Configure the tasks source. */ backend_name = GOOGLE_TASKS_BACKEND_NAME; extension_name = E_SOURCE_EXTENSION_TASK_LIST; extension = e_source_get_extension (source, extension_name); e_source_backend_set_backend_name ( E_SOURCE_BACKEND (extension), backend_name); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; extension = e_source_get_extension (source, extension_name); g_object_bind_property ( collection_extension, "identity", extension, "user", G_BINDING_SYNC_CREATE); extension_name = E_SOURCE_EXTENSION_SECURITY; extension = e_source_get_extension (source, extension_name); e_source_security_set_secure ( E_SOURCE_SECURITY (extension), TRUE); server = e_collection_backend_ref_server (backend); e_source_registry_server_add_source (server, source); g_object_unref (server); g_object_unref (source); }
static void eee_backend_child_added (ECollectionBackend *backend, ESource *child_source) { ESource *collection_source; const gchar *extension_name; gboolean is_mail = FALSE; collection_source = e_backend_get_source (E_BACKEND (backend)); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; is_mail |= e_source_has_extension (child_source, extension_name); extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY; is_mail |= e_source_has_extension (child_source, extension_name); extension_name = E_SOURCE_EXTENSION_MAIL_TRANSPORT; is_mail |= e_source_has_extension (child_source, extension_name); /* Synchronize mail-related display names with the collection. */ if (is_mail) g_object_bind_property ( collection_source, "display-name", child_source, "display-name", G_BINDING_SYNC_CREATE); /* Synchronize mail-related user with the collection identity. */ extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; if (is_mail && e_source_has_extension (child_source, extension_name)) { ESourceAuthentication *auth_child_extension; ESourceCollection *collection_extension; extension_name = E_SOURCE_EXTENSION_COLLECTION; collection_extension = e_source_get_extension ( collection_source, extension_name); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; auth_child_extension = e_source_get_extension ( child_source, extension_name); g_object_bind_property ( collection_extension, "identity", auth_child_extension, "user", G_BINDING_SYNC_CREATE); } /* Chain up to parent's child_added() method. */ E_COLLECTION_BACKEND_CLASS (e_eee_backend_parent_class)-> child_added (backend, child_source); }
static void google_backend_add_contacts (ECollectionBackend *backend) { ESource *source; ESource *collection_source; ESourceRegistryServer *server; ESourceExtension *extension; ESourceCollection *collection_extension; const gchar *backend_name; const gchar *extension_name; const gchar *resource_id; collection_source = e_backend_get_source (E_BACKEND (backend)); resource_id = GOOGLE_CONTACTS_RESOURCE_ID; source = e_collection_backend_new_child (backend, resource_id); e_source_set_display_name (source, _("Contacts")); /* Add the address book source to the collection. */ collection_extension = e_source_get_extension ( collection_source, E_SOURCE_EXTENSION_COLLECTION); /* Configure the address book source. */ backend_name = GOOGLE_CONTACTS_BACKEND_NAME; extension_name = E_SOURCE_EXTENSION_ADDRESS_BOOK; extension = e_source_get_extension (source, extension_name); e_source_backend_set_backend_name ( E_SOURCE_BACKEND (extension), backend_name); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; extension = e_source_get_extension (source, extension_name); e_source_authentication_set_host ( E_SOURCE_AUTHENTICATION (extension), GOOGLE_CONTACTS_HOST); g_object_bind_property ( collection_extension, "identity", extension, "user", G_BINDING_SYNC_CREATE); server = e_collection_backend_ref_server (backend); e_source_registry_server_add_source (server, source); g_object_unref (server); g_object_unref (source); }
static gchar * set_organizer (ECalComponent *comp, CamelMimeMessage *message, CamelFolder *folder, const gchar *message_uid) { EShell *shell; ESource *source = NULL; ESourceRegistry *registry; ESourceMailIdentity *extension; const gchar *extension_name; const gchar *address, *name; ECalComponentOrganizer organizer = {NULL, NULL, NULL, NULL}; gchar *mailto = NULL; gchar *identity_name = NULL, *identity_address = NULL; shell = e_shell_get_default (); registry = e_shell_get_registry (shell); source = em_utils_guess_mail_identity_with_recipients (registry, message, folder, message_uid, &identity_name, &identity_address); if (!source && folder) { CamelStore *store; store = camel_folder_get_parent_store (folder); source = em_utils_ref_mail_identity_for_store (registry, store); } if (source == NULL) source = e_source_registry_ref_default_mail_identity (registry); g_return_val_if_fail (source != NULL, NULL); extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY; extension = e_source_get_extension (source, extension_name); name = identity_name; if (!name || !*name) name = e_source_mail_identity_get_name (extension); address = identity_address; if (!address || !*address) { name = e_source_mail_identity_get_name (extension); address = e_source_mail_identity_get_address (extension); } if (address && *address) { mailto = g_strconcat ("mailto:", address, NULL); organizer.value = mailto; organizer.cn = name; e_cal_component_set_organizer (comp, &organizer); } g_object_unref (source); g_free (identity_name); g_free (identity_address); return mailto; }
static gboolean alarm_selector_set_source_selected (ESourceSelector *selector, ESource *source, gboolean selected) { ESourceAlarms *extension; const gchar *extension_name; /* Make sure this source is a calendar. */ extension_name = e_source_selector_get_extension_name (selector); if (!e_source_has_extension (source, extension_name)) return FALSE; extension_name = E_SOURCE_EXTENSION_ALARMS; extension = e_source_get_extension (source, extension_name); g_return_val_if_fail (E_IS_SOURCE_ALARMS (extension), FALSE); if (selected != e_source_alarms_get_include_me (extension)) { e_source_alarms_set_include_me (extension, selected); e_source_selector_queue_write (selector, source); return TRUE; } return FALSE; }
static void auto_account_commit (struct _auto_data *info) { gint period, check; const gchar *extension_name; ESourceExtension *extension; extension_name = E_SOURCE_EXTENSION_REFRESH; extension = e_source_get_extension (info->account, extension_name); check = e_source_get_enabled (info->account) && e_source_refresh_get_enabled ((ESourceRefresh *)extension); period = e_source_refresh_get_interval_minutes ((ESourceRefresh *)extension) * 60; period = MAX (60, period); if (info->timeout_id && (!check || period != info->period)) { g_source_remove (info->timeout_id); info->timeout_id = 0; } info->period = period; if (check && info->timeout_id == 0) info->timeout_id = g_timeout_add_seconds (info->period, auto_timeout, info); }
/** * e_cal_backend_mail_account_get_default: * @registry: an #ESourceRegistry * @address: placeholder for default address * @name: placeholder for name * * Retrieve the default mail account as stored in Evolution configuration. * * Returns: TRUE if there is a default account, FALSE otherwise. */ gboolean e_cal_backend_mail_account_get_default (ESourceRegistry *registry, gchar **address, gchar **name) { ESource *source; ESourceMailIdentity *extension; const gchar *extension_name; g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), FALSE); source = e_source_registry_ref_default_mail_identity (registry); if (source == NULL) return FALSE; extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY; extension = e_source_get_extension (source, extension_name); if (address != NULL) *address = e_source_mail_identity_dup_address (extension); if (name != NULL) *name = e_source_mail_identity_dup_name (extension); g_object_unref (source); return TRUE; }
static gboolean conflict_search_selector_set_source_selected (ESourceSelector *selector, ESource *source, gboolean selected) { ESourceConflictSearch *extension; const gchar *extension_name; /* Make sure this source is a calendar. */ extension_name = e_source_selector_get_extension_name (selector); if (!e_source_has_extension (source, extension_name)) return FALSE; extension_name = E_SOURCE_EXTENSION_CONFLICT_SEARCH; extension = e_source_get_extension (source, extension_name); g_return_val_if_fail (E_IS_SOURCE_CONFLICT_SEARCH (extension), FALSE); if (selected != e_source_conflict_search_get_include_me (extension)) { e_source_conflict_search_set_include_me (extension, selected); e_source_selector_queue_write (selector, source); return TRUE; } return FALSE; }
/** * em_utils_folder_is_drafts: * @registry: an #ESourceRegistry * @folder: a #CamelFolder * * Decides if @folder is a Drafts folder. * * Returns %TRUE if this is a Drafts folder or %FALSE otherwise. **/ gboolean em_utils_folder_is_drafts (ESourceRegistry *registry, CamelFolder *folder) { CamelFolder *local_drafts_folder; CamelSession *session; CamelStore *store; GList *list, *iter; gchar *folder_uri; gboolean is_drafts = FALSE; const gchar *extension_name; g_return_val_if_fail (CAMEL_IS_FOLDER (folder), FALSE); store = camel_folder_get_parent_store (folder); session = camel_service_ref_session (CAMEL_SERVICE (store)); local_drafts_folder = e_mail_session_get_local_folder ( E_MAIL_SESSION (session), E_MAIL_LOCAL_FOLDER_DRAFTS); if (folder == local_drafts_folder) { is_drafts = TRUE; goto exit; } folder_uri = e_mail_folder_uri_from_folder (folder); store = camel_folder_get_parent_store (folder); extension_name = E_SOURCE_EXTENSION_MAIL_COMPOSITION; list = e_source_registry_list_sources (registry, extension_name); for (iter = list; iter != NULL; iter = g_list_next (iter)) { ESource *source = E_SOURCE (iter->data); ESourceExtension *extension; const gchar *drafts_folder_uri; extension = e_source_get_extension (source, extension_name); drafts_folder_uri = e_source_mail_composition_get_drafts_folder ( E_SOURCE_MAIL_COMPOSITION (extension)); if (drafts_folder_uri != NULL) is_drafts = e_mail_folder_uri_equal ( session, folder_uri, drafts_folder_uri); if (is_drafts) break; } g_list_free_full (list, (GDestroyNotify) g_object_unref); g_free (folder_uri); exit: g_object_unref (session); return is_drafts; }
ESource * em_utils_ref_mail_identity_for_store (ESourceRegistry *registry, CamelStore *store) { ESourceMailAccount *extension; ESource *source; const gchar *extension_name; const gchar *store_uid; gchar *identity_uid; g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), NULL); g_return_val_if_fail (CAMEL_IS_STORE (store), NULL); store_uid = camel_service_get_uid (CAMEL_SERVICE (store)); g_return_val_if_fail (store_uid != NULL, NULL); source = e_source_registry_ref_source (registry, store_uid); g_return_val_if_fail (source != NULL, NULL); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; extension = e_source_get_extension (source, extension_name); identity_uid = e_source_mail_account_dup_identity_uid (extension); g_object_unref (source); source = NULL; if (identity_uid != NULL) { source = e_source_registry_ref_source (registry, identity_uid); g_free (identity_uid); } return source; }
static gchar * get_source_backend_name (ECalClient *esource) { ESource *source; ECalClientSourceType source_type; ESourceBackend *extension; const gchar *extension_name; g_return_val_if_fail (E_IS_CAL_CLIENT (esource), NULL); source = e_client_get_source (E_CLIENT (esource)); source_type = e_cal_client_get_source_type (esource); switch (source_type) { case E_CAL_CLIENT_SOURCE_TYPE_EVENTS: extension_name = E_SOURCE_EXTENSION_CALENDAR; break; case E_CAL_CLIENT_SOURCE_TYPE_TASKS: extension_name = E_SOURCE_EXTENSION_TASK_LIST; break; default: g_return_val_if_reached (NULL); } extension = e_source_get_extension (source, extension_name); return e_source_backend_dup_backend_name (extension); }
static void ebbm_contacts_open (EBookBackendMAPI *ebma, GCancellable *cancellable, gboolean only_if_exists, GError **perror) { ESource *source = e_backend_get_source (E_BACKEND (ebma)); ESourceMapiFolder *ext_mapi_folder; EBookBackendMAPIContactsPrivate *priv = ((EBookBackendMAPIContacts *) ebma)->priv; GError *err = NULL; if (e_book_backend_is_opened (E_BOOK_BACKEND (ebma))) { if (E_BOOK_BACKEND_MAPI_CLASS (e_book_backend_mapi_contacts_parent_class)->op_open) E_BOOK_BACKEND_MAPI_CLASS (e_book_backend_mapi_contacts_parent_class)->op_open (ebma, cancellable, only_if_exists, perror); return; } ext_mapi_folder = e_source_get_extension (source, E_SOURCE_EXTENSION_MAPI_FOLDER); priv->fid = e_source_mapi_folder_get_id (ext_mapi_folder); priv->is_public_folder = e_source_mapi_folder_is_public (ext_mapi_folder); priv->foreign_username = e_source_mapi_folder_dup_foreign_username (ext_mapi_folder); if (priv->foreign_username && !*priv->foreign_username) { g_free (priv->foreign_username); priv->foreign_username = NULL; } /* Chain up to parent's op_load_source() method. */ if (E_BOOK_BACKEND_MAPI_CLASS (e_book_backend_mapi_contacts_parent_class)->op_open) E_BOOK_BACKEND_MAPI_CLASS (e_book_backend_mapi_contacts_parent_class)->op_open (ebma, cancellable, only_if_exists, &err); if (err) g_propagate_error (perror, err); }
/* Helper for e_mail_session_ref_default_transport() * and mail_session_ref_transport_from_x_identity(). */ static CamelService * mail_session_ref_transport_for_identity (EMailSession *session, ESource *source) { ESourceRegistry *registry; ESourceMailSubmission *extension; CamelService *transport = NULL; const gchar *extension_name; gchar *uid; registry = e_mail_session_get_registry (session); extension_name = E_SOURCE_EXTENSION_MAIL_SUBMISSION; if (source == NULL) return NULL; if (!e_source_registry_check_enabled (registry, source)) return NULL; if (!e_source_has_extension (source, extension_name)) return NULL; extension = e_source_get_extension (source, extension_name); uid = e_source_mail_submission_dup_transport_uid (extension); if (uid != NULL) { transport = e_mail_session_ref_transport (session, uid); g_free (uid); } return transport; }
static gboolean mail_account_in_recipients (ESourceRegistry *registry, ESource *source, GHashTable *recipients) { ESourceExtension *extension; const gchar *extension_name; const gchar *uid; gboolean match = FALSE; gchar *address; /* Disregard disabled mail accounts. */ if (!e_source_registry_check_enabled (registry, source)) return FALSE; extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; extension = e_source_get_extension (source, extension_name); uid = e_source_mail_account_get_identity_uid ( E_SOURCE_MAIL_ACCOUNT (extension)); if (uid == NULL) return FALSE; source = e_source_registry_ref_source (registry, uid); if (source == NULL) return FALSE; extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY; if (!e_source_has_extension (source, extension_name)) { g_object_unref (source); return FALSE; } extension = e_source_get_extension (source, extension_name); address = e_source_mail_identity_dup_address ( E_SOURCE_MAIL_IDENTITY (extension)); g_object_unref (source); if (address != NULL) { match = g_hash_table_contains (recipients, address); g_free (address); } return match; }
static void google_backend_calendar_update_auth_method (ESource *source) { EOAuth2Support *oauth2_support; ESourceAuthentication *auth_extension; ESourceWebdav *webdav_extension; const gchar *extension_name; const gchar *host; const gchar *method; const gchar *path_format; gchar *path; gchar *user; oauth2_support = e_server_side_source_ref_oauth2_support ( E_SERVER_SIDE_SOURCE (source)); /* The host name and WebDAV resource path depend on the * authentication method used, so update those here too. */ if (oauth2_support != NULL) { method = "OAuth2"; host = GOOGLE_CALDAV_V2_HOST; path_format = GOOGLE_CALDAV_V2_PATH; } else { method = "plain/password"; host = GOOGLE_CALDAV_V1_HOST; path_format = GOOGLE_CALDAV_V1_PATH; } extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; auth_extension = e_source_get_extension (source, extension_name); e_source_authentication_set_host (auth_extension, host); e_source_authentication_set_method (auth_extension, method); extension_name = E_SOURCE_EXTENSION_WEBDAV_BACKEND; webdav_extension = e_source_get_extension (source, extension_name); user = e_source_authentication_dup_user (auth_extension); path = g_strdup_printf (path_format, (user != NULL) ? user : ""); e_source_webdav_set_resource_path (webdav_extension, path); g_free (path); g_free (user); g_clear_object (&oauth2_support); }
static void mail_config_ews_notebook_constructed (GObject *object) { EMailConfigEwsNotebook *extension; EMailConfigNotebook *notebook; EMailSession *session; ESource *account_source; ESource *identity_source; ESource *collection_source; ESourceBackend *backend_ext; ESourceRegistry *registry; const gchar *backend_name; const gchar *extension_name; extension = E_MAIL_CONFIG_EWS_NOTEBOOK (object); notebook = mail_config_ews_notebook_get_extensible (extension); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (e_mail_config_ews_notebook_parent_class)->constructed (object); session = e_mail_config_notebook_get_session (notebook); registry = e_mail_session_get_registry (session); account_source = e_mail_config_notebook_get_account_source (notebook); identity_source = e_mail_config_notebook_get_identity_source (notebook); collection_source = e_mail_config_notebook_get_collection_source (notebook); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; backend_ext = e_source_get_extension (account_source, extension_name); backend_name = e_source_backend_get_backend_name (backend_ext); if (g_strcmp0 (backend_name, "ews") == 0) { EMailConfigPage *page; page = e_mail_config_ews_ooo_page_new ( registry, account_source, identity_source, collection_source); e_mail_config_notebook_add_page (notebook, page); page = e_mail_config_ews_delegates_page_new ( registry, account_source, identity_source, collection_source); e_mail_config_notebook_add_page (notebook, page); page = e_mail_config_ews_folder_sizes_page_new ( account_source, registry); e_mail_config_notebook_add_page (notebook, page); } }
void get_color_name_from_source (ESource *source, GdkRGBA *out_color) { ESourceSelectable *extension = E_SOURCE_SELECTABLE (e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR)); /* FIXME: We should handle calendars colours better */ if (!gdk_rgba_parse (out_color, e_source_selectable_get_color (extension))) gdk_rgba_parse (out_color, "#becedd"); /* calendar default colour */ }
static gboolean e_soup_ssl_trust_accept_certificate_cb (GTlsConnection *conn, GTlsCertificate *peer_cert, GTlsCertificateFlags errors, gpointer user_data) { ESoupSslTrustData *handler = user_data; ETrustPromptResponse response; SoupURI *soup_uri; const gchar *host; gchar *auth_host = NULL; soup_uri = soup_message_get_uri (handler->soup_message); if (!soup_uri || !soup_uri_get_host (soup_uri)) return FALSE; host = soup_uri_get_host (soup_uri); if (e_source_has_extension (handler->source, E_SOURCE_EXTENSION_AUTHENTICATION)) { ESourceAuthentication *extension_authentication; extension_authentication = e_source_get_extension (handler->source, E_SOURCE_EXTENSION_AUTHENTICATION); auth_host = e_source_authentication_dup_host (extension_authentication); if (auth_host && *auth_host) { /* Use the 'host' from the Authentication extension, because it's the one used when storing the trust prompt result. The SoupMessage can be redirected, thus it would not ever match. */ host = auth_host; } else { g_free (auth_host); auth_host = NULL; } } response = e_source_webdav_verify_ssl_trust ( e_source_get_extension (handler->source, E_SOURCE_EXTENSION_WEBDAV_BACKEND), host, peer_cert, errors); g_free (auth_host); return (response == E_TRUST_PROMPT_RESPONSE_ACCEPT || response == E_TRUST_PROMPT_RESPONSE_ACCEPT_TEMPORARILY); }
static void kolab_backend_prepare_mail_account_source (ESource *source) { ESourceBackend *extension; const gchar *extension_name; extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; extension = e_source_get_extension (source, extension_name); e_source_backend_set_backend_name (extension, "kolab"); }
static void eas_backend_prepare_mail_transport_source (ESource *source) { ESourceBackend *extension; const gchar *extension_name; extension_name = E_SOURCE_EXTENSION_MAIL_TRANSPORT; extension = e_source_get_extension (source, extension_name); e_source_backend_set_backend_name (extension, "eas"); }
/* Helper for e_mail_session_get_fcc_for_message_sync() */ static CamelFolder * mail_session_ref_fcc_from_identity (EMailSession *session, ESource *source, CamelMimeMessage *message, GCancellable *cancellable, GError **error) { ESourceRegistry *registry; ESourceMailSubmission *extension; CamelFolder *folder = NULL; const gchar *extension_name; gchar *folder_uri; registry = e_mail_session_get_registry (session); extension_name = E_SOURCE_EXTENSION_MAIL_SUBMISSION; if (source == NULL) return NULL; if (!e_source_registry_check_enabled (registry, source)) return NULL; if (!e_source_has_extension (source, extension_name)) return NULL; extension = e_source_get_extension (source, extension_name); if (e_source_mail_submission_get_replies_to_origin_folder (extension)) { GError *local_error = NULL; /* This may return NULL without setting a GError. */ folder = mail_session_ref_origin_folder ( session, message, cancellable, &local_error); if (local_error != NULL) { g_warn_if_fail (folder == NULL); g_propagate_error (error, local_error); return NULL; } } folder_uri = e_source_mail_submission_dup_sent_folder (extension); if (folder_uri != NULL && folder == NULL) { /* This may return NULL without setting a GError. */ folder = mail_session_try_uri_to_folder ( session, folder_uri, cancellable, error); } g_free (folder_uri); return folder; }
static ESourceAuthenticationResult book_backend_webdav_try_password_sync (ESourceAuthenticator *authenticator, const GString *password, GCancellable *cancellable, GError **error) { EBookBackendWebdav *webdav = E_BOOK_BACKEND_WEBDAV (authenticator); ESourceAuthentication *auth_extension; ESourceAuthenticationResult result; ESource *source; SoupMessage *message; const gchar *extension_name; source = e_backend_get_source (E_BACKEND (authenticator)); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; auth_extension = e_source_get_extension (source, extension_name); webdav->priv->username = e_source_authentication_dup_user (auth_extension); webdav->priv->password = g_strdup (password->str); /* Send a PROPFIND to test whether user/password is correct. */ message = send_propfind (webdav, cancellable); switch (message->status_code) { case SOUP_STATUS_OK: case SOUP_STATUS_MULTI_STATUS: result = E_SOURCE_AUTHENTICATION_ACCEPTED; break; case SOUP_STATUS_UNAUTHORIZED: case SOUP_STATUS_PROXY_UNAUTHORIZED: /* XXX really? */ g_free (webdav->priv->username); webdav->priv->username = NULL; g_free (webdav->priv->password); webdav->priv->password = NULL; result = E_SOURCE_AUTHENTICATION_REJECTED; break; default: g_set_error ( error, SOUP_HTTP_ERROR, message->status_code, "%s", message->reason_phrase); result = E_SOURCE_AUTHENTICATION_ERROR; break; } g_object_unref (message); return result; }
/** * kolab_util_backend_get_foldername: * @backend: an #EBackend * * Returns the Kolab foldername for @backend. * * Returns: the foldername for @backend **/ const gchar * kolab_util_backend_get_foldername (EBackend *backend) { ESource *source; ESourceResource *extension; const gchar *extension_name; g_return_val_if_fail (E_IS_BACKEND (backend), NULL); source = e_backend_get_source (backend); extension_name = E_SOURCE_EXTENSION_KOLAB_FOLDER; extension = e_source_get_extension (source, extension_name); return e_source_resource_get_identity (extension); }
static void ebbm_contacts_connection_status_changed (EBookBackendMAPI *ebma, gboolean is_online) { ESource *source; ESourceMapiFolder *ext_mapi_folder; e_book_backend_set_writable (E_BOOK_BACKEND (ebma), is_online); if (!is_online) return; source = e_backend_get_source (E_BACKEND (ebma)); ext_mapi_folder = e_source_get_extension (source, E_SOURCE_EXTENSION_MAPI_FOLDER); if (e_source_mapi_folder_get_server_notification (ext_mapi_folder)) { EMapiConnection *conn; mapi_object_t obj_folder; gboolean status; GError *mapi_error = NULL; e_book_backend_mapi_lock_connection (ebma); conn = e_book_backend_mapi_get_connection (ebma, NULL, NULL); if (!conn) { e_book_backend_mapi_unlock_connection (ebma); return; } status = ebbm_contacts_open_folder (E_BOOK_BACKEND_MAPI_CONTACTS (ebma), conn, &obj_folder, NULL, &mapi_error); if (status) { e_mapi_connection_enable_notifications (conn, &obj_folder, fnevObjectCreated | fnevObjectModified | fnevObjectDeleted | fnevObjectMoved | fnevObjectCopied, NULL, &mapi_error); e_mapi_connection_close_folder (conn, &obj_folder, NULL, &mapi_error); } e_book_backend_mapi_maybe_disconnect (ebma, mapi_error); g_clear_error (&mapi_error); g_signal_connect (conn, "server-notification", G_CALLBACK (ebbmc_server_notification_cb), ebma); e_book_backend_mapi_unlock_connection (ebma); } }
static gchar * set_organizer (ECalComponent *comp, CamelFolder *folder) { EShell *shell; ESource *source = NULL; ESourceRegistry *registry; ESourceMailIdentity *extension; const gchar *extension_name; const gchar *address, *name; ECalComponentOrganizer organizer = {NULL, NULL, NULL, NULL}; gchar *mailto = NULL; shell = e_shell_get_default (); registry = e_shell_get_registry (shell); if (folder != NULL) { CamelStore *store; store = camel_folder_get_parent_store (folder); source = em_utils_ref_mail_identity_for_store (registry, store); } if (source == NULL) source = e_source_registry_ref_default_mail_identity (registry); g_return_val_if_fail (source != NULL, NULL); extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY; extension = e_source_get_extension (source, extension_name); name = e_source_mail_identity_get_name (extension); address = e_source_mail_identity_get_address (extension); if (name != NULL && address != NULL) { mailto = g_strconcat ("mailto:", address, NULL); organizer.value = mailto; organizer.cn = name; e_cal_component_set_organizer (comp, &organizer); } g_object_unref (source); return mailto; }
static void google_backend_contacts_update_auth_method (ESource *source) { EOAuth2Support *oauth2_support; ESourceAuthentication *extension; const gchar *extension_name; const gchar *method; oauth2_support = e_server_side_source_ref_oauth2_support ( E_SERVER_SIDE_SOURCE (source)); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; extension = e_source_get_extension (source, extension_name); method = (oauth2_support != NULL) ? "OAuth2" : "ClientLogin"; e_source_authentication_set_method (extension, method); g_clear_object (&oauth2_support); }