EProxy * proxy_init(void) { EProxy *proxy; proxy = e_proxy_new (); e_proxy_setup_proxy (proxy); return proxy; }
static void e_book_backend_webdav_open (EBookBackend *backend, EDataBook *book, guint opid, GCancellable *cancellable, gboolean only_if_exists) { EBookBackendWebdav *webdav = E_BOOK_BACKEND_WEBDAV (backend); EBookBackendWebdavPrivate *priv = webdav->priv; ESourceAuthentication *auth_extension; ESourceOffline *offline_extension; ESourceWebdav *webdav_extension; ESource *source; const gchar *extension_name; const gchar *cache_dir; gchar *filename; SoupSession *session; SoupURI *suri; GError *error = NULL; /* will try fetch ctag for the first time, if it fails then sets this to FALSE */ priv->supports_getctag = TRUE; source = e_backend_get_source (E_BACKEND (backend)); cache_dir = e_book_backend_get_cache_dir (backend); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; auth_extension = e_source_get_extension (source, extension_name); extension_name = E_SOURCE_EXTENSION_OFFLINE; offline_extension = e_source_get_extension (source, extension_name); extension_name = E_SOURCE_EXTENSION_WEBDAV_BACKEND; webdav_extension = e_source_get_extension (source, extension_name); priv->marked_for_offline = e_source_offline_get_stay_synchronized (offline_extension); if (!e_backend_get_online (E_BACKEND (backend)) && !priv->marked_for_offline ) { e_book_backend_respond_opened (backend, book, opid, EDB_ERROR (OFFLINE_UNAVAILABLE)); return; } suri = e_source_webdav_dup_soup_uri (webdav_extension); priv->uri = soup_uri_to_string (suri, FALSE); if (!priv->uri || !*priv->uri) { g_free (priv->uri); priv->uri = NULL; soup_uri_free (suri); e_book_backend_respond_opened (backend, book, opid, EDB_ERROR_EX (OTHER_ERROR, _("Cannot transform SoupURI to string"))); return; } g_mutex_lock (&priv->cache_lock); /* make sure the priv->uri ends with a forward slash */ if (priv->uri[strlen (priv->uri) - 1] != '/') { gchar *tmp = priv->uri; priv->uri = g_strconcat (tmp, "/", NULL); g_free (tmp); } if (!priv->cache) { filename = g_build_filename (cache_dir, "cache.xml", NULL); priv->cache = e_book_backend_cache_new (filename); g_free (filename); } g_mutex_unlock (&priv->cache_lock); session = soup_session_sync_new (); g_object_set ( session, SOUP_SESSION_TIMEOUT, 90, SOUP_SESSION_SSL_STRICT, TRUE, SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE, TRUE, NULL); e_source_webdav_unset_temporary_ssl_trust (webdav_extension); g_signal_connect ( session, "authenticate", G_CALLBACK (soup_authenticate), webdav); priv->session = session; priv->proxy = e_proxy_new (); e_proxy_setup_proxy (priv->proxy); g_signal_connect ( priv->proxy, "changed", G_CALLBACK (proxy_settings_changed), priv); proxy_settings_changed (priv->proxy, priv); webdav_debug_setup (priv->session); e_book_backend_notify_online (backend, TRUE); e_book_backend_notify_readonly (backend, FALSE); if (e_source_authentication_required (auth_extension)) e_backend_authenticate_sync ( E_BACKEND (backend), E_SOURCE_AUTHENTICATOR (backend), cancellable, &error); soup_uri_free (suri); /* This function frees the GError passed to it. */ e_book_backend_respond_opened (backend, book, opid, error); }