def do_GET(self, command='GET'): (scheme, netloc, path, params, query, frag) = urlparse(self.path) qs = parse_qs(query) self.getHostInfo() self.post_data = None self.command = command if not self.performAuthChecks(scheme, netloc, path, qs): return try: return self.handleHttpRequest(scheme, netloc, path, params, query, frag, qs, None) except socket.error: pass except KeyboardInterrupt: raise except Exception as e: logging.Log([('err', 'GET error at %s: %s' % (path, e))]) if logging.DEBUG_IO: print('=== ERROR\n%s\n===' % format_exc()) self.sendResponse('<h1>Internal Error</h1>\n', code=500, msg='Error')
def Notify(self, message, prefix=' ', popup=False, color=None, now=None, alignright=''): if popup: logging.Log([('info', '%s%s%s' % (message, alignright and ' ' or '', alignright))])
def log_message(self, format, *args): logging.Log([('uireq', format % args)])
self.sendResponse('<h1>Internal Error</h1>\n', code=500, msg='Error') self.rfile = self.old_rfile self.post_data = None return if not self.performPostAuthChecks(scheme, netloc, path, qs, posted): return try: return self.handleHttpRequest(scheme, netloc, path, params, query, frag, qs, posted) except socket.error: pass except Exception, e: logging.Log([('err', 'POST error at %s: %s' % (path, e))]) self.sendResponse('<h1>Internal Error</h1>\n', code=500, msg='Error') self.rfile = self.old_rfile self.post_data = None def openCGI(self, full_path, path, shtml_vars): cgi_file = CGIWrapper(self, full_path).Run() lines = cgi_file.read(32 * 1024).splitlines(True) if '\r\n' in lines: lines = lines[0:lines.index('\r\n') + 1] elif '\n' in lines: lines = lines[0:lines.index('\n') + 1] else: lines.append('') header_list = []
self.sendResponse('<h1>Internal Error</h1>\n', code=500, msg='Error') self.rfile = self.old_rfile self.post_data = None return if not self.performPostAuthChecks(scheme, netloc, path, qs, posted): return try: return self.handleHttpRequest(scheme, netloc, path, params, query, frag, qs, posted) except socket.error: pass except Exception, e: logging.Log([('err', 'Error handling POST at %s: %s' % (path, e))]) self.sendResponse('<h1>Internal Error</h1>\n', code=500, msg='Error') self.rfile = self.old_rfile self.post_data = None def openCGI(self, full_path, path, shtml_vars): cgi_file = CGIWrapper(self, full_path).Run() lines = cgi_file.read(32 * 1024).splitlines(True) if '\r\n' in lines: lines = lines[0:lines.index('\r\n') + 1] elif '\n' in lines: lines = lines[0:lines.index('\n') + 1] else: lines.append('') header_list = []
def do_POST(self, command='POST'): (scheme, netloc, path, params, query, frag) = urlparse(self.path) qs = parse_qs(query) self.getHostInfo() self.command = command ctype, pdict = cgi.parse_header(self.headers.get('content-type')) if (not (ctype == 'text/xml' and self.host_config.get('xmlrpc')) and not self.performAuthChecks(scheme, netloc, path, qs)): return posted = None self.post_data = tempfile.TemporaryFile() self.old_rfile = self.rfile try: # First, buffer the POST data to a file... clength = cleft = int(self.headers.get('content-length')) while cleft > 0: rbytes = min(64 * 1024, cleft) self.post_data.write(self.rfile.read(rbytes)) cleft -= rbytes # Juggle things so the buffering is invisble. self.post_data.seek(0) self.rfile = self.post_data if ctype.lower() == 'multipart/form-data': self.post_data.seek(0) posted = cgi.FieldStorage(fp=self.post_data, headers=self.headers, environ={ 'REQUEST_METHOD': command, 'CONTENT_TYPE': ctype }) elif ctype.lower() == 'application/x-www-form-urlencoded': if clength >= 50 * 1024 * 1024: raise Exception(("Refusing to parse giant posted query " "string (%s bytes).") % clength) posted = cgi.parse_qs(self.rfile.read(clength), 1) elif self.host_config.get('xmlrpc', False): with self.server.RCI.lock: return SimpleXMLRPCRequestHandler.do_POST(self) self.post_data.seek(0) except socket.error: pass except KeyboardInterrupt: raise except Exception as e: logging.Log([('err', 'POST error at %s: %s' % (path, e))]) self.sendResponse('<h1>Internal Error</h1>\n', code=500, msg='Error') self.rfile = self.old_rfile self.post_data = None return if not self.performPostAuthChecks(scheme, netloc, path, qs, posted): return try: return self.handleHttpRequest(scheme, netloc, path, params, query, frag, qs, posted) except socket.error: pass except KeyboardInterrupt: raise except Exception as e: logging.Log([('err', 'Error handling POST at %s: %s' % (path, e))]) self.sendResponse('<h1>Internal Error</h1>\n', code=500, msg='Error') self.rfile = self.old_rfile self.post_data = None
def Log(self, values): if self.log_id: values.append(('id', self.log_id)) logging.Log(values)
def Log(self, values, level=logging.LOG_LEVEL_DEFAULT): if self.log_id: values.append(('id', self.log_id)) logging.Log(values, level=level)