mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[enh] Automatically create ou=aliases at first use
This commit is contained in:
parent
84722111c0
commit
afa5ad4ebc
2 changed files with 18 additions and 19 deletions
|
@ -233,13 +233,6 @@ alias:
|
||||||
category_help: Manage alias
|
category_help: Manage alias
|
||||||
actions:
|
actions:
|
||||||
|
|
||||||
### alias_init()
|
|
||||||
init:
|
|
||||||
action_help: Init alias
|
|
||||||
api: GET /alias/init
|
|
||||||
configuration:
|
|
||||||
authenticate: all
|
|
||||||
|
|
||||||
### alias_list()
|
### alias_list()
|
||||||
list:
|
list:
|
||||||
action_help: List alias
|
action_help: List alias
|
||||||
|
|
|
@ -28,18 +28,6 @@ import errno
|
||||||
|
|
||||||
from moulinette.core import MoulinetteError
|
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):
|
def alias_list(auth, fields=None, filter=None, limit=None, offset=None):
|
||||||
"""
|
"""
|
||||||
List alias
|
List alias
|
||||||
|
@ -51,6 +39,8 @@ def alias_list(auth, fields=None, filter=None, limit=None, offset=None):
|
||||||
fields -- fields to fetch
|
fields -- fields to fetch
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
_ensure_ou_created(auth)
|
||||||
|
|
||||||
alias_attrs = { 'mail': 'alias',
|
alias_attrs = { 'mail': 'alias',
|
||||||
'maildrop': 'mail-forward' }
|
'maildrop': 'mail-forward' }
|
||||||
attrs = []
|
attrs = []
|
||||||
|
@ -99,6 +89,8 @@ def alias_create(auth, alias, mailforward):
|
||||||
"""
|
"""
|
||||||
from yunohost.domain import domain_list
|
from yunohost.domain import domain_list
|
||||||
|
|
||||||
|
_ensure_ou_created(auth)
|
||||||
|
|
||||||
# Validate uniqueness of alias and mail in LDAP
|
# Validate uniqueness of alias and mail in LDAP
|
||||||
auth.validate_uniqueness({
|
auth.validate_uniqueness({
|
||||||
'mail' : alias
|
'mail' : alias
|
||||||
|
@ -134,6 +126,7 @@ def alias_delete(auth, alias):
|
||||||
alias -- Alias to delete
|
alias -- Alias to delete
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
_ensure_ou_created(auth)
|
||||||
|
|
||||||
if auth.remove('mail=%s,ou=aliases' % alias):
|
if auth.remove('mail=%s,ou=aliases' % alias):
|
||||||
pass
|
pass
|
||||||
|
@ -151,6 +144,8 @@ def alias_info(auth, alias):
|
||||||
alias -- Alias mail to get informations
|
alias -- Alias mail to get informations
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
_ensure_ou_created(auth)
|
||||||
|
|
||||||
alias_attrs = [
|
alias_attrs = [
|
||||||
'mail', 'maildrop'
|
'mail', 'maildrop'
|
||||||
]
|
]
|
||||||
|
@ -180,3 +175,14 @@ def alias_info(auth, alias):
|
||||||
else:
|
else:
|
||||||
raise MoulinetteError(167, m18n.n('alias_info_failed'))
|
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
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue