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)
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)
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')
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")
def onError(self, reason): log.error("Stream Error: %r" % (reason, ))