|  |  | @ -18,8 +18,10 @@ def admin(localpart, domain_name, password): | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.add(user) |  |  |  |     db.session.add(user) | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.commit() |  |  |  |     db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.command |  |  |  | @manager.command | 
			
		
	
		
		
			
				
					
					|  |  |  | def user(localpart, domain_name, password, hash_scheme=app.config['PASSWORD_SCHEME']): |  |  |  | def user(localpart, domain_name, password, | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |          hash_scheme=app.config['PASSWORD_SCHEME']): | 
			
		
	
		
		
			
				
					
					|  |  |  |     """ Create a user |  |  |  |     """ Create a user | 
			
		
	
		
		
			
				
					
					|  |  |  |     """ |  |  |  |     """ | 
			
		
	
		
		
			
				
					
					|  |  |  |     domain = models.Domain.query.get(domain_name) |  |  |  |     domain = models.Domain.query.get(domain_name) | 
			
		
	
	
		
		
			
				
					|  |  | @ -35,10 +37,11 @@ def user(localpart, domain_name, password, hash_scheme=app.config['PASSWORD_SCHE | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.add(user) |  |  |  |     db.session.add(user) | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.commit() |  |  |  |     db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.option('-n','--domain_name',dest='domain_name') |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | @manager.option('-u','--max_users',dest='max_users') |  |  |  | @manager.option('-n', '--domain_name', dest='domain_name') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | @manager.option('-a','--max_aliases',dest='max_aliases') |  |  |  | @manager.option('-u', '--max_users', dest='max_users') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | @manager.option('-q','--max_quota_bytes',dest='max_quota_bytes') |  |  |  | @manager.option('-a', '--max_aliases', dest='max_aliases') | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | @manager.option('-q', '--max_quota_bytes', dest='max_quota_bytes') | 
			
		
	
		
		
			
				
					
					|  |  |  | def domain(domain_name, max_users=0, max_aliases=0, max_quota_bytes=0): |  |  |  | def domain(domain_name, max_users=0, max_aliases=0, max_quota_bytes=0): | 
			
		
	
		
		
			
				
					
					|  |  |  |     domain = models.Domain.query.get(domain_name) |  |  |  |     domain = models.Domain.query.get(domain_name) | 
			
		
	
		
		
			
				
					
					|  |  |  |     if not domain: |  |  |  |     if not domain: | 
			
		
	
	
		
		
			
				
					|  |  | @ -46,8 +49,10 @@ def domain(domain_name, max_users=0, max_aliases=0, max_quota_bytes=0): | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.session.add(domain) |  |  |  |         db.session.add(domain) | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.session.commit() |  |  |  |         db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.command |  |  |  | @manager.command | 
			
		
	
		
		
			
				
					
					|  |  |  | def user_import(localpart, domain_name, password_hash, hash_scheme=app.config['PASSWORD_SCHEME']): |  |  |  | def user_import(localpart, domain_name, password_hash,  | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 hash_scheme=app.config['PASSWORD_SCHEME']): | 
			
		
	
		
		
			
				
					
					|  |  |  |     """ Import a user along with password hash. Available hashes: |  |  |  |     """ Import a user along with password hash. Available hashes: | 
			
		
	
		
		
			
				
					
					|  |  |  |                    'SHA512-CRYPT' |  |  |  |                    'SHA512-CRYPT' | 
			
		
	
		
		
			
				
					
					|  |  |  |                    'SHA256-CRYPT' |  |  |  |                    'SHA256-CRYPT' | 
			
		
	
	
		
		
			
				
					|  |  | @ -67,47 +72,59 @@ def user_import(localpart, domain_name, password_hash, hash_scheme=app.config['P | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.add(user) |  |  |  |     db.session.add(user) | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.commit() |  |  |  |     db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.command |  |  |  | @manager.command | 
			
		
	
		
		
			
				
					
					|  |  |  | def config_update(verbose=False, delete_objects=False): |  |  |  | def config_update(verbose=False, delete_objects=False): | 
			
		
	
		
		
			
				
					
					|  |  |  |     """sync configuration with data from YAML-formatted stdin""" |  |  |  |     """sync configuration with data from YAML-formatted stdin""" | 
			
		
	
		
		
			
				
					
					|  |  |  |     import yaml, sys |  |  |  |     import yaml | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     new_config=yaml.load(sys.stdin) |  |  |  |     import sys | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     new_config = yaml.load(sys.stdin) | 
			
		
	
		
		
			
				
					
					|  |  |  |     # print new_config |  |  |  |     # print new_config | 
			
		
	
		
		
			
				
					
					|  |  |  |     domains=new_config.get('domains',[]) |  |  |  |     domains = new_config.get('domains', []) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     tracked_domains=set() |  |  |  |     tracked_domains = set() | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     for domain_config in domains: |  |  |  |     for domain_config in domains: | 
			
		
	
		
		
			
				
					
					|  |  |  |         if verbose: |  |  |  |         if verbose: | 
			
		
	
		
		
			
				
					
					|  |  |  |             print(str(domain_config)) |  |  |  |             print(str(domain_config)) | 
			
		
	
		
		
			
				
					
					|  |  |  |             domain_name = domain_config['name'] |  |  |  |         domain_name = domain_config['name'] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             max_users=domain_config.get('max_users',0) |  |  |  |         max_users = domain_config.get('max_users', 0) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             max_aliases=domain_config.get('max_aliases',0) |  |  |  |         max_aliases = domain_config.get('max_aliases', 0) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             max_quota_bytes=domain_config.get('max_quota_bytes',0) |  |  |  |         max_quota_bytes = domain_config.get('max_quota_bytes', 0) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             tracked_domains.add(domain_name) |  |  |  |         tracked_domains.add(domain_name) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             domain = models.Domain.query.get(domain_name) |  |  |  |         domain = models.Domain.query.get(domain_name) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             if not domain: |  |  |  |         if not domain: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 domain = models.Domain(name=domain_name, |  |  |  |             domain = models.Domain(name=domain_name, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         max_users=max_users, |  |  |  |                                    max_users=max_users, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         max_aliases=max_aliases, |  |  |  |                                    max_aliases=max_aliases, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         max_quota_bytes=max_quota_bytes) |  |  |  |                                    max_quota_bytes=max_quota_bytes) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 db.session.add(domain) |  |  |  |             db.session.add(domain) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             else: |  |  |  |             print("Added " + str(domain_config)) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 domain.max_users = max_users |  |  |  |         else: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 domain.max_aliases = max_aliases |  |  |  |             domain.max_users = max_users | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 domain.max_quota_bytes = max_quota_bytes |  |  |  |             domain.max_aliases = max_aliases | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 db.session.add(domain) |  |  |  |             domain.max_quota_bytes = max_quota_bytes | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             db.session.add(domain) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             print("Updated " + str(domain_config)) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |     users = new_config.get('users', []) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     users=new_config.get('users',[]) |  |  |  |     tracked_users = set() | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     tracked_users=set() |  |  |  |     user_optional_params = ('comment', 'quota_bytes', 'global_admin', | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             'enable_imap', 'enable_pop', 'forward_enabled', | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             'forward_destination', 'reply_enabled', | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             'reply_subject', 'reply_body', 'displayed_name', | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             'spam_enabled', 'email', 'spam_threshold') | 
			
		
	
		
		
			
				
					
					|  |  |  |     for user_config in users: |  |  |  |     for user_config in users: | 
			
		
	
		
		
			
				
					
					|  |  |  |         if verbose: |  |  |  |         if verbose: | 
			
		
	
		
		
			
				
					
					|  |  |  |             print(str(user_config)) |  |  |  |             print(str(user_config)) | 
			
		
	
		
		
			
				
					
					|  |  |  |         localpart=user_config['localpart'] |  |  |  |         localpart = user_config['localpart'] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         domain_name=user_config['domain'] |  |  |  |         domain_name = user_config['domain'] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         password_hash=user_config.get('password_hash',None) |  |  |  |         password_hash = user_config.get('password_hash', None) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         hash_scheme=user_config.get('hash_scheme',None) |  |  |  |         hash_scheme = user_config.get('hash_scheme', None) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         domain = models.Domain.query.get(domain_name) |  |  |  |         domain = models.Domain.query.get(domain_name) | 
			
		
	
		
		
			
				
					
					|  |  |  |         email='{0}@{1}'.format(localpart,domain_name) |  |  |  |         email = '{0}@{1}'.format(localpart, domain_name) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         optional_params = {} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         for k in user_optional_params: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if k in user_config: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 optional_params[k] = user_config[k] | 
			
		
	
		
		
			
				
					
					|  |  |  |         if not domain: |  |  |  |         if not domain: | 
			
		
	
		
		
			
				
					
					|  |  |  |             domain = models.Domain(name=domain_name) |  |  |  |             domain = models.Domain(name=domain_name) | 
			
		
	
		
		
			
				
					
					|  |  |  |             db.session.add(domain) |  |  |  |             db.session.add(domain) | 
			
		
	
	
		
		
			
				
					|  |  | @ -118,25 +135,28 @@ def config_update(verbose=False, delete_objects=False): | 
			
		
	
		
		
			
				
					
					|  |  |  |             user = models.User( |  |  |  |             user = models.User( | 
			
		
	
		
		
			
				
					
					|  |  |  |                 localpart=localpart, |  |  |  |                 localpart=localpart, | 
			
		
	
		
		
			
				
					
					|  |  |  |                 domain=domain, |  |  |  |                 domain=domain, | 
			
		
	
		
		
			
				
					
					|  |  |  |                 global_admin=False |  |  |  |                 **optional_params | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             ) |  |  |  |             ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         else: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             for k in optional_params: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 setattr(user, k, optional_params[k]) | 
			
		
	
		
		
			
				
					
					|  |  |  |         user.set_password(password_hash, hash_scheme=hash_scheme, raw=True) |  |  |  |         user.set_password(password_hash, hash_scheme=hash_scheme, raw=True) | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.session.add(user) |  |  |  |         db.session.add(user) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     aliases=new_config.get('aliases',[]) |  |  |  |     aliases = new_config.get('aliases', []) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     tracked_aliases=set() |  |  |  |     tracked_aliases = set() | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     for alias_config in aliases: |  |  |  |     for alias_config in aliases: | 
			
		
	
		
		
			
				
					
					|  |  |  |         if verbose: |  |  |  |         if verbose: | 
			
		
	
		
		
			
				
					
					|  |  |  |             print(str(alias_config)) |  |  |  |             print(str(alias_config)) | 
			
		
	
		
		
			
				
					
					|  |  |  |         localpart=alias_config['localpart'] |  |  |  |         localpart = alias_config['localpart'] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         domain_name=alias_config['domain'] |  |  |  |         domain_name = alias_config['domain'] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         pre_destination=alias_config['destination'] |  |  |  |         if type(alias_config['destination']) is str: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         if type(pre_destination) is str: |  |  |  |             destination = alias_config['destination'].split(',') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             destination = pre_destination.split(',') |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         else: |  |  |  |         else: | 
			
		
	
		
		
			
				
					
					|  |  |  |             destination = pre_destination |  |  |  |             destination = alias_config['destination'] | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         wildcard = alias_config.get('wildcard', False) | 
			
		
	
		
		
			
				
					
					|  |  |  |         domain = models.Domain.query.get(domain_name) |  |  |  |         domain = models.Domain.query.get(domain_name) | 
			
		
	
		
		
			
				
					
					|  |  |  |         email='{0}@{1}'.format(localpart,domain_name) |  |  |  |         email = '{0}@{1}'.format(localpart, domain_name) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         if not domain: |  |  |  |         if not domain: | 
			
		
	
		
		
			
				
					
					|  |  |  |             domain = models.Domain(name=domain_name) |  |  |  |             domain = models.Domain(name=domain_name) | 
			
		
	
		
		
			
				
					
					|  |  |  |             db.session.add(domain) |  |  |  |             db.session.add(domain) | 
			
		
	
	
		
		
			
				
					|  |  | @ -147,37 +167,51 @@ def config_update(verbose=False, delete_objects=False): | 
			
		
	
		
		
			
				
					
					|  |  |  |             alias = models.Alias( |  |  |  |             alias = models.Alias( | 
			
		
	
		
		
			
				
					
					|  |  |  |                 localpart=localpart, |  |  |  |                 localpart=localpart, | 
			
		
	
		
		
			
				
					
					|  |  |  |                 domain=domain, |  |  |  |                 domain=domain, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 wildcard=wildcard, | 
			
		
	
		
		
			
				
					
					|  |  |  |                 destination=destination, |  |  |  |                 destination=destination, | 
			
		
	
		
		
			
				
					
					|  |  |  |                 email=email |  |  |  |                 email=email | 
			
		
	
		
		
			
				
					
					|  |  |  |             ) |  |  |  |             ) | 
			
		
	
		
		
			
				
					
					|  |  |  |         else: |  |  |  |         else: | 
			
		
	
		
		
			
				
					
					|  |  |  |             alias.destination = destination |  |  |  |             alias.destination = destination | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             alias.wildcard = wildcard | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.session.add(alias) |  |  |  |         db.session.add(alias) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     managers=new_config.get('managers',[]) |  |  |  |     db.session.commit() | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     managers = new_config.get('managers', []) | 
			
		
	
		
		
			
				
					
					|  |  |  |     # tracked_managers=set() |  |  |  |     # tracked_managers=set() | 
			
		
	
		
		
			
				
					
					|  |  |  |     for manager_config in managers: |  |  |  |     for manager_config in managers: | 
			
		
	
		
		
			
				
					
					|  |  |  |         if verbose: |  |  |  |         if verbose: | 
			
		
	
		
		
			
				
					
					|  |  |  |             print(str(manager_config)) |  |  |  |             print(str(manager_config)) | 
			
		
	
		
		
			
				
					
					|  |  |  |         domain_name = manager_config['domain'] |  |  |  |         domain_name = manager_config['domain'] | 
			
		
	
		
		
			
				
					
					|  |  |  |         user_name = manage_config['user'] |  |  |  |         user_name = manager_config['user'] | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         domain = models.Domain.query.get(domain_name) |  |  |  |         domain = models.Domain.query.get(domain_name) | 
			
		
	
		
		
			
				
					
					|  |  |  |         manageruser = models.User.query.get(user_name + '@' + domain_name) |  |  |  |         manageruser = models.User.query.get(user_name + '@' + domain_name) | 
			
		
	
		
		
			
				
					
					|  |  |  |         domain.managers.append(manageruser) |  |  |  |         if manageruser not in domain.managers: | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             domain.managers.append(manageruser) | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.session.add(domain) |  |  |  |         db.session.add(domain) | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     if delete_objects: |  |  |  |     if delete_objects: | 
			
		
	
		
		
			
				
					
					|  |  |  |         for user in db.session.query(models.User).all(): |  |  |  |         for user in db.session.query(models.User).all(): | 
			
		
	
		
		
			
				
					
					|  |  |  |             if not ( user.email in tracked_users ): |  |  |  |             if not (user.email in tracked_users): | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if verbose: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     print("Deleting user: " + str(user.email)) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 db.session.delete(user) |  |  |  |                 db.session.delete(user) | 
			
		
	
		
		
			
				
					
					|  |  |  |         for alias in db.session.query(models.Alias).all(): |  |  |  |         for alias in db.session.query(models.Alias).all(): | 
			
		
	
		
		
			
				
					
					|  |  |  |             if not ( alias.email in tracked_aliases ): |  |  |  |             if not (alias.email in tracked_aliases): | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if verbose: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     print("Deleting alias: " + str(alias.email)) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 db.session.delete(alias) |  |  |  |                 db.session.delete(alias) | 
			
		
	
		
		
			
				
					
					|  |  |  |         for domain in db.session.query(models.Domain).all(): |  |  |  |         for domain in db.session.query(models.Domain).all(): | 
			
		
	
		
		
			
				
					
					|  |  |  |             if not ( domain.name in tracked_domains ): |  |  |  |             if not (domain.name in tracked_domains): | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if verbose: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     print("Deleting domain: " + str(domain.name)) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 db.session.delete(domain) |  |  |  |                 db.session.delete(domain) | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.commit() |  |  |  |     db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.command |  |  |  | @manager.command | 
			
		
	
		
		
			
				
					
					|  |  |  | def user_delete(email): |  |  |  | def user_delete(email): | 
			
		
	
		
		
			
				
					
					|  |  |  |     """delete user""" |  |  |  |     """delete user""" | 
			
		
	
	
		
		
			
				
					|  |  | @ -186,6 +220,7 @@ def user_delete(email): | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.session.delete(user) |  |  |  |         db.session.delete(user) | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.commit() |  |  |  |     db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.command |  |  |  | @manager.command | 
			
		
	
		
		
			
				
					
					|  |  |  | def alias_delete(email): |  |  |  | def alias_delete(email): | 
			
		
	
		
		
			
				
					
					|  |  |  |     """delete alias""" |  |  |  |     """delete alias""" | 
			
		
	
	
		
		
			
				
					|  |  | @ -194,6 +229,7 @@ def alias_delete(email): | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.session.delete(alias) |  |  |  |         db.session.delete(alias) | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.commit() |  |  |  |     db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.command |  |  |  | @manager.command | 
			
		
	
		
		
			
				
					
					|  |  |  | def alias(localpart, domain_name, destination): |  |  |  | def alias(localpart, domain_name, destination): | 
			
		
	
		
		
			
				
					
					|  |  |  |     """ Create an alias |  |  |  |     """ Create an alias | 
			
		
	
	
		
		
			
				
					|  |  | @ -212,24 +248,28 @@ def alias(localpart, domain_name, destination): | 
			
		
	
		
		
			
				
					
					|  |  |  |     db.session.commit() |  |  |  |     db.session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | # Set limits to a domain |  |  |  | # Set limits to a domain | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.command |  |  |  | @manager.command | 
			
		
	
		
		
			
				
					
					|  |  |  | def setlimits(domain_name, max_users, max_aliases, max_quota_bytes): |  |  |  | def setlimits(domain_name, max_users, max_aliases, max_quota_bytes): | 
			
		
	
		
		
			
				
					
					|  |  |  |   domain = models.Domain.query.get(domain_name) |  |  |  |     domain = models.Domain.query.get(domain_name) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   domain.max_users = max_users |  |  |  |     domain.max_users = max_users | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   domain.max_aliases = max_aliases |  |  |  |     domain.max_aliases = max_aliases | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   domain.max_quota_bytes = max_quota_bytes |  |  |  |     domain.max_quota_bytes = max_quota_bytes | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   db.session.add(domain) |  |  |  |     db.session.add(domain) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   db.session.commit() |  |  |  |     db.session.commit() | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | # Make the user manager of a domain |  |  |  | # Make the user manager of a domain | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @manager.command |  |  |  | @manager.command | 
			
		
	
		
		
			
				
					
					|  |  |  | def setmanager(domain_name, user_name='manager'): |  |  |  | def setmanager(domain_name, user_name='manager'): | 
			
		
	
		
		
			
				
					
					|  |  |  |   domain = models.Domain.query.get(domain_name) |  |  |  |     domain = models.Domain.query.get(domain_name) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   manageruser = models.User.query.get(user_name + '@' + domain_name) |  |  |  |     manageruser = models.User.query.get(user_name + '@' + domain_name) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   domain.managers.append(manageruser) |  |  |  |     domain.managers.append(manageruser) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   db.session.add(domain) |  |  |  |     db.session.add(domain) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   db.session.commit() |  |  |  |     db.session.commit() | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | if __name__ == "__main__": |  |  |  | if __name__ == "__main__": | 
			
		
	
	
		
		
			
				
					|  |  | 
 |