diff options
author | Stefan Stanacar <stefanx.stanacar@intel.com> | 2014-04-11 20:49:14 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-04-23 11:41:03 +0100 |
commit | a8511ee80246b4e2caa353b87f4b586f1539e6d4 (patch) | |
tree | 555fe7cec2a3778de66f6a68cf6f0815c931cc2d | |
parent | c3e8bfe30685e2357a6eb3ba8f4a014c7dc9f58e (diff) | |
download | openembedded-core-a8511ee80246b4e2caa353b87f4b586f1539e6d4.tar.gz openembedded-core-a8511ee80246b4e2caa353b87f4b586f1539e6d4.tar.bz2 openembedded-core-a8511ee80246b4e2caa353b87f4b586f1539e6d4.zip |
scripts/send-error-report: simple hack to use proxy from the enviroment
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,
or one that uses basic http authentication and it's correctly exported in the enviroment.
Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-x | scripts/send-error-report | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/scripts/send-error-report b/scripts/send-error-report index d23ae27dda..3d1f7a4017 100755 --- a/scripts/send-error-report +++ b/scripts/send-error-report @@ -7,7 +7,39 @@ -import httplib, urllib, os, sys, json +import httplib, urllib, os, sys, json, base64 +from urllib2 import _parse_proxy as parseproxy + + +def handle_connection(server, data): + params = urllib.urlencode({'data': data}) + headers = {"Content-type": "application/json"} + proxyrequired = False + if os.environ.get("http_proxy") or os.environ.get("HTTP_PROXY"): + proxyrequired = True + # we need to check that the server isn't a local one, as in no_proxy + try: + temp = httplib.HTTPConnection(server, strict=True, timeout=5) + temp.request("GET", "/") + tempres = temp.getresponse() + if tempres.status == 200: + proxyrequired = False + temp.close() + except: + pass + + if proxyrequired: + proxy = parseproxy(os.environ.get("http_proxy") or os.environ.get("HTTP_PROXY")) + if proxy[1] and proxy[2]: + auth = base64.encodestring("%s:%s" % (proxy[1], proxy[2])) + headers["Authorization"] = "Basic %s" % auth + 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 +77,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 +88,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.") |