mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[enh] introduce mailAlias structural LDAP objectclass for storing aliases, instead of inetOrgPerson
This commit is contained in:
parent
27edfb00da
commit
e19e7c5710
3 changed files with 16 additions and 10 deletions
|
@ -86,3 +86,10 @@ objectclass ( 1.3.6.1.4.1.40328.1.1.2.3
|
|||
DESC 'Mail Group'
|
||||
MUST ( mail )
|
||||
)
|
||||
|
||||
# Mail Alias Objectclass
|
||||
objectclass ( 1.3.6.1.4.1.40328.1.2.4.4
|
||||
NAME 'mailAlias'
|
||||
SUP top
|
||||
STRUCTURAL
|
||||
)
|
||||
|
|
|
@ -239,9 +239,9 @@
|
|||
"yunohost_installing": "Installing YunoHost...",
|
||||
"yunohost_not_installed": "YunoHost is not or not correctly installed. Please execute 'yunohost tools postinstall'.",
|
||||
"ask_alias_name" : "Alias name",
|
||||
"ask_alias_mailforward" : "List of email to forward",
|
||||
"ask_alias_mailforward" : "List of email addresses to forward to",
|
||||
"pattern_listemail" : "Must be a valid email address list delimited by commas",
|
||||
"pattern_name" : "Must be a valid name",
|
||||
"alias_init" : "Initializing aliases in LDAP",
|
||||
"alias_created" : "Alias successfully created",
|
||||
"alias_creation_failed" : "Unable to create alias",
|
||||
"alias_deletion_failed" : "Unable to delete alias",
|
||||
|
|
|
@ -62,7 +62,7 @@ def alias_list(auth, fields=None, filter=None, limit=None, offset=None):
|
|||
if limit is None:
|
||||
limit = 1000
|
||||
if filter is None:
|
||||
filter = '(&(objectclass=mailAccount)(!(uid=root))(!(uid=nobody)))'
|
||||
filter = '(&(objectclass=mailAccount)(objectclass=mailAlias))'
|
||||
if fields:
|
||||
keys = alias_attrs.keys()
|
||||
for attr in fields:
|
||||
|
@ -101,7 +101,6 @@ def alias_create(auth, alias, mailforward):
|
|||
|
||||
# Validate uniqueness of alias and mail in LDAP
|
||||
auth.validate_uniqueness({
|
||||
'uid' : alias,
|
||||
'mail' : alias
|
||||
})
|
||||
|
||||
|
@ -112,10 +111,9 @@ def alias_create(auth, alias, mailforward):
|
|||
alias[alias.find('@')+1:]))
|
||||
|
||||
# Adapt values for LDAP
|
||||
rdn = 'uid=%s,ou=aliases' % alias
|
||||
rdn = 'mail=%s,ou=aliases' % alias
|
||||
attr_dict = {
|
||||
'objectClass' : ['mailAccount'],
|
||||
'uid' : alias,
|
||||
'objectClass' : ['mailAccount', 'mailAlias'],
|
||||
'mail' : alias
|
||||
}
|
||||
|
||||
|
@ -137,7 +135,7 @@ def alias_delete(auth, alias):
|
|||
|
||||
"""
|
||||
|
||||
if auth.remove('uid=%s,ou=aliases' % alias):
|
||||
if auth.remove('mail=%s,ou=aliases' % alias):
|
||||
pass
|
||||
else:
|
||||
raise MoulinetteError(169, m18n.n('alias_deletion_failed'))
|
||||
|
@ -154,13 +152,14 @@ def alias_info(auth, alias):
|
|||
|
||||
"""
|
||||
alias_attrs = [
|
||||
'mail', 'uid', 'maildrop'
|
||||
'mail', 'maildrop'
|
||||
]
|
||||
|
||||
if len(alias.split('@')) is 2:
|
||||
filter = 'mail=' + alias
|
||||
else:
|
||||
filter = 'uid=' + alias
|
||||
# TODO better exception
|
||||
raise MoulinetteError(167, m18n.n('alias_info_failed'))
|
||||
|
||||
result = auth.search('ou=aliases,dc=yunohost,dc=org', filter, alias_attrs)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue