В класс servRepl добавлены методы получения почтовых адресов из сервиса Mail - getUsersMail, getGroupsMail.

Добавлена генерация реплицируемых почтовых алиасов при включении репликации сервиса Mail.

git-svn-id: http://svn.calculate.ru/calculate2/calculate-server/trunk@1110 c91db197-33c1-4113-bf15-f8a5c547ca64
develop
asamoukin 15 years ago
parent 847d7263c3
commit 931d0a1e05

@ -2757,7 +2757,7 @@ class servMail(shareLdap):
def delUserMailServer(self,userName,options,printSuccess=True,backup=True):
"""Удаляем Mail пользователя"""
# Проверим установлен ли сервис mail
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
# Ищем Mail пользователя
@ -2892,7 +2892,7 @@ for user %s in 'Replicatinon/Mail' branch ...") %str(userName) + " ...")
def delGroupMailServer(self, groupName, options):
"""Удаляет группу пользователей Mail"""
# Проверим установлен ли сервис mail
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
res = self.searchMailGroupToName(groupName)
@ -2927,7 +2927,7 @@ for user %s in 'Replicatinon/Mail' branch ...") %str(userName) + " ...")
def modGroupMailServer(self, groupName, options):
"""Модифицирует настройки группы пользователей Mail"""
# Проверим установлен ли сервис mail
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
searchGroup = self.searchMailGroupToName(groupName)
@ -3035,7 +3035,7 @@ in 'Replicatinon/Mail' branch ...") %groupName)
def modUserMailServer(self, userName, options):
"""Модифицирует настройки пользователя Mail в LDAP"""
# Проверим установлен ли сервис mail
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
res = self.searchMailUserToName(userName)
@ -3165,7 +3165,7 @@ for user %s in 'Replicatinon/Mail' branch ...") %userName)
@adminConnectLdap
def addGroupMailServer(self, groupName, options):
"""Добавляет группу пользователей Mail"""
# Проверим установлен ли сервис mail
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
# Проверяем на включение почтовой репликации
@ -3237,7 +3237,7 @@ for user %s in 'Replicatinon/Mail' branch ...") %str(primaryMail))
def modUserMailPasswd(self, userName, options):
"""Устанавливает пароль Mail пользователя и меняет его опции"""
# Проверим установлен ли сервис mail
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
res = self.searchMailUserToName(userName)
@ -3373,7 +3373,7 @@ for user %s in 'Replicatinon/Mail' branch ...") %str(primaryMail))
def addUsersGroupMail(self, users, groupName):
"""Добавляет пользователей из списка в Mail группу"""
# Проверим установлен ли сервис mail
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
if not self.searchMailGroupToName(groupName):
@ -3423,7 +3423,7 @@ for user %s in 'Replicatinon/Mail' branch ...") %str(primaryMail))
@adminConnectLdap
def addUserMailServer(self, userName, options):
"""Добавляет почтового пользователя в LDAP-сервер"""
# Проверим установлен ли сервис mail
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
# Проверяем на включение почтовой репликации
@ -8774,7 +8774,7 @@ if %%errorlevel%%==0 NET USE T: \\\\%s\\ftp' %(netbios,netbios,netbios)
aliasDN = self.addDN("cn=%s"%userName,relMailDN)
# Добавляем альтернативные адреса
for mail in userMails:
modAttrs.append((ldap.MOD_ADD, 'mailAlternateAddress',
attrAppend.append((ldap.MOD_ADD, 'mailAlternateAddress',
mail))
modAttrs = attrDelete + attrReplace + attrAppend
if not self.modAttrsDN(aliasDN, modAttrs):
@ -9151,6 +9151,48 @@ use the new version. (openldap > 2.4)")%openLdapVesion)
return False
return True
@adminConnectLdap
def getUsersMail(self):
"""Находит пользователей в Mail сервисе
Вывод список [(имя пользователя, [почтовые адреса пользователя])...)]
"""
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
# ищем пользователей в ветке Mail
resSearch = self.searchLdapDN("*", self.servMailObj.relUsersDN,
"mailAlternateAddress",
["uid","mailAlternateAddress"])
if not resSearch:
return False
listUserMail = []
for i in resSearch:
listUserMail.append((i[0][1]["uid"][0],
i[0][1]["mailAlternateAddress"]))
return listUserMail
@adminConnectLdap
def getGroupsMail(self):
"""Находит группы в Mail сервисе
Вывод список [(группа, [почтовые адреса группы])...)]
"""
# Проверим установлен ли сервис Mail
if not self.isServiceSetup("mail"):
return False
# ищем группы в ветке Mail
resSearch = self.searchLdapDN("*", self.servMailObj.relGroupsDN,
"mailAlternateAddress",
["cn","mailAlternateAddress"])
if not resSearch:
return False
listGroupMail = []
for i in resSearch:
listGroupMail.append((i[0][1]["cn"][0],
i[0][1]["mailAlternateAddress"]))
return listGroupMail
def setupReplServer(self, options, service):
"""Начальная настройка репликации"""
# Cоздаем объект переменные
@ -9442,6 +9484,32 @@ together with option '-r'") + " ...")
self.clVars.Write("ld_repl_samba_servers", smbServers,
True, "local")
elif service == "mail":
# Cчитаем почтовых пользователей и заполним ветку алиасов
# Переподсоединяемся к LDAP
self.ldapObj = False
# Получаем почтовых пользователей
usersMail = self.getUsersMail()
# Получаем почтовые группы
groupsMail = self.getGroupsMail()
usersAndGroupsMail = reduce(lambda x, y: x+y,
map(lambda x: x or [],
[usersMail,groupsMail]),[])
if usersAndGroupsMail:
flagError = False
for name, mails in usersAndGroupsMail:
if self.searchMailAlias(name):
if not self.modReplMailAlias(name, mails):
flagError = False
break
else:
if not self.addReplMailAlias(name, mails):
flagError = False
break
if flagError:
self.printERROR(_("Can not set replication mail alias,") +\
" " + _("for name %s")%name + " " +\
_("(%s)"%", ".join(mails))+ " ...")
return False
mailServers = self.clVars.Get("ld_repl_mail_servers")
if mailServers:
self.clVars.Write("ld_repl_mail_servers", mailServers,

Loading…
Cancel
Save