[OE-core] [PATCH] scripts/send-error-report: simple hack to use proxy from the enviroment

Stanacar, StefanX stefanx.stanacar at intel.com
Fri Apr 11 17:16:01 UTC 2014


Actually I'll send v2 which should work for HTTP Basic Authentication
too.


On Fri, 2014-04-11 at 18:54 +0300, Stefan Stanacar wrote:
> People behind a proxy couldn't send an error report to an upstream server,
> this should fix the issue if they use a proxy that doesn't require authentication,
> and it's correctly exported in the enviroment.
> There are probbaly better ways to fix this (urllib2, proxy connect,
> a command line option for proxy) but those require more changes than
> I feel confortable doing now.
> 
> Signed-off-by: Stefan Stanacar <stefanx.stanacar at intel.com>
> ---
>  scripts/send-error-report | 27 +++++++++++++++++++++------
>  1 file changed, 21 insertions(+), 6 deletions(-)
> 
> diff --git a/scripts/send-error-report b/scripts/send-error-report
> index 3734b61..0bce8b6 100755
> --- a/scripts/send-error-report
> +++ b/scripts/send-error-report
> @@ -8,6 +8,24 @@
>  
> 
>  import httplib, urllib, os, sys, json
> +from urllib2 import _parse_proxy as parseproxy
> +
> +
> +def handle_connection(server, data):
> +        params = urllib.urlencode({'data': data})
> +        headers = {"Content-type": "application/json"}
> +
> +        if os.environ.get("http_proxy") or os.environ.get("HTTP_PROXY"):
> +                proxy = parseproxy(os.environ.get("http_proxy") or os.environ.get("HTTP_PROXY"))
> +                if proxy[1] or proxy[2]:
> +                        raise Exception("http proxies that require authentication are not supported for now.")
> +                conn = httplib.HTTPConnection(proxy[3])
> +                conn.request("POST", "http://%s/ClientPost/" % server, params, headers)
> +        else:
> +                conn = httplib.HTTPConnection(server)
> +                conn.request("POST", "/ClientPost/", params, headers)
> +
> +        return conn
>  
> 
>  def sendData(json_file, server):
> @@ -45,10 +63,7 @@ def sendData(json_file, server):
>              return
>  
>          try:
> -            params = urllib.urlencode({'data': data})
> -            headers = {"Content-type": "application/json"}
> -            conn = httplib.HTTPConnection(server)
> -            conn.request("POST", "/ClientPost/", params, headers)
> +            conn = handle_connection(server, data)
>              response = conn.getresponse()
>              print response.status, response.reason
>              res = response.read()
> @@ -59,8 +74,8 @@ def sendData(json_file, server):
>                  with open("%s.response.html" % json_file, "w") as f:
>                      f.write(res)
>              conn.close()
> -        except:
> -                print("Server connection failed")
> +        except Exception as e:
> +                print("Server connection failed: %s" % e)
>  
>      else:
>          print("No data file found.")



More information about the Openembedded-core mailing list