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, "

Roundup Issue Tracker: http://roundup-tracker.org/