Beispiel #1
0
 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')
Beispiel #2
0
 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))])
Beispiel #3
0
 def log_message(self, format, *args):
     logging.Log([('uireq', format % args)])
Beispiel #4
0
            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 = []
Beispiel #5
0
            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 = []
Beispiel #6
0
    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
Beispiel #7
0
 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)