sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit cab8f76ab375079429ff142518901b42df0b161d
parent faeccccd68c5368222315de7db31faac7d4213b1
Author: weirdling <maddy@clappe.rs>
Date:   Mon,  3 May 2021 15:00:38 +0100

Add proxyconfig patch to surf

Diffstat:
Asurf.suckless.org/patches/proxyconfig/index.md | 24++++++++++++++++++++++++
Asurf.suckless.org/patches/proxyconfig/surf-proxyconfig-20210503-7dcce9e.diff | 91+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 115 insertions(+), 0 deletions(-)

diff --git a/surf.suckless.org/patches/proxyconfig/index.md b/surf.suckless.org/patches/proxyconfig/index.md @@ -0,0 +1,24 @@ +proxyconfig +=================== + +Description +----------- + +This patch allows you to specify proxy settings in your config.h file. + +It contains an enum which wraps the three proxy modes supported by Webkit: + +* CustomProxy allows you to specify a custom proxy URL and list of hosts to ignore. +* SystemProxy uses your system proxy settings (which on *nix is your http_proxy environment variable). +* NoProxy ensures that a proxy is never used. + +To use this patch, first set your ProxyMode Parameter to the desired value. +If you're using CustomProxy, you then need to set your ProxyUrl Parameter to the URL of your proxy, for example, "http://localhost:8080", or "socks://localhost:9050". +You may also optionally set your ProxyIgnoreHosts to specify a list of URLs which will not have their connections proxied. Please note that the SystemProxy mode will not respect your ProxyIgnoreHosts list -- my testing indicates that Webkit doesn't support this. + +The default value is SystemProxy, which preserves the default behavior of vanilla surf out of the box. + +Download +-------- + +* [surf-proxyconfig-20210503-7dcce9e.diff](surf-proxyconfig-20210503-7dcce9e.diff) diff --git a/surf.suckless.org/patches/proxyconfig/surf-proxyconfig-20210503-7dcce9e.diff b/surf.suckless.org/patches/proxyconfig/surf-proxyconfig-20210503-7dcce9e.diff @@ -0,0 +1,91 @@ +From d0ba61a0e75cfc7b8e6d70d6f323d53295e628ad Mon Sep 17 00:00:00 2001 +From: weirdling <maddy@clappe.rs> +Date: Mon, 3 May 2021 14:46:24 +0100 +Subject: [PATCH] Implement proxy settings + +--- + config.def.h | 3 +++ + surf.c | 32 ++++++++++++++++++++++++++++++++ + 2 files changed, 35 insertions(+) + +diff --git a/config.def.h b/config.def.h +index be168ab..46d164e 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -43,6 +43,9 @@ static Parameter defconfig[ParameterLast] = { + [MediaManualPlay] = { { .i = 1 }, }, + [Plugins] = { { .i = 1 }, }, + [PreferredLanguages] = { { .v = (char *[]){ NULL } }, }, ++ [ProxyIgnoreHosts] = { { .v = (char *[]){ NULL } }, }, ++ [ProxyMode] = { { .i = SystemProxy }, }, ++ [ProxyUrl] = { { .v = (char *) NULL }, }, + [RunInFullscreen] = { { .i = 0 }, }, + [ScrollBars] = { { .i = 1 }, }, + [ShowIndicators] = { { .i = 1 }, }, +diff --git a/surf.c b/surf.c +index ac832ff..5c74560 100644 +--- a/surf.c ++++ b/surf.c +@@ -50,6 +50,12 @@ enum { + OnAny = OnDoc | OnLink | OnImg | OnMedia | OnEdit | OnBar | OnSel, + }; + ++enum { ++ CustomProxy = WEBKIT_NETWORK_PROXY_MODE_CUSTOM, ++ SystemProxy = WEBKIT_NETWORK_PROXY_MODE_DEFAULT, ++ NoProxy = WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, ++}; ++ + typedef enum { + AcceleratedCanvas, + AccessMicrophone, +@@ -73,6 +79,9 @@ typedef enum { + LoadImages, + MediaManualPlay, + Plugins, ++ ProxyIgnoreHosts, ++ ProxyMode, ++ ProxyUrl, + PreferredLanguages, + RunInFullscreen, + ScrollBars, +@@ -1111,6 +1120,7 @@ newview(Client *c, WebKitWebView *rv) + WebKitWebContext *context; + WebKitCookieManager *cookiemanager; + WebKitUserContentManager *contentmanager; ++ WebKitNetworkProxySettings *proxysettings; + + /* Webview */ + if (rv) { +@@ -1171,6 +1181,28 @@ newview(Client *c, WebKitWebView *rv) + webkit_web_context_set_tls_errors_policy(context, + curconfig[StrictTLS].val.i ? WEBKIT_TLS_ERRORS_POLICY_FAIL : + WEBKIT_TLS_ERRORS_POLICY_IGNORE); ++ /* proxy */ ++ switch (curconfig[ProxyMode].val.i) { ++ case CustomProxy: ++ proxysettings = webkit_network_proxy_settings_new( ++ curconfig[ProxyUrl].val.v, ++ curconfig[ProxyIgnoreHosts].val.v); ++ webkit_web_context_set_network_proxy_settings(context, ++ CustomProxy, ++ proxysettings); ++ break; ++ case NoProxy: ++ webkit_web_context_set_network_proxy_settings(context, ++ NoProxy, ++ NULL); ++ break; ++ case SystemProxy: ++ default: ++ webkit_web_context_set_network_proxy_settings(context, ++ SystemProxy, ++ proxysettings); ++ break; ++ } + /* disk cache */ + webkit_web_context_set_cache_model(context, + curconfig[DiskCache].val.i ? WEBKIT_CACHE_MODEL_WEB_BROWSER : +-- +2.31.1 +