This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
mandaye/mandaye_admin.py

75 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" Script to administrate mandaye server
"""
import base64
from optparse import OptionParser
from mandaye import config
from mandaye.log import logger
from mandaye.models import ExtUser
from mandaye.db import sql_session
def get_cmd_options():
usage = "usage: %prog --createdb|--cryptpwd"
parser = OptionParser(usage=usage)
parser.add_option("--createdb",
dest="createdb",
default=False,
action="store_true",
help="Create the Mandaye database"
)
parser.add_option("--cryptpwd",
dest="cryptpwd",
default=False,
action="store_true",
help="Crypt external password in Mandaye's database"
)
(options, args) = parser.parse_args()
return options
def encrypt_pwd(pwd):
from Crypto.Cipher import AES
logger.debug("Encrypt password")
enc_pwd = pwd
if config.encrypt_secret:
try:
cipher = AES.new(config.encrypt_secret, AES.MODE_CFB)
enc_pwd = cipher.encrypt(pwd)
enc_pwd = base64.b64encode(enc_pwd)
except Exception, e:
if config.debug:
traceback.print_exc()
logger.warning('Password encrypting failed %s' % e)
else:
logger.warning("You must set a secret to use pwd encryption")
return enc_pwd
def main():
options = get_cmd_options()
if options.createdb:
logger.info("Creating database...")
if config.db_url:
import migrate.versioning.api
import mandaye.migration
from sqlalchemy import create_engine
from mandaye.models import Base
engine = create_engine(config.db_url)
Base.metadata.create_all(engine)
migrate.versioning.api.version_control(url=config.db_url,
repository=mandaye.migration.__path__[0])
migrate.versioning.api.upgrade(url=config.db_url,
repository=mandaye.migration.__path__[0])
logger.info("Database created")
if options.cryptpwd:
for user in sql_session().query(ExtUser).all():
user.password = encrypt_pwd(user.password)
sql_session().commit()
if __name__ == "__main__":
main()