[enh] Automatically create ou=aliases at first use

This commit is contained in:
Julien Malik 2016-09-12 17:46:27 +02:00
parent 84722111c0
commit afa5ad4ebc
2 changed files with 18 additions and 19 deletions

View file

@ -233,13 +233,6 @@ alias:
category_help: Manage alias
actions:
### alias_init()
init:
action_help: Init alias
api: GET /alias/init
configuration:
authenticate: all
### alias_list()
list:
action_help: List alias

View file

@ -28,18 +28,6 @@ import errno
from moulinette.core import MoulinetteError
def alias_init(auth):
"""
Init alias schema, workaround to activate alias on an existing install, better solution needed
"""
rdn = 'ou=aliases'
attr_dict = {
'objectClass' : ['organizationalUnit', 'top'],
}
if auth.add(rdn, attr_dict):
msignals.display(m18n.n('alias_init'), 'success')
def alias_list(auth, fields=None, filter=None, limit=None, offset=None):
"""
List alias
@ -51,6 +39,8 @@ def alias_list(auth, fields=None, filter=None, limit=None, offset=None):
fields -- fields to fetch
"""
_ensure_ou_created(auth)
alias_attrs = { 'mail': 'alias',
'maildrop': 'mail-forward' }
attrs = []
@ -99,6 +89,8 @@ def alias_create(auth, alias, mailforward):
"""
from yunohost.domain import domain_list
_ensure_ou_created(auth)
# Validate uniqueness of alias and mail in LDAP
auth.validate_uniqueness({
'mail' : alias
@ -134,6 +126,7 @@ def alias_delete(auth, alias):
alias -- Alias to delete
"""
_ensure_ou_created(auth)
if auth.remove('mail=%s,ou=aliases' % alias):
pass
@ -151,6 +144,8 @@ def alias_info(auth, alias):
alias -- Alias mail to get informations
"""
_ensure_ou_created(auth)
alias_attrs = [
'mail', 'maildrop'
]
@ -180,3 +175,14 @@ def alias_info(auth, alias):
else:
raise MoulinetteError(167, m18n.n('alias_info_failed'))
def _ensure_ou_created(auth):
rdn = 'ou=aliases'
attr_dict = {
'objectClass' : ['organizationalUnit', 'top'],
}
if not auth.search('dc=yunohost,dc=org', rdn, attr_dict['objectClass']) :
if auth.add(rdn, attr_dict):
msignals.display(m18n.n('alias_init'), 'success')
return