[prev in list] [next in list] [prev in thread] [next in thread]
List: ipfire-development
Subject: Re: [PATCH] fireinfo: support upstream proxy with authentication
From: Michael Tremer <michael.tremer () ipfire ! org>
Date: 2018-10-29 13:32:06
Message-ID: 012244772b10b32fb8751ec45f44368cb0d6caf5.camel () ipfire ! org
[Download RAW message or body]
Hi,
On Sat, 2018-10-27 at 16:20 +0200, Peter Müller wrote:
> Fireinfo could not send its profile to https://fireinfo.ipfire.org/
> if the machine is behind an upstream proxy which requires username
> and password. This is fixed by tweaking urllib2's opening handler.
>
> To apply this on existing installations, the fireinfo package
> needs to be shipped during an update.
>
> Fixes #11905
>
> Signed-off-by: Peter Müller <peter.mueller@link38.eu>
> ---
> src/sendprofile | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
> mode change 100644 => 100755 src/sendprofile
>
> diff --git a/src/sendprofile b/src/sendprofile
> old mode 100644
> new mode 100755
> index b836567..8c0603f
> --- a/src/sendprofile
> +++ b/src/sendprofile
> @@ -73,10 +73,17 @@ def send_profile(profile):
> request.add_header("User-Agent", "fireinfo/%s" % fireinfo.__version__)
>
> # Set upstream proxy if we have one.
> - # XXX this cannot handle authentication
> proxy = get_upstream_proxy()
> +
> if proxy["host"]:
> - request.set_proxy(proxy["host"], "http")
> + # handling upstream proxies with authentication is more
> tricky...
The commented line is indented with spaces whereas everything else is using
tabs. Python doesn't like this to be mixed.
> + if proxy["user"] and proxy["pass"]:
> + proxy_handler = urllib2.ProxyHandler({'https': '
> http://' + proxy["user"] + ':' + proxy["pass"] + '@' + proxy["host"] + '/'})
I am not a fan of formatting strings like this, because I find it hard to read,
and this doesn't work when one of the variables isn't a string.
> + auth = urllib2.HTTPBasicAuthHandler()
> + opener = urllib2.build_opener(proxy_handler, auth,
> urllib2.HTTPHandler)
> + urllib2.install_opener(opener)
> + else:
> + request.set_proxy(proxy["host"], "https")
Why does this patch remove the proxy for HTTP without mentioning it? I know that
we only send requests via HTTPS now, but I think generally this should be
configured just in case.
> try:
> urllib2.urlopen(request, timeout=60)
-Michael
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic