summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichal Toman <mtoman@redhat.com>2011-04-20 13:22:16 +0200
committerMichal Toman <mtoman@redhat.com>2011-04-20 13:22:16 +0200
commite12304e223b652a8631478c003525d235d98d208 (patch)
tree168bb901b4da7dc9e437dfc231a480999a38e16b /src
parent00ddafd10e97a5a0b16bcdefd60406eb892b95a2 (diff)
downloadabrt-e12304e223b652a8631478c003525d235d98d208.tar.gz
abrt-e12304e223b652a8631478c003525d235d98d208.tar.xz
abrt-e12304e223b652a8631478c003525d235d98d208.zip
retrace server: add messages into HTTP response
Diffstat (limited to 'src')
-rw-r--r--src/retrace/backtrace.wsgi21
-rw-r--r--src/retrace/create.wsgi52
-rw-r--r--src/retrace/log.wsgi21
-rw-r--r--src/retrace/status.wsgi18
4 files changed, 75 insertions, 37 deletions
diff --git a/src/retrace/backtrace.wsgi b/src/retrace/backtrace.wsgi
index 2074d157..92c4d040 100644
--- a/src/retrace/backtrace.wsgi
+++ b/src/retrace/backtrace.wsgi
@@ -7,12 +7,14 @@ def application(environ, start_response):
match = URL_PARSER.match(request.script_name)
if not match:
- return response(start_response, "404 Not Found")
+ return response(start_response, "404 Not Found",
+ "Invalid URL")
taskdir = "%s/%s" % (CONFIG["SaveDir"], match.group(1))
if not os.path.isdir(taskdir):
- return response(start_response, "404 Not Found")
+ return response(start_response, "404 Not Found",
+ "There is no such task")
pwdpath = "%s/password" % taskdir
try:
@@ -20,20 +22,25 @@ def application(environ, start_response):
pwd = pwdfile.read()
pwdfile.close()
except:
- return response(start_response, "500 Internal Server Error", "Unable to verify password")
+ 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")
+ if not "X-Task-Password" in request.headers or \
+ request.headers["X-Task-Password"] != pwd:
+ return response(start_response, "403 Forbidden",
+ "Invalid password")
btpath = "%s/retrace_backtrace" % taskdir
if not os.path.isfile(btpath):
- return response(start_response, "404 Not Found")
+ return response(start_response, "404 Not Found",
+ "There is no backtrace for the specified task")
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, "500 Internal Server Error",
+ "Unable to read backtrace file")
return response(start_response, "200 OK", output)
diff --git a/src/retrace/create.wsgi b/src/retrace/create.wsgi
index 8593ed80..e26ae0cc 100644
--- a/src/retrace/create.wsgi
+++ b/src/retrace/create.wsgi
@@ -7,22 +7,28 @@ def application(environ, start_response):
request = Request(environ)
if request.scheme != "https":
- return response(start_response, "403 Forbidden", "You must use HTTPS.")
+ return response(start_response, "403 Forbidden",
+ "You must use HTTPS")
if len(get_active_tasks()) >= CONFIG["MaxParallelTasks"]:
- return response(start_response, "503 Service Unavailable")
+ return response(start_response, "503 Service Unavailable",
+ "Retrace server is fully loaded at the moment")
if request.method != "POST":
- return response(start_response, "405 Method Not Allowed")
+ return response(start_response, "405 Method Not Allowed",
+ "You must use POST method")
if not request.content_type in HANDLE_ARCHIVE.keys():
- return response(start_response, "415 Unsupported Media Type")
+ return response(start_response, "415 Unsupported Media Type",
+ "Specified archive format is not supported")
if not request.content_length:
- return response(start_response, "411 Length Required")
+ return response(start_response, "411 Length Required",
+ "You need to set Content-Length header properly")
if request.content_length > CONFIG["MaxPackedSize"] * 1048576:
- return response(start_response, "413 Request Entity Too Large")
+ return response(start_response, "413 Request Entity Too Large",
+ "Specified archive is too large")
if CONFIG["UseWorkDir"]:
workdir = CONFIG["WorkDir"]
@@ -33,39 +39,47 @@ def application(environ, start_response):
try:
os.makedirs(workdir)
except:
- return response(start_response, "500 Internal Server Error", "Unable to create working directory")
+ return response(start_response, "500 Internal Server Error",
+ "Unable to create working directory")
space = free_space(workdir)
if not space:
- return response(start_response, "500 Internal Server Error", "Unable to obtain disk free space")
+ return response(start_response, "500 Internal Server Error",
+ "Unable to obtain disk free space")
if space - request.content_length < CONFIG["MinStorageLeft"] * 1048576:
- return response(start_response, "507 Insufficient Storage")
+ return response(start_response, "507 Insufficient Storage",
+ "There is not enough storage space on the server")
try:
archive = NamedTemporaryFile(mode="wb", delete=False, suffix=".tar.xz")
archive.write(request.body)
archive.close()
except:
- return response(start_response, "500 Internal Server Error", "Unable to save archive")
+ return response(start_response, "500 Internal Server Error",
+ "Unable to save archive")
size = unpacked_size(archive.name, request.content_type)
if not size:
os.unlink(archive.name)
- return response(start_response, "500 Internal Server Error", "Unable to obtain unpacked size")
+ return response(start_response, "500 Internal Server Error",
+ "Unable to obtain unpacked size")
if size > CONFIG["MaxUnpackedSize"] * 1048576:
os.unlink(archive.name)
- return response(start_response, "413 Request Entity Too Large")
+ return response(start_response, "413 Request Entity Too Large",
+ "Specified archive's content is too large")
if space - size < CONFIG["MinStorageLeft"] * 1048576:
os.unlink(archive.name)
- return response(start_response, "507 Insufficient Storage")
+ return response(start_response, "507 Insufficient Storage",
+ "There is not enough storage space on the server")
taskid, taskpass, taskdir = new_task()
if not taskid or not taskpass or not taskdir:
- return response(start_response, "500 Internal Server Error", "Unable to create new task")
+ return response(start_response, "500 Internal Server Error",
+ "Unable to create new task")
try:
os.mkdir("%s/crash/" % taskdir)
@@ -78,7 +92,8 @@ def application(environ, start_response):
except:
os.chdir("/")
Popen(["rm", "-rf", taskdir])
- return response(start_response, "500 Internal Server Error", "Unable to unpack archive")
+ return response(start_response, "500 Internal Server Error",
+ "Unable to unpack archive")
files = os.listdir(".")
@@ -86,8 +101,11 @@ def application(environ, start_response):
if not required_file in files:
os.chdir("/")
Popen(["rm", "-rf", taskdir])
- return response(start_response, "403 Forbidden", "Required file \"{0}\" is missing".format(required_file))
+ return response(start_response, "403 Forbidden",
+ "Required file \"%s\" is missing" % required_file)
Popen(["/usr/bin/abrt-retrace-worker", "%d" % taskid])
- return response(start_response, "201 Created", "", [("X-Task-Id", "%d" % taskid), ("X-Task-Password", taskpass)])
+ return response(start_response, "201 Created", "",
+ [("X-Task-Id", "%d" % taskid),
+ ("X-Task-Password", taskpass)])
diff --git a/src/retrace/log.wsgi b/src/retrace/log.wsgi
index ab9b31a3..5bdc4ffb 100644
--- a/src/retrace/log.wsgi
+++ b/src/retrace/log.wsgi
@@ -7,12 +7,14 @@ def application(environ, start_response):
match = URL_PARSER.match(request.script_name)
if not match:
- return response(start_response, "404 Not Found")
+ return response(start_response, "404 Not Found",
+ "Invalid URL")
taskdir = "%s/%s" % (CONFIG["SaveDir"], match.group(1))
if not os.path.isdir(taskdir):
- return response(start_response, "404 Not Found")
+ return response(start_response, "404 Not Found",
+ "There is no such task")
pwdpath = "%s/password" % taskdir
try:
@@ -20,20 +22,25 @@ def application(environ, start_response):
pwd = pwdfile.read()
pwdfile.close()
except:
- return response(start_response, "500 Internal Server Error", "Unable to verify password")
+ 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")
+ if not "X-Task-Password" in request.headers or \
+ request.headers["X-Task-Password"] != pwd:
+ return response(start_response, "403 Forbidden",
+ "Invalid password")
logpath = "%s/retrace_log" % taskdir
if not os.path.isfile(logpath):
- return response(start_response, "404 Not Found")
+ return response(start_response, "404 Not Found",
+ "There is no log for the specified task")
try:
logfile = open(logpath, "r")
output = logfile.read()
logfile.close()
except:
- return response(start_response, "500 Internal Server Error", "Unable to read log file at server")
+ return response(start_response, "500 Internal Server Error",
+ "Unable to read log file")
return response(start_response, "200 OK", output)
diff --git a/src/retrace/status.wsgi b/src/retrace/status.wsgi
index 1e5bdf66..50334772 100644
--- a/src/retrace/status.wsgi
+++ b/src/retrace/status.wsgi
@@ -7,12 +7,14 @@ def application(environ, start_response):
match = URL_PARSER.match(request.script_name)
if not match:
- return response(start_response, "404 Not Found")
+ return response(start_response, "404 Not Found",
+ "Invalid URL")
taskdir = "%s/%s" % (CONFIG["SaveDir"], match.group(1))
if not os.path.isdir(taskdir):
- return response(start_response, "404 Not Found")
+ return response(start_response, "404 Not Found",
+ "There is no such task")
pwdpath = "%s/password" % taskdir
try:
@@ -20,10 +22,13 @@ def application(environ, start_response):
pwd = pwdfile.read()
pwdfile.close()
except:
- return response(start_response, "500 Internal Server Error", "Unable to verify password")
+ 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")
+ if not "X-Task-Password" in request.headers or \
+ request.headers["X-Task-Password"] != pwd:
+ return response(start_response, "403 Forbidden",
+ "Invalid password")
status = "PENDING"
if os.path.isfile("%s/retrace_log" % taskdir):
@@ -40,4 +45,5 @@ def application(environ, start_response):
except:
pass
- return response(start_response, "200 OK", statusmsg, [("X-Task-Status", status)])
+ return response(start_response, "200 OK",
+ statusmsg, [("X-Task-Status", status)])