def shutdown(self): self.shutdownEvt.wait() self.logger.info('Initiating shutdown...') # stop services self.logger.info('Stopping services...') for service in [x for x in self.services.values() if x is not self]: service.shutdown() self.running = False # shutdown session manager if SessionManager.sm: self.logger.info('Closing session manager...') SessionManager.close() # close database if _db.db_handle: self.logger.info('Closing database...') _db.close() self.logger.info('All services have been shut down successfully') # shutdown logging logging.shutdown() self.shutdowninprogress = False
def __init__(self, request=None, response=None): self.request = request self.response = response self.session = None if request: path_info = request.serverVariables['PATH_INFO'] or '/' # get session session = None cookiesEnabled = True if request.cookies.has_key('_sid'): session = SessionManager.fetchSession(request.cookies['_sid'].value) else: cookiesEnabled = False session_match = re.match(self.sid_pattern, path_info) if session_match: path_info = path_info.replace(session_match.group(), '', 1) or '/' request.serverVariables['PATH_INFO'] = path_info session = SessionManager.fetchSession(session_match.group(1)) if session != None: self.session = session request.serverVariables["AUTH_USER"] = session.user.displayName.value if not cookiesEnabled: if not session.sessionid in request.serverVariables["SCRIPT_NAME"]: request.serverVariables["SCRIPT_NAME"] += '/{%s}' % session.sessionid else: lstScript = request.serverVariables["SCRIPT_NAME"].split('/') request.serverVariables["SCRIPT_NAME"] = \ "/%s/{%s}" %(lstScript[1], session.sessionid) else: self.session = self.__create_guest_session()
def getHandle(): #open database _db.open(misc.getCallableByName(settings['store']['interface'])) #create in-memory session manager SessionManager.open(inMemorySessionManager.SessionManager, 1200) oSystemUser = _db.getItem('system') context = HttpContext() context.session = SessionManager.create(oSystemUser) currentThread().context = context currentThread().trans = None return _db
def start(self): try: # read configuration file from porcupine.config.settings import settings # initialize logging log.initialize_logging() self.logger.info('Server starting...') # register request interfaces for key, value in settings['requestinterfaces'].items(): settings['requestinterfaces'][key] = \ misc.getCallableByName(value) self.logger.info('Succesfullly registered %i request interfaces' % \ len(settings['requestinterfaces'])) # register template languages for key, value in settings['templatelanguages'].items(): settings['templatelanguages'][key] = \ misc.getCallableByName(value) self.logger.info('Succesfullly registered %i template languages' % \ len(settings['templatelanguages'])) # load published directories self.logger.info('Loading published directories\' registrations...') from porcupine.config import pubdirs # open database self.logger.info('Opening database...') _db.open(misc.getCallableByName( settings['store']['interface'])) # create session manager self.logger.info('Creating session manager...') SessionManager.open(misc.getCallableByName( settings['sessionmanager']['interface']), int(settings['sessionmanager']['timeout'])) self.services['_controller'] = self # start services self.logger.info('Starting services...') services.startServices() except Exception, e: self.logger.log(logging.ERROR, e[0], *(), **{'exc_info' : True}) raise e
def __create_guest_session(self): # create new session with the specified guest user self.user = _db.getItem(settings['sessionmanager']['guest']) new_session = SessionManager.create(settings['sessionmanager']['guest']) session_id = new_session.sessionid query_string = self.request.getQueryString() if '_nojavascript' in query_string: root_url = self.request.getRootUrl() path = self.request.serverVariables['PATH_INFO'] self.response.redirect( '%(root_url)s/{%(session_id)s}%(path)s' % locals() ) # add cookie with sessionid self.response.cookies['_sid'] = session_id self.response.cookies['_sid']['path'] = \ self.request.serverVariables['SCRIPT_NAME'] return new_session
def __init__(self, name, target, identity): Thread.__init__(self, name=name, target=target) id = _db.getItem(identity) self.context = HttpContext() self.context.session = SessionManager.create(id) self.trans = None
def close(): SessionManager.close() _db.close()