From: Daniel Carl Date: Sat, 2 Feb 2013 22:08:12 +0000 (+0100) Subject: Allow to use a proxy (#10). X-Git-Url: https://git.owens.tech/git.owens.tech/git.owens.tech/git?a=commitdiff_plain;h=cadec5abee461800fe7d9eea675cc3cb5bd7a14c;p=vimb.git Allow to use a proxy (#10). Added setting to enable or disable the proxy usage. --- 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; +}