def render_POST(self, request): user = request.getUser() passwd = request.getPassword() if not self.enable_guest and not self.auth(user, passwd): request.setResponseCode(http.UNAUTHORIZED) return (user == '' and passwd == '' ) and 'Authorization required!' or 'Authorization failed!' request.content.seek(0, 0) request.setHeader("content-type", "text/xml") try: args, functionPath = xmlrpclib.loads(request.content.read(), use_datetime=True) except Exception as e: f = xmlrpclib.Fault(self.FAILURE, "Can't deserialize input: %s" % (e, )) self._cbRender(f, request) else: try: function = self.lookupProcedure(functionPath) except xmlrpclib.Fault as f: self._cbRender(f, request) else: def closeReq(result): deleteContext(requestId) if isinstance(result, failure.Failure) and not isinstance( result.value, xmlrpclib.Fault): if isinstance(result.value, RegularError): log.msg("Request error: " + repr(result.value)) return xmlrpclib.Fault(result.value.code, str(result.value)) log.msg( "Request finished with unexpected error. see traceback below" ) result.printTraceback() return xmlrpclib.Fault("INTERNAL_ERROR", str(result.value)) return result requestId = makeContext(Request, request, (functionPath, args)) setCurrentContext(requestId) # Use this list to track whether the response has failed or not. # This will be used later on to decide if the result of the # Deferred should be written out and Request.finish called. responseFailed = [] request.notifyFinish().addErrback(responseFailed.append) if getattr(function, 'withRequest', False): d = defer.maybeDeferred(function, request, *args) else: d = defer.maybeDeferred(function, *args) d.addBoth(closeReq) d.addErrback(self._ebRender) d.addCallback(self._cbRender, request, responseFailed) return server.NOT_DONE_YET
def render_POST(self, request): user = request.getUser() passwd = request.getPassword() if not self.enable_guest and not self.auth(user, passwd): request.setResponseCode(http.UNAUTHORIZED) return (user == "" and passwd == "") and "Authorization required!" or "Authorization failed!" request.content.seek(0, 0) request.setHeader("content-type", "text/xml") try: args, functionPath = xmlrpclib.loads(request.content.read(), use_datetime=True) except Exception as e: f = xmlrpclib.Fault(self.FAILURE, "Can't deserialize input: %s" % (e,)) self._cbRender(f, request) else: try: function = self.lookupProcedure(functionPath) except xmlrpclib.Fault as f: self._cbRender(f, request) else: def closeReq(result): deleteContext(requestId) if isinstance(result, failure.Failure) and not isinstance(result.value, xmlrpclib.Fault): if isinstance(result.value, RegularError): log.msg("Request error: " + repr(result.value)) return xmlrpclib.Fault(result.value.code, str(result.value)) log.msg("Request finished with unexpected error. see traceback below") result.printTraceback() return xmlrpclib.Fault("INTERNAL_ERROR", str(result.value)) return result requestId = makeContext(Request, request, (functionPath, args)) setCurrentContext(requestId) # Use this list to track whether the response has failed or not. # This will be used later on to decide if the result of the # Deferred should be written out and Request.finish called. responseFailed = [] request.notifyFinish().addErrback(responseFailed.append) if getattr(function, "withRequest", False): d = defer.maybeDeferred(function, request, *args) else: d = defer.maybeDeferred(function, *args) d.addBoth(closeReq) d.addErrback(self._ebRender) d.addCallback(self._cbRender, request, responseFailed) return server.NOT_DONE_YET
def __init__(self, configFile): global _coreInstance if _coreInstance: raise Exception("Instance of app already exists") _coreInstance = self self._deferredStopList = [] from rcore.config import config config.reload(configFile) try: logDest = config()['log']['destination'] if logDest == 'syslog': from twisted.python import syslog try: prefix = config()['log']['syslogprefix'] except: prefix = os.path.basename(sys.argv[0]) syslog.startLogging(prefix) elif logDest == 'stdout': log.startLogging(sys.stdout) else: dn = os.path.dirname(logDest) if not dn: dn = self.get_default_log_dir() if dn and not os.path.exists(dn): os.makedirs(dn, 0o755) log.startLogging(DailyLogFile(os.path.basename(logDest), dn)) except Exception as e: log.startLogging(sys.stdout) log.msg( "Setting log from config file is failed. continue with logging to stdout: " + str(e)) from rcore.alarm import Alarm self._rpcServices = {} self._users = {} self.mainContextId = makeContext(MainContext) setCurrentContext(self.mainContextId)
def __init__(self, configFile): global _coreInstance if _coreInstance: raise Exception("Instance of app already exists") _coreInstance = self self._deferredStopList = [] from rcore.config import config config.reload(configFile) try: logDest = config()['log']['destination'] if logDest == 'syslog': from twisted.python import syslog try: prefix = config()['log']['syslogprefix'] except: prefix = os.path.basename(sys.argv[0]) syslog.startLogging(prefix) elif logDest == 'stdout': log.startLogging(sys.stdout) else: dn = os.path.dirname(logDest) if not dn: dn = self.get_default_log_dir() if dn and not os.path.exists(dn): os.makedirs(dn, 0755) log.startLogging(DailyLogFile(os.path.basename(logDest), dn)) except Exception as e: log.startLogging(sys.stdout) log.msg("Setting log from config file is failed. continue with logging to stdout: " + str(e)) from rcore.alarm import Alarm self._rpcServices = {} self._users = {} self.mainContextId = makeContext(MainContext) setCurrentContext(self.mainContextId)