From cadec5abee461800fe7d9eea675cc3cb5bd7a14c Mon Sep 17 00:00:00 2001 From: Daniel Carl Date: Sat, 2 Feb 2013 23:08:12 +0100 Subject: [PATCH] Allow to use a proxy (#10). Added setting to enable or disable the proxy usage. --- src/setting.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/setting.c b/src/setting.c index 71c88ba..9688ef0 100644 --- a/src/setting.c +++ b/src/setting.c @@ -35,6 +35,7 @@ static gboolean setting_strict_ssl(const Setting* s, const gboolean get); static gboolean setting_ca_bundle(const Setting* s, const gboolean get); static gboolean setting_home_page(const Setting* s, const gboolean get); static gboolean setting_download_path(const Setting* s, const gboolean get); +static gboolean setting_proxy(const Setting* s, const gboolean get); static Setting default_settings[] = { /* webkit settings */ @@ -82,6 +83,7 @@ static Setting default_settings[] = { {"stylesheet", "user-stylesheet-uri", TYPE_CHAR, setting_webkit, {.s = NULL}}, {"zoomstep", "zoom-step", TYPE_FLOAT, setting_webkit, {.i = 100000}}, /* internal variables */ + {NULL, "proxy", TYPE_BOOLEAN, setting_proxy, {.i = 1}}, {NULL, "cookie-timeout", TYPE_INTEGER, setting_cookie_timeout, {.i = 4800}}, {NULL, "scrollstep", TYPE_INTEGER, setting_scrollstep, {.i = 40}}, @@ -577,3 +579,30 @@ static gboolean setting_download_path(const Setting* s, const gboolean get) return TRUE; } + +static gboolean setting_proxy(const Setting* s, const gboolean get) +{ + SoupURI* proxy_uri = NULL; + if (get) { + g_object_get(vp.net.soup_session, "proxy-uri", &proxy_uri, NULL); + gboolean value = (proxy_uri != NULL); + setting_print_value(s, &value); + } else if (s->arg.i) { + gchar* proxy = (gchar *)g_getenv("http_proxy"); + if (proxy != NULL && strlen(proxy)) { + gchar* proxy_new = g_strrstr(proxy, "http://") + ? g_strdup(proxy) + : g_strdup_printf("http://%s", proxy); + proxy_uri = soup_uri_new(proxy_new); + + g_object_set(vp.net.soup_session, "proxy-uri", proxy_uri, NULL); + + soup_uri_free(proxy_uri); + g_free(proxy_new); + } + } else { + g_object_set(vp.net.soup_session, "proxy-uri", NULL, NULL); + } + + return TRUE; +} -- 2.20.1