--- configure.ac | 16 ++++++++++++++++ src/Makefile.am | 2 +- src/retr.c | 37 +++++++++++++++++++++++++++++++++++++ tests/Makefile.am | 1 + 4 files changed, 55 insertions(+), 1 deletion(-) Index: wget-1.17/configure.ac =================================================================== --- wget-1.17.orig/configure.ac +++ wget-1.17/configure.ac @@ -507,6 +507,22 @@ AS_IF([test x"$with_metalink" != xno], [ ]) ]) +dnl +dnl libproxy support +dnl +AC_ARG_ENABLE(libproxy, + [ --enable-libproxy libproxy support for system wide proxy configuration]) +if test "${enable_libproxy}" != "no" +then + PKG_CHECK_MODULES([libproxy], [libproxy-1.0], [enable_libproxy=yes], [enable_libproxy=no]) +fi +if test "${enable_libproxy}" = "yes" +then + AC_SUBST(libproxy_CFLAGS) + AC_SUBST(libproxy_LIBS) + AC_DEFINE([HAVE_LIBPROXY], 1, [Define when using libproxy]) +fi + dnl ********************************************************************** dnl Checks for IPv6 dnl ********************************************************************** Index: wget-1.17/src/Makefile.am =================================================================== --- wget-1.17.orig/src/Makefile.am +++ wget-1.17/src/Makefile.am @@ -41,7 +41,7 @@ endif # The following line is losing on some versions of make! DEFS = @DEFS@ -DSYSTEM_WGETRC=\"$(sysconfdir)/wgetrc\" -DLOCALEDIR=\"$(localedir)\" -LIBS = @LIBICONV@ @LIBINTL@ @LIBS@ $(LIB_CLOCK_GETTIME) +LIBS = @LIBICONV@ @LIBINTL@ @LIBS@ $(libproxy_LIBS) $(LIB_CLOCK_GETTIME) EXTRA_DIST = css.l css.c css_.c build_info.c.in Index: wget-1.17/src/retr.c =================================================================== --- wget-1.17.orig/src/retr.c +++ wget-1.17/src/retr.c @@ -58,6 +58,10 @@ as that of the covered work. */ #include "iri.h" #include "hsts.h" +#ifdef HAVE_LIBPROXY +#include "proxy.h" +#endif + /* Total size of downloaded files. Used to enforce quota. */ SUM_SIZE_INT total_downloaded_bytes; @@ -1296,7 +1300,40 @@ getproxy (struct url *u) break; } if (!proxy || !*proxy) +#ifdef HAVE_LIBPROXY + { + pxProxyFactory *pf = px_proxy_factory_new(); + if (!pf) + { + debug_logprintf (_("Allocating memory for libproxy failed")); + return NULL; + } + int i; + char direct[] = "direct://"; + + debug_logprintf (_("asking libproxy about url '%s'\n"), u->url); + char **proxies = px_proxy_factory_get_proxies(pf, u->url); + if (proxies[0]) + { + char *check = NULL; + asprintf(&check , "%s", proxies[0]); + debug_logprintf (_("libproxy suggest to use '%s'\n"), check); + if(strcmp(check ,direct) != 0) + { + asprintf(&proxy , "%s", proxies[0]); + debug_logprintf (_("case 2: libproxy setting to use '%s'\n"), proxy); + } + } + for(i=0;proxies[i];i++) free(proxies[i]); + free(proxies); + px_proxy_factory_free(pf); + + if (!proxy || !*proxy) + return NULL; + } +#else return NULL; +#endif /* Handle shorthands. `rewritten_storage' is a kludge to allow getproxy() to return static storage. */ Index: wget-1.17/tests/Makefile.am =================================================================== --- wget-1.17.orig/tests/Makefile.am +++ wget-1.17/tests/Makefile.am @@ -32,6 +32,7 @@ # # Version: @VERSION@ # +LIBS += $(libproxy_LIBS) ../src/wget$(EXEEXT): cd ../src && $(MAKE) $(AM_MAKEFLAGS)