Example #1
0
 def _get_sessions(curs=None):
     from_d = datetime.datetime.now(pytz.utc)
     logger.info("Sessions dumping into db initiated %s", from_d)
     from_d = from_d - datetime.timedelta(minutes=settings.session_valid_minutes)
     logger.debug("Fetching not expired sessions, newer %s. Session valid period: %s minutes",
         from_d, settings.session_valid_minutes)
     f = SessionFilter({'from_update_date': from_d}, {}, ['id'])
     return f.filter_objs(curs)
Example #2
0
 def _get_session_db(self, session_id, curs=None):
     f = SessionFilter({'session_id': session_id}, {}, {})
     session = f.filter_one_obj(curs, for_update=True)
     valid_after_date = self._session_valid_after_update_date()
     if session.update_date > valid_after_date:
         self._set_update_date(session)
         mapping.save(curs, session)
     else:
         raise SessionExpired()
     return session
Example #3
0
    def _change_session_ip(self, sess_id, curs=None):
        # changing ip in session
        f = SessionFilter({"session_id": sess_id}, {}, None)
        s = f.filter_one_obj(curs)
        data = json.loads(s.serialized_data)
        data["ip"] = "new_%s" % data["ip"]
        s.serialized_data = json.dumps(data)
        mapping.save(curs, s)

        a = Authenticator()
        a._save_session_to_cache(s)
Example #4
0
 def _clean(curs=None):
     to_d = datetime.datetime.now()
     logger.info("Sessions cleaning initiated %s", to_d)
     to_d = to_d - datetime.timedelta(minutes=settings.session_valid_minutes)
     logger.debug("Removing session older %s. Session valid period: %s minutes",
         to_d, settings.session_valid_minutes)
     f = SessionFilter({'to_update_date': to_d}, {}, ['id'])
     sessions = f.filter_objs(curs)
     logger.info("Deleting %s sessions", len(sessions))
     mapping.delete_objects(curs, sessions)
     logger.info("Sessions cleaned")
Example #5
0
    def logout(self, data, req_info, curs=None):

        session_id = data.get('session_id')
        f = SessionFilter({'session_id': session_id}, {}, None)
        try:
            session = f.filter_one_obj(curs, for_update=True)
            mapping.delete(curs, session)
            _add_log_info(data, session)
        except SessionNotFound:
            pass
        return response_ok()
Example #6
0
 def _dump_session(mem_cache, session, curs=None):
     f = SessionFilter({'session_id': session.session_id}, {}, None)
     try:
         s = f.filter_one_obj(curs, for_update=True)
         sess_id = s.session_id.encode('utf8')
         cached_s = mem_cache.get(sess_id)
         if cached_s is None:
             logger.debug("Session %s not found in cache", sess_id)
         else:
             logger.debug("Cached session %s update date: %s",
                 cached_s.session_id, cached_s.update_date)
             logger.debug("Db session %s update date: %s",
                 s.session_id, s.update_date)
             if cached_s.update_date > s.update_date:
                 s.update_date = cached_s.update_date
                 mapping.save(curs, s)
                 logger.debug("Session %s dumped from cache into db", sess_id)
             else:
                 logger.debug("Session %s update_date in db greater or equal " \
                     "cached value. Noting to dump", sess_id)
     except SessionNotFound, e:
         logger.debug("Dumping session failed: %s", e)
Example #7
0
 def get_session(self, session_id, for_update=False, curs=None):
     f = SessionFilter({'session_id': session_id}, {}, {})
     return f.filter_one_obj(curs, for_update=for_update)
Example #8
0
 def _remove_session(self, sess_id, curs=None):
     f = SessionFilter({'session_id': sess_id}, {}, None)
     sess = f.filter_one_obj(curs)
     mapping.delete(curs, sess)