diff options
Diffstat (limited to 'scripts')
-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 @@ | |||
7 | 7 | ||
8 | 8 | ||
9 | 9 | ||
10 | import httplib, urllib, os, sys, json | 10 | import httplib, urllib, os, sys, json, base64 |
11 | from urllib2 import _parse_proxy as parseproxy | ||
12 | |||
13 | |||
14 | def handle_connection(server, data): | ||
15 | params = urllib.urlencode({'data': data}) | ||
16 | headers = {"Content-type": "application/json"} | ||
17 | proxyrequired = False | ||
18 | if os.environ.get("http_proxy") or os.environ.get("HTTP_PROXY"): | ||
19 | proxyrequired = True | ||
20 | # we need to check that the server isn't a local one, as in no_proxy | ||
21 | try: | ||
22 | temp = httplib.HTTPConnection(server, strict=True, timeout=5) | ||
23 | temp.request("GET", "/") | ||
24 | tempres = temp.getresponse() | ||
25 | if tempres.status == 200: | ||
26 | proxyrequired = False | ||
27 | temp.close() | ||
28 | except: | ||
29 | pass | ||
30 | |||
31 | if proxyrequired: | ||
32 | proxy = parseproxy(os.environ.get("http_proxy") or os.environ.get("HTTP_PROXY")) | ||
33 | if proxy[1] and proxy[2]: | ||
34 | auth = base64.encodestring("%s:%s" % (proxy[1], proxy[2])) | ||
35 | headers["Authorization"] = "Basic %s" % auth | ||
36 | conn = httplib.HTTPConnection(proxy[3]) | ||
37 | conn.request("POST", "http://%s/ClientPost/" % server, params, headers) | ||
38 | else: | ||
39 | conn = httplib.HTTPConnection(server) | ||
40 | conn.request("POST", "/ClientPost/", params, headers) | ||
41 | |||
42 | return conn | ||
11 | 43 | ||
12 | 44 | ||
13 | def sendData(json_file, server): | 45 | def sendData(json_file, server): |
@@ -45,10 +77,7 @@ def sendData(json_file, server): | |||
45 | return | 77 | return |
46 | 78 | ||
47 | try: | 79 | try: |
48 | params = urllib.urlencode({'data': data}) | 80 | conn = handle_connection(server, data) |
49 | headers = {"Content-type": "application/json"} | ||
50 | conn = httplib.HTTPConnection(server) | ||
51 | conn.request("POST", "/ClientPost/", params, headers) | ||
52 | response = conn.getresponse() | 81 | response = conn.getresponse() |
53 | print response.status, response.reason | 82 | print response.status, response.reason |
54 | res = response.read() | 83 | res = response.read() |
@@ -59,8 +88,8 @@ def sendData(json_file, server): | |||
59 | with open("%s.response.html" % json_file, "w") as f: | 88 | with open("%s.response.html" % json_file, "w") as f: |
60 | f.write(res) | 89 | f.write(res) |
61 | conn.close() | 90 | conn.close() |
62 | except: | 91 | except Exception as e: |
63 | print("Server connection failed") | 92 | print("Server connection failed: %s" % e) |
64 | 93 | ||
65 | else: | 94 | else: |
66 | print("No data file found.") | 95 | print("No data file found.") |