static void rss_resolve_callback (SoupAddress *addr, guint status, gpointer data) { STNET *stnet = (STNET *)data; SoupURI *proxy_uri = NULL; if (status == SOUP_STATUS_OK) { if (rss_ep_need_proxy_http (proxy, stnet->host, stnet->addr)) { #if (DATASERVER_VERSION >=2026000) proxy_uri = e_proxy_peek_uri_for (proxy, stnet->url); #else g_print("WARN: e_proxy_peek_uri_for() requires evolution-data-server 2.26\n"); return; #endif if (proxy_uri) { d("proxified %s with %s:%d\n", stnet->url, proxy_uri->host, proxy_uri->port); } } } else { d("no PROXY-%s\n", stnet->url); } g_object_set ( G_OBJECT (stnet->ss), SOUP_SESSION_PROXY_URI, proxy_uri, NULL); stnet->callback(stnet->data); }
static void rss_webkit_resolve_callback (SoupAddress *addr, guint status, gpointer data) { WEBKITNET *wknet = (WEBKITNET *)data; SoupURI *proxy_uri = NULL; if (status == SOUP_STATUS_OK) { if (rss_ep_need_proxy_http (proxy, wknet->host, wknet->addr)) { #if (DATASERVER_VERSION >=2026000) proxy_uri = e_proxy_peek_uri_for (proxy, wknet->base); #else g_print("WARN: e_proxy_peek_uri_for() requires evolution-data-server 2.26\n"); return; #endif if (proxy_uri) { d("proxified %s with %s:%d\n", wknet->base, proxy_uri->host, proxy_uri->port); } } } else { d("no PROXY-%s\n", wknet->base); } g_object_set ( G_OBJECT (webkit_session), SOUP_SESSION_PROXY_URI, proxy_uri, NULL); wknet->cb(wknet->str, wknet->base, wknet->encoding); }
static void proxy_settings_changed (EProxy *proxy, gpointer user_data) { SoupURI *proxy_uri = NULL; EBookBackendWebdavPrivate *priv = (EBookBackendWebdavPrivate *) user_data; if (!priv || !priv->uri || !priv->session) return; /* use proxy if necessary */ if (e_proxy_require_proxy_for_uri (proxy, priv->uri)) { proxy_uri = e_proxy_peek_uri_for (proxy, priv->uri); } g_object_set (priv->session, SOUP_SESSION_PROXY_URI, proxy_uri, NULL); }
//this will insert proxy in the session void proxify_session(EProxy *proxy, SoupSession *session, gchar *uri) { SoupURI *proxy_uri = NULL; #if EVOLUTION_VERSION < 30304 gint ptype = gconf_client_get_int ( rss_gconf, KEY_GCONF_EVO_PROXY_TYPE, NULL); #else GSettings *settings = g_settings_new(CONF_SCHEMA_EVO_NETWORK); gint ptype = g_settings_get_int ( settings, CONF_EVO_PROXY_TYPE); #endif switch (ptype) { #ifndef HAVE_LIBSOUP_GNOME case 0: #endif case 2: if (e_proxy_require_proxy_for_uri (proxy, uri)) { #if (DATASERVER_VERSION >=2026000) proxy_uri = e_proxy_peek_uri_for (proxy, uri); #else g_print("WARN: e_proxy_peek_uri_for() requires evolution-data-server 2.26\n"); return; #endif if (proxy_uri) { d("proxified %s with %s:%d\n", uri, proxy_uri->host, proxy_uri->port); } } else { d("no PROXY-%s\n", uri); } g_object_set ( G_OBJECT (session), SOUP_SESSION_PROXY_URI, proxy_uri, NULL); break; #ifdef HAVE_LIBSOUP_GNOME case 0: soup_session_add_feature_by_type ( session, SOUP_TYPE_PROXY_RESOLVER_DEFAULT); break; #endif } }
//this will insert proxy in the session //and queue the message to be sent void proxify_session_async(EProxy *proxy, STNET *stnet) { SoupURI *proxy_uri = NULL, *su; #if EVOLUTION_VERSION < 30304 gint ptype = gconf_client_get_int ( rss_gconf, KEY_GCONF_EVO_PROXY_TYPE, NULL); #else GSettings *settings = g_settings_new(CONF_SCHEMA_EVO_NETWORK); gint ptype = g_settings_get_int ( settings, CONF_EVO_PROXY_TYPE); #endif switch (ptype) { #ifndef HAVE_LIBSOUP_GNOME case 0: #endif case 2: su = soup_uri_new (stnet->url); stnet->host = su->host; if (su) { if (su->scheme == SOUP_URI_SCHEME_HTTPS) { if (rss_ep_need_proxy_https (proxy, su->host)) { #if (DATASERVER_VERSION >=2026000) proxy_uri = e_proxy_peek_uri_for (proxy, stnet->url); #else g_print("WARN: e_proxy_peek_uri_for() requires evolution-data-server 2.26\n"); soup_uri_free(su); return; #endif if (proxy_uri) { d("proxified %s with %s:%d\n", stnet->url, proxy_uri->host, proxy_uri->port); } } else { d("no PROXY-%s\n", stnet->url); } g_object_set ( G_OBJECT (stnet->ss), SOUP_SESSION_PROXY_URI, proxy_uri, NULL); soup_uri_free(su); goto out; } else { stnet->addr = soup_address_new (su->host, 0); soup_uri_free(su); soup_address_resolve_async (stnet->addr, NULL, NULL, rss_resolve_callback, stnet); return; } } break; #ifdef HAVE_LIBSOUP_GNOME case 0: soup_session_add_feature_by_type ( stnet->ss, SOUP_TYPE_PROXY_RESOLVER_DEFAULT); break; #endif } out: stnet->callback(stnet->data); //free stnet }