def test(self, req): req.content_type = "text/plain" apache.log_error("request!", apache.APLOG_NOTICE) req.write("\nParsed URI:\n-------------\n") req.write(dump.dump(req.parsed_uri)) req.write("\nModPython Options:\n-------------\n") req.write(dump.dump(req.get_options())) req.write("\nModPython Config:\n-------------\n") req.write(dump.dump(req.get_config())) req.write("\nOS Env:\n-------------\n") req.write(dump.dump(os.environ)) req.write("\nProcess Env:\n-------------\n") req.add_common_vars() req.write(dump.dump(req.subprocess_env)) req.write("\n") req.write("server_root=" + apache.server_root() + "\n") req.write("document_root=" + req.document_root() + "\n") req.write("loglevel=" + dump.dump(req.server.loglevel)) req.write("is_virtual=" + dump.dump(req.server.is_virtual)) req.write("phase=" + dump.dump(req.phase)) req.write("handler=" + dump.dump(req.handler)) req.write("uri=" + dump.dump(req.uri)) req.write("filename=" + dump.dump(req.filename)) req.write("py interpreter=" + dump.dump(req.interpreter)) req.write("\n") req.write("__file__=" + __file__ + "\n") req.write("dir=" + os.path.dirname(__file__) + "\n") req.write("\n") if apache.mpm_query(apache.AP_MPMQ_IS_THREADED): req.write("mpm is threaded\n") else: req.write("mpm is NOT threaded\n") if apache.mpm_query(apache.AP_MPMQ_IS_FORKED): req.write("mpm is forked\n") else: req.write("mpm is NOT forked\n") req.write("\n") req.write("sys.path: %s\n" % sys.path) req.write("\n") req.write("POST form data:\n") req.write("content length: " + dump.dump(req.clength)) req.write(dump.dump(req.read())) #req.write(dump.dump(apache.config_tree())) return apache.OK
def test_apache_log_error(self): s = self.req.server c = self.req.connection apache.log_error("Testing apache.log_error():", apache.APLOG_INFO, s) apache.log_error("xEMERGx", apache.APLOG_EMERG, s) apache.log_error("xALERTx", apache.APLOG_ALERT, s) apache.log_error("xCRITx", apache.APLOG_CRIT, s) apache.log_error("xERRx", apache.APLOG_ERR, s) apache.log_error("xWARNINGx", apache.APLOG_WARNING, s) apache.log_error("xNOTICEx", apache.APLOG_NOTICE, s) apache.log_error("xINFOx", apache.APLOG_INFO, s) apache.log_error("xDEBUGx", apache.APLOG_DEBUG, s) s.log_error("xEMERGx", apache.APLOG_EMERG) s.log_error("xALERTx", apache.APLOG_ALERT) s.log_error("xCRITx", apache.APLOG_CRIT) s.log_error("xERRx", apache.APLOG_ERR) s.log_error("xWARNINGx", apache.APLOG_WARNING) s.log_error("xNOTICEx", apache.APLOG_NOTICE) s.log_error("xINFOx", apache.APLOG_INFO) s.log_error("xDEBUGx", apache.APLOG_DEBUG) c.log_error("xEMERGx", apache.APLOG_EMERG) c.log_error("xALERTx", apache.APLOG_ALERT) c.log_error("xCRITx", apache.APLOG_CRIT) c.log_error("xERRx", apache.APLOG_ERR) c.log_error("xWARNINGx", apache.APLOG_WARNING) c.log_error("xNOTICEx", apache.APLOG_NOTICE) c.log_error("xINFOx", apache.APLOG_INFO) c.log_error("xDEBUGx", apache.APLOG_DEBUG) # see what's in the log now f = open("%s/logs/error_log" % apache.server_root()) # for some reason re doesn't like \n, why? import string log = "".join(map(string.strip, f.readlines())) f.close() if not re.search( "xEMERGx.*xALERTx.*xCRITx.*xERRx.*xWARNINGx.*xNOTICEx.*xINFOx.*xDEBUGx.*xEMERGx.*xALERTx.*xCRITx.*xERRx.*xWARNINGx.*xNOTICEx.*xINFOx.*xDEBUGx.*xEMERGx.*xALERTx.*xCRITx.*xERRx.*xWARNINGx.*xNOTICEx.*xINFOx.*xDEBUGx", log): self.fail("Could not find test messages in error_log")
def test_apache_log_error(self): s = self.req.server c = self.req.connection apache.log_error("Testing apache.log_error():", apache.APLOG_INFO, s) apache.log_error("xEMERGx", apache.APLOG_EMERG, s) apache.log_error("xALERTx", apache.APLOG_ALERT, s) apache.log_error("xCRITx", apache.APLOG_CRIT, s) apache.log_error("xERRx", apache.APLOG_ERR, s) apache.log_error("xWARNINGx", apache.APLOG_WARNING, s) apache.log_error("xNOTICEx", apache.APLOG_NOTICE, s) apache.log_error("xINFOx", apache.APLOG_INFO, s) apache.log_error("xDEBUGx", apache.APLOG_DEBUG, s) s.log_error("xEMERGx", apache.APLOG_EMERG) s.log_error("xALERTx", apache.APLOG_ALERT) s.log_error("xCRITx", apache.APLOG_CRIT) s.log_error("xERRx", apache.APLOG_ERR) s.log_error("xWARNINGx", apache.APLOG_WARNING) s.log_error("xNOTICEx", apache.APLOG_NOTICE) s.log_error("xINFOx", apache.APLOG_INFO) s.log_error("xDEBUGx", apache.APLOG_DEBUG) c.log_error("xEMERGx", apache.APLOG_EMERG) c.log_error("xALERTx", apache.APLOG_ALERT) c.log_error("xCRITx", apache.APLOG_CRIT) c.log_error("xERRx", apache.APLOG_ERR) c.log_error("xWARNINGx", apache.APLOG_WARNING) c.log_error("xNOTICEx", apache.APLOG_NOTICE) c.log_error("xINFOx", apache.APLOG_INFO) c.log_error("xDEBUGx", apache.APLOG_DEBUG) # see what's in the log now f = open("%s/logs/error_log" % apache.server_root()) # for some reason re doesn't like \n, why? import string log = "".join(map(string.strip, f.readlines())) f.close() if not re.search("xEMERGx.*xALERTx.*xCRITx.*xERRx.*xWARNINGx.*xNOTICEx.*xINFOx.*xDEBUGx.*xEMERGx.*xALERTx.*xCRITx.*xERRx.*xWARNINGx.*xNOTICEx.*xINFOx.*xDEBUGx.*xEMERGx.*xALERTx.*xCRITx.*xERRx.*xWARNINGx.*xNOTICEx.*xINFOx.*xDEBUGx", log): self.fail("Could not find test messages in error_log")
oai = Cheshire3OaiServer(path) c3OaiServers[path] = oai oaixml = MinimalOaiServer(oai, oai.metadataRegistry) try: xmlresp = oaixml.handleRequest(args) except DatestampError: try: raise BadArgumentError('Invalid date format supplied.') except: xmlresp = oaixml.handleException(args, sys.exc_info()) except C3Exception, e: xmlresp = '<c3:error xmlns:c3="http://www.cheshire3.org/schemas/error" code="%s">%s</c3:error>' % ( str(e.__class__).split('.')[-1], e.reason) self.send_xml(xmlresp, req) else: fullPath = os.path.join(apache.server_root(), 'htdocs', path) if os.path.exists(fullPath) and not os.path.isdir(fullPath): req.sendfile(os.path.join(apache.server_root(), 'htdocs', path)) else: # TODO: send proper OAI error? dbps = [ '<c3:database>{0}</c3:database>'.format(dbp) for dbp in configs ] self.send_xml( ''' <c3:error xmlns:c3="http://www.cheshire3.org/schemas/error"> <c3:details>{0}</c3:details> <c3:message>Incomplete or incorrect baseURL, requires a database path from: <c3:databases>{1}</c3:databases>
def handler(req): req.form = util.FieldStorage(req) if req.form.getfirst("view_log"): log = open(os.path.join(apache.server_root(), req.server.error_fname), "rb") lines = bounded_buffer(100) for line in log: lines.append(line) log.close() req.content_type = "text/plain" for line in lines: req.write(line) return apache.OK req.add_common_vars() req.content_type = "text/html" req.write("<html><head><title>mod_python test page</title></head><body>\n") req.write("<h3>General information</h3>\n") req.write('<table border="1">\n') req.write( "<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n" % ("Apache version", req.subprocess_env.get("SERVER_SOFTWARE")) ) req.write( "<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n" % ( "Apache threaded MPM", ( apache.mpm_query(apache.AP_MPMQ_IS_THREADED) and "Yes, maximum %i threads / process" % apache.mpm_query(apache.AP_MPMQ_MAX_THREADS) ) or "No (single thread MPM)", ) ) req.write( "<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n" % ( "Apache forked MPM", ( apache.mpm_query(apache.AP_MPMQ_IS_FORKED) and "Yes, maximum %i processes" % apache.mpm_query(apache.AP_MPMQ_MAX_DAEMONS) ) or "No (single process MPM)", ) ) req.write( "<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n" % ("Apache server root", apache.server_root()) ) req.write( "<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n" % ("Apache document root", req.document_root()) ) if req.server.error_fname: req.write( '<tr><td><code>%s</code></td><td><code>%s</code> (<a href="?view_log=1" target="_new">view last 100 lines</a>)</td></tr>\n' % ("Apache error log", os.path.join(apache.server_root(), req.server.error_fname)) ) else: req.write("<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n" % ("Apache error log", "None")) req.write("<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n" % ("Python sys.version", sys.version)) req.write("<tr><td><code>%s</code></td><td><pre>%s</pre></td></tr>\n" % ("Python sys.path", "\n".join(sys.path))) req.write( "<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n" % ("Python interpreter name", req.interpreter) ) req.write("<tr><td><code>mod_python.publisher available</code></td><td><code>") try: from mod_python import publisher req.write("Yes") except: req.write("No") req.write("</code></td></tr>\n") req.write("<tr><td><code>mod_python.psp available</code></td><td><code>") try: from mod_python import psp req.write("Yes") except: req.write("No") req.write("</code></td></tr>\n") req.write("</table>\n") req.write("<h3>Request input headers</h3>\n") write_table(req, req.headers_in) req.write("<h3>Request environment</h3>\n") write_table(req, req.subprocess_env) req.write("<h3>Request configuration</h3>\n") write_table(req, req.get_config()) req.write("<h3>Request options</h3>\n") write_table(req, req.get_options()) req.write("<h3>Request notes</h3>\n") write_table(req, req.notes) req.write("<h3>Server configuration</h3>\n") write_table(req, req.server.get_config()) req.write("<h3>Server options</h3>\n") write_table(req, req.server.get_options()) req.write("<h3>Server configuration tree</h3>\n<pre>") write_tree(req, apache.config_tree(), 0) req.write("</pre>\n") req.write("</body></html>") return apache.OK
def handler(req): req.form = util.FieldStorage(req) if req.form.getfirst('view_log'): log = file(os.path.join(apache.server_root(),req.server.error_fname),'rb') lines = bounded_buffer(100) for line in log: lines.append(line) log.close() req.content_type='text/plain' for line in lines: req.write(line) return apache.OK req.add_common_vars() req.content_type = 'text/html' req.write('<html><head><title>mod_python test page</title></head><body>\n') req.write('<h3>General information</h3>\n') req.write('<table border="1">\n') req.write('<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n'%( 'Apache version', req.subprocess_env.get('SERVER_SOFTWARE') )) req.write('<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n'%( 'Apache threaded MPM', ( apache.mpm_query(apache.AP_MPMQ_IS_THREADED) and 'Yes, maximum %i threads / process'% apache.mpm_query(apache.AP_MPMQ_MAX_THREADS) ) or 'No (single thread MPM)' )) req.write('<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n'%( 'Apache forked MPM', ( apache.mpm_query(apache.AP_MPMQ_IS_FORKED) and 'Yes, maximum %i processes'% apache.mpm_query(apache.AP_MPMQ_MAX_DAEMONS) ) or 'No (single process MPM)' )) req.write('<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n'%( 'Apache server root', apache.server_root() )) req.write('<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n'%( 'Apache document root', req.document_root() )) if req.server.error_fname: req.write('<tr><td><code>%s</code></td><td><code>%s</code> (<a href="?view_log=1" target="_new">view last 100 lines</a>)</td></tr>\n'%( 'Apache error log', os.path.join(apache.server_root(),req.server.error_fname) )) else: req.write('<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n'%( 'Apache error log', 'None' )) req.write('<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n'%( 'Python sys.version', sys.version )) req.write('<tr><td><code>%s</code></td><td><pre>%s</pre></td></tr>\n'%( 'Python sys.path', '\n'.join(sys.path) )) req.write('<tr><td><code>%s</code></td><td><code>%s</code></td></tr>\n'%( 'Python interpreter name', req.interpreter )) req.write('<tr><td><code>mod_python.publisher available</code></td><td><code>') try: from mod_python import publisher req.write('Yes') except: req.write('No') req.write('</code></td></tr>\n') req.write('<tr><td><code>mod_python.psp available</code></td><td><code>') try: from mod_python import psp req.write('Yes') except: req.write('No') req.write('</code></td></tr>\n') req.write('</table>\n') req.write('<h3>Request input headers</h3>\n') write_table(req,req.headers_in) req.write('<h3>Request environment</h3>\n') write_table(req,req.subprocess_env) req.write('<h3>Request configuration</h3>\n') write_table(req,req.get_config()) req.write('<h3>Request options</h3>\n') write_table(req,req.get_options()) req.write('<h3>Request notes</h3>\n') write_table(req,req.notes) req.write('<h3>Server configuration</h3>\n') write_table(req,req.server.get_config()) req.write('<h3>Server options</h3>\n') write_table(req,req.server.get_options()) req.write('<h3>Server configuration tree</h3>\n<pre>') write_tree(req,apache.config_tree(),0) req.write('</pre>\n') req.write('</body></html>') return apache.OK
except KeyError: oai = Cheshire3OaiServer(session, configs, dbs, path) c3OaiServers[path] = oai oaixml = MinimalOaiServer(oai, oai.metadataRegistry) try: xmlresp = oaixml.handleRequest(args) except DatestampError: try: raise BadArgumentError('Invalid date format supplied.') except: xmlresp = oaixml.handleException(args, sys.exc_info()) except C3Exception, e: xmlresp = '<c3:error xmlns:c3="http://www.cheshire3.org/schemas/error" code="%s">%s</c3:error>' % (str(e.__class__).split('.')[-1], e.reason) self.send_xml(xmlresp, req) else: fullPath = os.path.join(apache.server_root(), 'htdocs', path) if os.path.exists(fullPath) and not os.path.isdir(fullPath): req.sendfile(os.path.join(apache.server_root(), 'htdocs', path)) else: # TODO: send proper OAI error? dbps = ['<c3:database>{0}</c3:database>'.format(dbp) for dbp in configs] self.send_xml(''' <c3:error xmlns:c3="http://www.cheshire3.org/schemas/error"> <c3:details>{0}</c3:details> <c3:message>Incomplete or incorrect baseURL, requires a database path from: <c3:databases>{1}</c3:databases> </c3:message> </c3:error>'''.format(path, '\n\t'.join(dbps)), req) #- end reqHandler -------------------------------------------------------------