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. (From OE-Core rev: a8511ee80246b4e2caa353b87f4b586f1539e6d4) Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
1cb95f7bdf
commit
e2661d7367
|
@ -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):
|
def sendData(json_file, server):
|
||||||
|
@ -45,10 +77,7 @@ def sendData(json_file, server):
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
params = urllib.urlencode({'data': data})
|
conn = handle_connection(server, data)
|
||||||
headers = {"Content-type": "application/json"}
|
|
||||||
conn = httplib.HTTPConnection(server)
|
|
||||||
conn.request("POST", "/ClientPost/", params, headers)
|
|
||||||
response = conn.getresponse()
|
response = conn.getresponse()
|
||||||
print response.status, response.reason
|
print response.status, response.reason
|
||||||
res = response.read()
|
res = response.read()
|
||||||
|
@ -59,8 +88,8 @@ def sendData(json_file, server):
|
||||||
with open("%s.response.html" % json_file, "w") as f:
|
with open("%s.response.html" % json_file, "w") as f:
|
||||||
f.write(res)
|
f.write(res)
|
||||||
conn.close()
|
conn.close()
|
||||||
except:
|
except Exception as e:
|
||||||
print("Server connection failed")
|
print("Server connection failed: %s" % e)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("No data file found.")
|
print("No data file found.")
|
||||||
|
|
Loading…
Reference in New Issue