iAllow custom http headers to be specified. - surf - Surf web browser. Err gopher.r-36.net 70 i Err gopher.r-36.net 70 1Log /scm/surf//log.gph gopher.r-36.net 70 1Files /scm/surf//files.gph gopher.r-36.net 70 1Refs /scm/surf//refs.gph gopher.r-36.net 70 1README /scm/surf//file/README.gph gopher.r-36.net 70 1LICENSE /scm/surf//file/LICENSE.gph gopher.r-36.net 70 i--- Err gopher.r-36.net 70 1commit 70b1126a710fd0fff9cc9c63ba81645e2ac21eae /scm/surf//commit/70b1126a710fd0fff9cc9c63ba81645e2ac21eae.gph gopher.r-36.net 70 1parent ee7bf0c1b8e86154a30baa94a90c05f21d3d9f58 /scm/surf//commit/ee7bf0c1b8e86154a30baa94a90c05f21d3d9f58.gph gopher.r-36.net 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net gopher.r-36.net 70 iDate: Wed, 19 Apr 2017 21:10:23 +0200 Err gopher.r-36.net 70 i Err gopher.r-36.net 70 iAllow custom http headers to be specified. Err gopher.r-36.net 70 i Err gopher.r-36.net 70 iDiffstat: Err gopher.r-36.net 70 i config.def.h | 6 ++++++ Err gopher.r-36.net 70 i surf.c | 36 +++++++++++++++++++++++++------ Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i2 files changed, 35 insertions(+), 7 deletions(-) Err gopher.r-36.net 70 i--- Err gopher.r-36.net 70 1diff --git a/config.def.h b/config.def.h /scm/surf//file/config.def.h.gph gopher.r-36.net 70 i@@ -37,6 +37,12 @@ static Bool loadimages = TRUE; Err gopher.r-36.net 70 i static Bool hidebackground = FALSE; Err gopher.r-36.net 70 i static Bool allowgeolocation = TRUE; Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i+/* custom http headers */ Err gopher.r-36.net 70 i+static HttpHeader customheaders[] = { Err gopher.r-36.net 70 i+ /* key value */ Err gopher.r-36.net 70 i+ { "DNT", "1" }, Err gopher.r-36.net 70 i+}; Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i #define PROMPT_GOTO "Go To" Err gopher.r-36.net 70 i #define PROMPT_FIND "Find" Err gopher.r-36.net 70 i #define PROMPT_SLASH "/" Err gopher.r-36.net 70 1diff --git a/surf.c b/surf.c /scm/surf//file/surf.c.gph gopher.r-36.net 70 i@@ -66,6 +66,11 @@ typedef struct Client { Err gopher.r-36.net 70 i } Client; Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i ttypedef struct { Err gopher.r-36.net 70 i+ char *key; Err gopher.r-36.net 70 i+ char *value; Err gopher.r-36.net 70 i+} HttpHeader; Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ttypedef struct { Err gopher.r-36.net 70 i guint mod; Err gopher.r-36.net 70 i guint keyval; Err gopher.r-36.net 70 i void (*func)(Client *c, const Arg *arg); Err gopher.r-36.net 70 i@@ -243,6 +248,8 @@ beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r, Err gopher.r-36.net 70 i WebKitNetworkRequest *req, WebKitNetworkResponse *resp, Err gopher.r-36.net 70 i Client *c) Err gopher.r-36.net 70 i { Err gopher.r-36.net 70 i+ SoupMessage *msg; Err gopher.r-36.net 70 i+ SoupMessageHeaders *hdrs; Err gopher.r-36.net 70 i const gchar *uri = webkit_network_request_get_uri(req); Err gopher.r-36.net 70 i int i, isascii = 1; Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i@@ -250,12 +257,12 @@ beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r, Err gopher.r-36.net 70 i webkit_network_request_set_uri(req, "about:blank"); Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i if (!g_str_has_prefix(uri, "http://") Err gopher.r-36.net 70 i- && !g_str_has_prefix(uri, "https://") Err gopher.r-36.net 70 i- && !g_str_has_prefix(uri, "about:") Err gopher.r-36.net 70 i- && !g_str_has_prefix(uri, "file://") Err gopher.r-36.net 70 i- && !g_str_has_prefix(uri, "data:") Err gopher.r-36.net 70 i- && !g_str_has_prefix(uri, "blob:") Err gopher.r-36.net 70 i- && strlen(uri) > 0) { Err gopher.r-36.net 70 i+ && !g_str_has_prefix(uri, "https://") Err gopher.r-36.net 70 i+ && !g_str_has_prefix(uri, "about:") Err gopher.r-36.net 70 i+ && !g_str_has_prefix(uri, "file://") Err gopher.r-36.net 70 i+ && !g_str_has_prefix(uri, "data:") Err gopher.r-36.net 70 i+ && !g_str_has_prefix(uri, "blob:") Err gopher.r-36.net 70 i+ && strlen(uri) > 0) { Err gopher.r-36.net 70 i for (i = 0; i < strlen(uri); i++) { Err gopher.r-36.net 70 i if (!g_ascii_isprint(uri[i])) { Err gopher.r-36.net 70 i isascii = 0; Err gopher.r-36.net 70 i@@ -264,6 +271,21 @@ beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r, Err gopher.r-36.net 70 i } Err gopher.r-36.net 70 i if (isascii) Err gopher.r-36.net 70 i handleplumb(c, w, uri); Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ return; Err gopher.r-36.net 70 i+ } Err gopher.r-36.net 70 i+ if (g_str_has_prefix(uri, "http://") Err gopher.r-36.net 70 i+ || g_str_has_prefix(uri, "https://")) { Err gopher.r-36.net 70 i+ msg = webkit_network_request_get_message(req); Err gopher.r-36.net 70 i+ g_object_get(G_OBJECT(msg), "request-headers", &hdrs, Err gopher.r-36.net 70 i+ NULL); Err gopher.r-36.net 70 i+ if (hdrs != NULL) { Err gopher.r-36.net 70 i+ for (i = 0; i < LENGTH(customheaders); i++) { Err gopher.r-36.net 70 i+ soup_message_headers_replace(hdrs, Err gopher.r-36.net 70 i+ customheaders[i].key, Err gopher.r-36.net 70 i+ customheaders[i].value); Err gopher.r-36.net 70 i+ } Err gopher.r-36.net 70 i+ } Err gopher.r-36.net 70 i } Err gopher.r-36.net 70 i } Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i@@ -882,6 +904,7 @@ loaduri(Client *c, const Arg *arg) Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i setatom(c, AtomUri, uri); Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i /* prevents endless loop */ Err gopher.r-36.net 70 i if (strcmp(u, geturi(c)) == 0) { Err gopher.r-36.net 70 i reload(c, &a); Err gopher.r-36.net 70 i@@ -1399,7 +1422,6 @@ setup(void) Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i /* ssl */ Err gopher.r-36.net 70 i tlsdb = g_tls_file_database_new(cafile, &error); Err gopher.r-36.net 70 i- Err gopher.r-36.net 70 i if (error) { Err gopher.r-36.net 70 i g_warning("Error loading SSL database %s: %s", cafile, Err gopher.r-36.net 70 i error->message); Err gopher.r-36.net 70 .