text: # -*- coding: utf-8 -*-
  
  #############################################################################
  #
  # Copyright © Dragon Dollar Limited
  # contact: contact@dragondollar.com
  #
  # This software is a collection of webservices designed to provide a secure
  # and scalable framework to build e-commerce websites.
  #
  # This software is governed by the CeCILL-B license under French law and
  # abiding by the rules of distribution of free software. You can use,
  # modify and/ or redistribute the software under the terms of the CeCILL-B
  # license as circulated by CEA, CNRS and INRIA at the following URL
  # " http://www.cecill.info".
  #
  # As a counterpart to the access to the source code and rights to copy,
  # modify and redistribute granted by the license, users are provided only
  # with a limited warranty and the software's author, the holder of the
  # economic rights, and the successive licensors have only limited
  # liability.
  #
  # In this respect, the user's attention is drawn to the risks associated
  # with loading, using, modifying and/or developing or reproducing the
  # software by the user in light of its specific status of free software,
  # that may mean that it is complicated to manipulate, and that also
  # therefore means that it is reserved for developers and experienced
  # professionals having in-depth computer knowledge. Users are therefore
  # encouraged to load and test the software's suitability as regards their
  # requirements in conditions enabling the security of their systems and/or
  # data to be ensured and, more generally, to use and operate it in the
  # same conditions as regards security.
  #
  # The fact that you are presently reading this means that you have had
  # knowledge of the CeCILL-B license and that you accept its terms.
  #
  #############################################################################
  
  
  import logging
  import os
  from datetime import datetime
  import sys
  sys.path.append('.')
  import settings
  from B2SUtils import db_utils
  
  
  def main():
      size = settings.HMAC_KEY_SIZE
      path = settings.HMAC_KEY_FILE_PATH
      hmac_key = os.urandom(size)
  
      with open(path, 'w') as f:
          f.write(hmac_key)
          f.close()
          logging.info('HMAC key updated at %s UTC: %s'
                       % (datetime.utcnow(), hmac_key))
  
      with db_utils.get_conn(settings.DATABASE) as conn:
          result = db_utils.delete(conn, 'users_logins',
                          where={'cookie_expiry__lt': datetime.utcnow()},
                          returning='*')
          if result:
              logging.info('Delete expiry login sessions at %s UTC: %s'
                           % (datetime.utcnow(), result))
          else:
              logging.info('No sessions expired')
  
  
  if __name__ == '__main__':
      try:
          main()
      except Exception, e:
          logging.error('HMAC key update Error: %s' % e, exc_info=True)
  