summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Stanacar <stefanx.stanacar@intel.com>2014-04-11 20:49:14 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-04-23 11:41:03 +0100
commita8511ee80246b4e2caa353b87f4b586f1539e6d4 (patch)
tree555fe7cec2a3778de66f6a68cf6f0815c931cc2d
parentc3e8bfe30685e2357a6eb3ba8f4a014c7dc9f58e (diff)
downloadopenembedded-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-xscripts/send-error-report43
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.")