summaryrefslogtreecommitdiffstats
path: root/src/retrace/backtrace.wsgi
diff options
context:
space:
mode:
authorKarel Klic <kklic@redhat.com>2011-03-01 11:32:49 +0100
committerKarel Klic <kklic@redhat.com>2011-03-01 11:32:49 +0100
commitfb52104af74bbf6eeda394880666df40b4354aba (patch)
tree52b3318f050284cbac8ec96cac1701a1bf28f921 /src/retrace/backtrace.wsgi
parent5e89938bd01a92dd2166f78e5a3541c185bae10f (diff)
downloadabrt-fb52104af74bbf6eeda394880666df40b4354aba.tar.gz
abrt-fb52104af74bbf6eeda394880666df40b4354aba.tar.xz
abrt-fb52104af74bbf6eeda394880666df40b4354aba.zip
moved retrace server code to src/retrace
Diffstat (limited to 'src/retrace/backtrace.wsgi')
-rw-r--r--src/retrace/backtrace.wsgi42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/retrace/backtrace.wsgi b/src/retrace/backtrace.wsgi
new file mode 100644
index 00000000..d6a8686a
--- /dev/null
+++ b/src/retrace/backtrace.wsgi
@@ -0,0 +1,42 @@
+#!/usr/bin/python
+
+import sys
+sys.path = ["/usr/share/abrt-retrace"] + sys.path
+
+from retrace import *
+
+def application(environ, start_response):
+ request = Request(environ)
+
+ match = URL_PARSER.match(request.script_name)
+ if not match:
+ return response(start_response, "404 Not Found")
+
+ taskdir = "%s/%s" % (CONFIG["SaveDir"], match.group(1))
+
+ if not os.path.isdir(taskdir):
+ return response(start_response, "404 Not Found")
+
+ pwdpath = "%s/password" % taskdir
+ try:
+ pwdfile = open(pwdpath, "r")
+ pwd = pwdfile.read()
+ pwdfile.close()
+ except:
+ return response(start_response, "500 Internal Server Error", "Unable to verify password")
+
+ if not "X-Task-Password" in request.headers or request.headers["X-Task-Password"] != pwd:
+ return response(start_response, "403 Forbidden")
+
+ btpath = "%s/retrace_backtrace" % taskdir
+ if not os.path.isfile(btpath):
+ return response(start_response, "404 Not Found")
+
+ try:
+ btfile = open(btpath, "r")
+ output = btfile.read()
+ btfile.close()
+ except:
+ return response(start_response, "500 Internal Server Error", "Unable to read backtrace file at server")
+
+ return response(start_response, "200 OK", output)