def run_cgi(self): """ Execute the CGI command. Wrap an innner call in an error handler so all errors can be caught. """ try: self.inner_run_cgi() except client.NotFound: self.send_error(404, self.path) except client.Unauthorised as message: self.send_error(403, '%s (%s)' % (self.path, message)) except: exc, val, tb = sys.exc_info() if hasattr(socket, 'timeout') and isinstance(val, socket.timeout): self.log_error('timeout') else: # it'd be nice to be able to detect if these are going to have # any effect... self.send_response(400) self.send_header('Content-Type', 'text/html') self.end_headers() if self.DEBUG_MODE: try: reload(cgitb) self.wfile.write(s2b(cgitb.breaker())) self.wfile.write(s2b(cgitb.html())) except: s = StringIO() traceback.print_exc(None, s) self.wfile.write(b"<pre>") self.wfile.write(s2b(cgi.escape(s.getvalue()))) self.wfile.write(b"</pre>\n") else: # user feedback self.wfile.write(s2b(cgitb.breaker())) ts = time.ctime() self.wfile.write( s2b('''<p>%s: An error occurred. Please check the server log for more information.</p>''' % ts)) # out to the logfile print('EXCEPTION AT', ts) traceback.print_exc()
except client.Unauthorised, message: self.send_error(403, '%s (%s)'%(self.path, message)) except: exc, val, tb = sys.exc_info() if hasattr(socket, 'timeout') and isinstance(val, socket.timeout): self.log_error('timeout') else: # it'd be nice to be able to detect if these are going to have # any effect... self.send_response(400) self.send_header('Content-Type', 'text/html') self.end_headers() 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()) ts = time.ctime() self.wfile.write('''<p>%s: An error occurred. Please check the server log for more information.</p>'''%ts) # out to the logfile print 'EXCEPTION AT', ts
except client.Unauthorised, message: self.send_error(403, '%s (%s)' % (self.path, message)) except: exc, val, tb = sys.exc_info() if hasattr(socket, 'timeout') and isinstance(val, socket.timeout): self.log_error('timeout') else: # it'd be nice to be able to detect if these are going to have # any effect... self.send_response(400) self.send_header('Content-Type', 'text/html') self.end_headers() 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()) 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