2005-09-06 19:52:46 +02:00
|
|
|
#!/usr/bin/python
|
|
|
|
"""
|
|
|
|
simple cgi wrapper for a cgi script, prints the error of the script as html
|
|
|
|
taken from http://gnosis.cx/publish/programming/feature_5min_python.html
|
|
|
|
modified a little
|
|
|
|
"""
|
|
|
|
|
2005-09-12 13:28:11 +02:00
|
|
|
from mod_python import *
|
2005-09-06 19:52:46 +02:00
|
|
|
|
|
|
|
import sys, traceback
|
|
|
|
import init_webgo
|
|
|
|
|
|
|
|
DEBUG = 1
|
|
|
|
|
|
|
|
|
|
|
|
def handler(req):
|
|
|
|
# "Content-type: text/html\n\n"
|
2005-09-12 13:28:11 +02:00
|
|
|
req.content_type = "text/html"#was:text/html
|
2005-09-06 19:52:46 +02:00
|
|
|
try: # use explicit exception handling
|
|
|
|
#reinitialize database
|
2005-09-11 19:11:09 +02:00
|
|
|
#init_webgo.main()
|
2005-09-12 13:28:11 +02:00
|
|
|
|
|
|
|
#load form, then delegate request
|
|
|
|
form = util.FieldStorage(req)
|
|
|
|
if "create" in form.keys():
|
|
|
|
gamecreation = apache.import_module("gamecreation")
|
|
|
|
gamecreation.main(req,form)
|
|
|
|
return apache.OK
|
|
|
|
else:
|
|
|
|
#call login.py
|
|
|
|
login = apache.import_module("login")
|
|
|
|
login.main(req,form)
|
|
|
|
return apache.OK
|
|
|
|
|
2005-09-06 19:52:46 +02:00
|
|
|
except:
|
|
|
|
import time
|
|
|
|
errtime = '----- '+ time.ctime(time.time()) +' -----\n'
|
|
|
|
errlog = open('/tmp/cgi_errors.log', 'a')
|
|
|
|
errlog.write(errtime)
|
|
|
|
errlog.write(ErrorMsg())
|
|
|
|
data = """<html><head><title>CGI Error Encountered!</title></head>
|
|
|
|
<body><p>Sorry, a problem was encountered running WebGo.</p>
|
|
|
|
<p>Please check the error log on the server for details.</p>
|
|
|
|
<hr><pre>"""
|
|
|
|
data += ErrorMsg()
|
|
|
|
data+="</pre>\n</body></html>"
|
|
|
|
req.write(data)
|
|
|
|
return apache.OK
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ErrorMsg(escape=0):
|
|
|
|
"""
|
|
|
|
returns: string
|
|
|
|
|
|
|
|
simualtes the traceback output and if argemument
|
|
|
|
<escape> set to 1 (true) the string will be
|
|
|
|
converted to fit into html documents without problems.
|
|
|
|
from Dirk Holtwick
|
|
|
|
"""
|
|
|
|
import traceback, sys, string
|
|
|
|
|
|
|
|
type=None
|
|
|
|
value=None
|
|
|
|
tb=None
|
|
|
|
limit=None
|
|
|
|
type, value, tb = sys.exc_info()
|
|
|
|
body = "Traceback (innermost last):\n"
|
|
|
|
list = traceback.format_tb(tb, limit) + traceback.format_exception_only(type, value)
|
|
|
|
body = body + "%-20s %s" % (
|
|
|
|
string.join(list[:-1], ""),
|
|
|
|
list[-1],
|
|
|
|
)
|
|
|
|
if escape:
|
|
|
|
import cgi
|
|
|
|
body = cgi.escape(body)
|
|
|
|
return body
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#start(req)
|