Mercurial > p > roundup > code
diff roundup/scripts/roundup_server.py @ 3278:ca122bc16277 maint-0.8
merge from HEAD
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Wed, 13 Apr 2005 06:11:15 +0000 |
| parents | 07f68dfab2c2 |
| children | 4fe232899be8 |
line wrap: on
line diff
--- a/roundup/scripts/roundup_server.py Thu Apr 07 07:38:29 2005 +0000 +++ b/roundup/scripts/roundup_server.py Wed Apr 13 06:11:15 2005 +0000 @@ -17,11 +17,11 @@ """Command-line script that runs a server over roundup.cgi.client. -$Id: roundup_server.py,v 1.74.2.3 2005-02-19 10:14:16 a1s Exp $ +$Id: roundup_server.py,v 1.74.2.4 2005-04-13 06:11:15 richard Exp $ """ __docformat__ = 'restructuredtext' -import errno, cgi, getopt, os, socket, sys, traceback, urllib +import errno, cgi, getopt, os, socket, sys, traceback, urllib, time import ConfigParser, BaseHTTPServer, SocketServer, StringIO # python version check @@ -70,6 +70,7 @@ TRACKER_HOMES = {} TRACKERS = None LOG_IPADDRESS = 1 + DEBUG_MODE = False def get_tracker(self, name): """Return a tracker instance for given tracker name""" @@ -116,16 +117,26 @@ self.send_response(400) self.send_header('Content-Type', 'text/html') self.end_headers() - try: - reload(cgitb) + if self.DEBUG_MODE: + try: + reload(cgitb) + self.wfile.write(cgitb.breaker()) + self.wfile.write(cgitb.html()) + except: + s = StringIO.StringIO() + traceback.print_exc(None, s) + self.wfile.write("<pre>") + self.wfile.write(cgi.escape(s.getvalue())) + self.wfile.write("</pre>\n") + else: + # user feedback self.wfile.write(cgitb.breaker()) - self.wfile.write(cgitb.html()) - except: - s = StringIO.StringIO() - traceback.print_exc(None, s) - self.wfile.write("<pre>") - self.wfile.write(cgi.escape(s.getvalue())) - self.wfile.write("</pre>\n") + ts = time.ctime() + self.wfile.write('''<p>%s: An error occurred. Please check + the server log for more infomation.</p>'''%ts) + # out to the logfile + print 'EXCEPTION AT', ts + traceback.print_exc() sys.stdin = save_stdin do_GET = do_POST = do_HEAD = run_cgi @@ -405,6 +416,7 @@ """Return HTTP server object to run""" # we don't want the cgi module interpreting the command-line args ;) sys.argv = sys.argv[:1] + # preload all trackers unless we are in "debug" mode tracker_homes = self.trackers() if self["MULTIPROCESS"] == "debug": @@ -412,11 +424,14 @@ else: trackers = dict([(name, roundup.instance.open(home, optimize=1)) for (name, home) in tracker_homes]) + # build customized request handler class class RequestHandler(RoundupRequestHandler): LOG_IPADDRESS = not self["LOG_HOSTNAMES"] TRACKER_HOMES = dict(tracker_homes) TRACKERS = trackers + DEBUG_MODE = self["MULTIPROCESS"] == "debug" + # obtain request server class if self["MULTIPROCESS"] not in MULTIPROCESS_TYPES: print _("Multiprocess mode \"%s\" is not available, "
