Esempio n. 1
0
 def _loginFailed(self, result):
     """
     Handle login failure by presenting either another challenge (for
     expected authentication/authorization-related failures) or a server
     error page (for anything else).
     """
     if result.check(error.Unauthorized, error.LoginFailed):
         return UnauthorizedResource()
     else:
         log.error("HTTPAuthSessionWrapper.getChildWithDefault encountered "
                   "unexpected error (%s)" % (result, ))
         return ErrorPage(500, None, None)
Esempio n. 2
0
 def _loginFailed(self, result):
     """
     Handle login failure by presenting either another challenge (for
     expected authentication/authorization-related failures) or a server
     error page (for anything else).
     """
     if result.check(error.Unauthorized, error.LoginFailed):
         return UnauthorizedResource()
     else:
         log.error(
             "HTTPAuthSessionWrapper.getChildWithDefault encountered "
             "unexpected error (%s)" % (result, ))
         return ErrorPage(500, None, None)
Esempio n. 3
0
    def render_POST(self, request):
        #log.debug("request from %s: %s" % (self.userid, request.requestHeaders))

        # check mime type
        mime = request.getHeader('content-type')
        if mime not in self.config['upload']['accept_content']:
            return self._quick_response(request, 406,
                                        'unacceptable content type')

        # check length
        length = request.getHeader('content-length')
        if length != None:
            length = long(length)
            if length <= self.config['upload']['max_size']:
                # store file to storage
                # TODO convert to file-object management for less memory consumption
                data = request.content.read()
                if len(data) == length:
                    fileid = util.rand_str(40)
                    filename = self.fileserver.storage.store_data(
                        fileid, mime, data)
                    if filename:
                        log.debug(
                            "file stored to disk (filename=%s, fileid=%s)" %
                            (filename, fileid))
                        request.setHeader('content-type', 'text/url')
                        return str(self.config['upload']['url']) % (fileid, )
                    else:
                        log.error("error storing file")
                        return self._quick_response(request, 500,
                                                    'unable to store file')

                else:
                    log.warn(
                        "file length not matching content-length header (%d/%d)"
                        % (len(data), length))
                    return self._quick_response(request, 400, 'bad request')
            else:
                log.warn("file too big (%d bytes)" % length)
                return self._quick_response(request, 413, 'request too large')
        else:
            log.warn("content-length header not found")
            return self._quick_response(request, 411,
                                        'content length not declared')
Esempio n. 4
0
    def render_POST(self, request):
        # log.debug("request from %s: %s" % (self.userid, request.requestHeaders))

        # check mime type
        mime = request.getHeader("content-type")
        if mime not in self.config["upload"]["accept_content"]:
            return self._quick_response(request, 406, "unacceptable content type")

        # check length
        length = request.getHeader("content-length")
        if length != None:
            length = long(length)
            if length <= self.config["upload"]["max_size"]:
                # store file to storage
                # TODO convert to file-object management for less memory consumption
                data = request.content.read()
                if len(data) == length:
                    fileid = util.rand_str(40)
                    filename = self.fileserver.storage.store_data(fileid, mime, data)
                    if filename:
                        log.debug("file stored to disk (filename=%s, fileid=%s)" % (filename, fileid))
                        request.setHeader("content-type", "text/url")
                        return str(self.config["upload"]["url"]) % (fileid,)
                    else:
                        log.error("error storing file")
                        return self._quick_response(request, 500, "unable to store file")

                else:
                    log.warn("file length not matching content-length header (%d/%d)" % (len(data), length))
                    return self._quick_response(request, 400, "bad request")
            else:
                log.warn("file too big (%d bytes)" % length)
                return self._quick_response(request, 413, "request too large")
        else:
            log.warn("content-length header not found")
            return self._quick_response(request, 411, "content length not declared")
Esempio n. 5
0
 def onError(self, reason):
     log.error("Stream Error: %r" % (reason, ))
Esempio n. 6
0
 def onError(self, reason):
     log.error("Stream Error: %r" % (reason, ))