def generate_test_admin(): test_admin = models.Admins().from_json({ 'username': '******', 'password': '******', 'name': 'Test Admin' }) return test_admin
def add_ldap_user_to_db(username, display_name): """ Adds an LDAP user stub in the Admins table of the database for flask_login """ try: new_admin = models.Admins().ldap_user_from_json({ 'username': username, 'name': display_name }) db.session.add(new_admin) db.session.commit() json_logger('audit', username, '"{0}" was added as an LDAP admin to the database"'.format(username)) except ValidationError as e: raise e except Exception as e: db.session.rollback() json_logger( 'error', username, 'The following error occurred when adding an LDAP admin: {0}'.format(str(e))) ValidationError('A database error occurred. Please try again.', 'error') finally: db.session.close()
def initialize(): try: db.session.remove() db.drop_all() db.create_all() add_default_configuration_settings() admin2 = models.Admins().from_json({ 'username': '******', 'password': '******', 'name': 'Some Admin' }) enable_ldap_auth = models.Configs.query.filter_by( setting='Enable LDAP Authentication').first() enable_ldap_auth.value = 'True' ldap_server = models.Configs.query.filter_by( setting='AD Server LDAP String').first() ldap_server.value = 'LDAPS://postmaster.local:636' domain = models.Configs.query.filter_by(setting='AD Domain').first() domain.value = 'postmaster.local' ldap_admin_group = models.Configs.query.filter_by( setting='AD PostMaster Group').first() ldap_admin_group.value = 'PostMaster Admins' try: db.session.add(admin2) db.session.add(enable_ldap_auth) db.session.add(ldap_server) db.session.add(domain) db.session.add(ldap_admin_group) db.session.commit() except: return False domain = models.VirtualDomains().from_json({'name': 'postmaster.com'}) domain2 = models.VirtualDomains().from_json({'name': 'postmaster.org'}) try: db.session.add(domain) db.session.add(domain2) db.session.commit() except: return False emailUser = models.VirtualUsers().from_json({ 'email': '*****@*****.**', 'password': '******' }) emailUser2 = models.VirtualUsers().from_json({ 'email': '*****@*****.**', 'password': '******' }) emailUser3 = models.VirtualUsers().from_json({ 'email': '*****@*****.**', 'password': '******' }) try: db.session.add(emailUser) db.session.add(emailUser2) db.session.add(emailUser3) db.session.commit() except: return False alias = models.VirtualAliases().from_json({ 'domain_id': 1, 'source': '*****@*****.**', 'destination': '*****@*****.**' }) alias2 = models.VirtualAliases().from_json({ 'domain_id': 1, 'source': '*****@*****.**', 'destination': '*****@*****.**' }) alias3 = models.VirtualAliases().from_json({ 'domain_id': 1, 'source': '*****@*****.**', 'destination': '*****@*****.**' }) try: db.session.add(alias) db.session.add(alias2) db.session.add(alias3) db.session.commit() except: return False return True except Exception as e: print("Unexpected error: {0}".format(e.message)) return False return False
def add_default_configuration_settings(): """ Adds the default configuration settings to the database if they aren't present. This is to be used from manage.py when creating the database. """ if not models.Configs.query.filter_by(setting='Minimum Password Length').first(): min_pwd_length = models.Configs() min_pwd_length.setting = 'Minimum Password Length' min_pwd_length.value = '8' min_pwd_length.regex = '^([0-9]|[1][0-9]|[2][0-5])$' db.session.add(min_pwd_length) if not models.Configs.query.filter_by(setting='Account Lockout Threshold').first(): account_lockout_threshold = models.Configs() account_lockout_threshold.setting = 'Account Lockout Threshold' account_lockout_threshold.value = '5' account_lockout_threshold.regex = '^([0-9]|[1][0-9]|[2][0-5])$' db.session.add(account_lockout_threshold) if not models.Configs.query.filter_by(setting='Account Lockout Duration in Minutes').first(): account_lockout_duration = models.Configs() account_lockout_duration.setting = 'Account Lockout Duration in Minutes' account_lockout_duration.value = '30' account_lockout_duration.regex = '^([1-9]|[1-9][0-9])$' db.session.add(account_lockout_duration) if not models.Configs.query.filter_by(setting='Reset Account Lockout Counter in Minutes').first(): reset_account_lockout = models.Configs() reset_account_lockout.setting = 'Reset Account Lockout Counter in Minutes' reset_account_lockout.value = '30' reset_account_lockout.regex = '^([1-9]|[1-9][0-9])$' db.session.add(reset_account_lockout) if not models.Configs.query.filter_by(setting='Login Auditing').first(): login_auditing = models.Configs() login_auditing.setting = 'Login Auditing' login_auditing.value = 'False' login_auditing.regex = '^(True|False)$' db.session.add(login_auditing) if not models.Configs.query.filter_by(setting='Mail Database Auditing').first(): mail_db_auditing = models.Configs() mail_db_auditing.setting = 'Mail Database Auditing' mail_db_auditing.value = 'False' mail_db_auditing.regex = '^(True|False)$' db.session.add(mail_db_auditing) if not models.Configs.query.filter_by(setting='Enable LDAP Authentication').first(): ldap_auth = models.Configs() ldap_auth.setting = 'Enable LDAP Authentication' ldap_auth.value = 'False' ldap_auth.regex = '^(True|False)$' db.session.add(ldap_auth) if not models.Configs.query.filter_by(setting='AD Server LDAP String').first(): ad_server = models.Configs() ad_server.setting = 'AD Server LDAP String' ad_server.regex = '^(.*)$' db.session.add(ad_server) if not models.Configs.query.filter_by(setting='AD Domain').first(): ad_domain = models.Configs() ad_domain.setting = 'AD Domain' ad_domain.regex = '^(.*)$' db.session.add(ad_domain) if not models.Configs.query.filter_by(setting='AD PostMaster Group').first(): ad_group = models.Configs() ad_group.setting = 'AD PostMaster Group' ad_group.regex = '^(.*)$' db.session.add(ad_group) if not models.Admins.query.first(): admin = models.Admins().from_json( {'username': '******', 'password': '******', 'name': 'Default Admin'}) db.session.add(admin) try: db.session.commit() except Exception: db.session.rollback()
def initialize(): db.session.remove() db.drop_all() db.create_all() add_default_configuration_settings() admin2 = models.Admins().from_json({ 'username': '******', 'password': '******', 'name': 'Some Admin' }) db.session.add(admin2) enable_ldap_auth = models.Configs.query.filter_by( setting='Enable LDAP Authentication').first() enable_ldap_auth.value = 'True' ldap_server = models.Configs.query.filter_by( setting='AD Server LDAP String').first() ldap_server.value = 'LDAPS://postmaster.local:636' domain = models.Configs.query.filter_by(setting='AD Domain').first() domain.value = 'postmaster.local' ldap_admin_group = models.Configs.query.filter_by( setting='AD PostMaster Group').first() ldap_admin_group.value = 'PostMaster Admins' ldap_auth_method = models.Configs.query.filter_by( setting='LDAP Authentication Method').first() # Use SIMPLE auth because ldap3 testing only allows this authentication # method ldap_auth_method.value = 'SIMPLE' db.session.add(enable_ldap_auth) db.session.add(ldap_server) db.session.add(domain) db.session.add(ldap_admin_group) db.session.add(ldap_auth_method) domain = models.VirtualDomains().from_json({'name': 'postmaster.com'}) domain2 = models.VirtualDomains().from_json({'name': 'postmaster.org'}) db.session.add(domain) db.session.add(domain2) email_user = models.VirtualUsers().from_json({ 'email': '*****@*****.**', 'password': '******' }) email_user2 = models.VirtualUsers().from_json({ 'email': '*****@*****.**', 'password': '******' }) email_user3 = models.VirtualUsers().from_json({ 'email': '*****@*****.**', 'password': '******' }) db.session.add(email_user) db.session.add(email_user2) db.session.add(email_user3) alias = models.VirtualAliases().from_json({ 'domain_id': 1, 'source': '*****@*****.**', 'destination': '*****@*****.**' }) alias2 = models.VirtualAliases().from_json({ 'domain_id': 1, 'source': '*****@*****.**', 'destination': '*****@*****.**' }) alias3 = models.VirtualAliases().from_json({ 'domain_id': 1, 'source': '*****@*****.**', 'destination': '*****@*****.**' }) db.session.add(alias) db.session.add(alias2) db.session.add(alias3) db.session.commit()