summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Tham <pickfire@riseup.net>2015-12-17 21:35:02 +0800
committerChristoph Lohmann <20h@r-36.net>2015-12-17 23:36:56 +0100
commit86efaf80936cebba56ec3e88db61c786c608c885 (patch)
tree82ff4ad14f051002bde2ad9e49dc17157014b4ee
parent9fa4ffef72308e75446aeeebc9d38140b7198640 (diff)
downloadsurf-86efaf80936cebba56ec3e88db61c786c608c885.tar.gz
surf-86efaf80936cebba56ec3e88db61c786c608c885.tar.bz2
surf-86efaf80936cebba56ec3e88db61c786c608c885.zip
proxy-uri -> proxy-resolver for no_proxy; add #inc
Signed-off-by: Christoph Lohmann <20h@r-36.net>
-rw-r--r--surf.17
-rw-r--r--surf.c17
2 files changed, 19 insertions, 5 deletions
diff --git a/surf.1 b/surf.1
index c1d339a..1715f93 100644
--- a/surf.1
+++ b/surf.1
@@ -283,6 +283,13 @@ string
.TP
.B http_proxy
If this variable is set and not empty upon startup, surf will use it as the http proxy
+.TP
+.B no_proxy
+If both http_proxy is set and no_proxy contain a
+.BR comma-separated
+list of domain extensions and both is not empty upon startup, proxy will
+.BR not
+be used for each of the elements in no_proxy.
.SH PLUGINS
For using plugins in surf, first determine your running architecture. Then get
the appropriate plugin for that architecture and copy it to
diff --git a/surf.c b/surf.c
index ea0e260..42a602b 100644
--- a/surf.c
+++ b/surf.c
@@ -24,6 +24,9 @@
#include <stdarg.h>
#include <regex.h>
#include <pwd.h>
+#include <glib.h>
+#include <lib/gprintf.h>
+#include <gio/gio.h>
#include "arg.h"
@@ -1290,9 +1293,9 @@ void
setup(void)
{
int i;
- char *proxy, *new_proxy;
+ char *proxy, *new_proxy, *no_proxy, **new_no_proxy;
char *styledirfile, *stylepath;
- SoupURI *puri;
+ GProxyResolver *pr;
SoupSession *s;
GError *error = NULL;
@@ -1367,15 +1370,19 @@ setup(void)
/* proxy */
if ((proxy = getenv("http_proxy")) && strcmp(proxy, "")) {
new_proxy = g_strrstr(proxy, "http://")
+ || g_strrstr(proxy, "https://")
|| g_strrstr(proxy, "socks://")
|| g_strrstr(proxy, "socks4://")
+ || g_strrstr(proxy, "socks4a://")
|| g_strrstr(proxy, "socks5://")
? g_strdup(proxy)
: g_strdup_printf("http://%s", proxy);
- puri = soup_uri_new(new_proxy);
- g_object_set(G_OBJECT(s), "proxy-uri", puri, NULL);
- soup_uri_free(puri);
+ new_no_proxy = ((no_proxy = getenv("no_proxy")) && strcmp(no_proxy, ""))
+ ? g_strsplit(no_proxy, ",", -1) : NULL;
+ pr = g_simple_proxy_resolver_new(new_proxy, new_no_proxy);
+ g_object_set(G_OBJECT(s), "proxy-resolver", pr, NULL);
g_free(new_proxy);
+ g_strfreev(new_no_proxy);
usingproxy = 1;
}
}