Добавлено изменение альтернативных почтовых адресов в случае если они существуют у почтовых пользователей и групп.

Добавлен ключ '--host' при update сервиса Jabber, позволяющий изменять имя хоста для этого сервиса

git-svn-id: http://svn.calculate.ru/calculate2/calculate-server/trunk@1198 c91db197-33c1-4113-bf15-f8a5c547ca64
develop
asamoukin 15 years ago
parent 8d44d1cf33
commit e52d22ffc6

@ -3085,7 +3085,7 @@ are incompatible, use one of the options"))
if email != altEmail:
attrDeleteFirst.append(
(ldap.MOD_DELETE, 'mailAlternateAddress',
altEmail))
altEmail))
i = 0
for altMail in altMails:
if "@" in altMail:
@ -3096,8 +3096,10 @@ option '-e'"))
mail = altMail
else:
mail = "%s@%s" %(altMail,self.clVars.Get("sr_mail_host"))
if self.searchUserToMail(mail) or\
self.searchGroupToMail(mail):
searchGroupMail = self.searchGroupToMail(mail)
if self.searchUserToMail(mail) or (searchGroupMail and\
(not (mail in altEmails) and len(searchGroupMail) == 1 or\
len(searchGroupMail) != 1)):
self.printERROR(
_("Alternate email address %s is found in Mail service")%\
str(mail) + " ...")
@ -3324,6 +3326,7 @@ in 'Replication/Mail' branch ...") %groupName)
primaryMail = ""
altMails = []
if options.has_key('e'):
altEmails = res[0][0][1]["mailAlternateAddress"]
altMails = options['e'].split(",")
for altMail in altMails:
if "@" in altMail:
@ -3336,11 +3339,13 @@ option '-e'"))
mail = "%s@%s" %(altMail,self.clVars.Get("sr_mail_host"))
if not primaryMail:
primaryMail = mail
if self.searchUserToMail(mail) or\
self.searchGroupToMail(mail):
self.printERROR(_("Alternate email address") + ": " +\
str(mail) + " " + _("is found in Mail service") +\
" ...")
searchUserMail = self.searchUserToMail(mail)
if self.searchGroupToMail(mail) or (searchUserMail and\
(not (mail in altEmails) and len(searchUserMail) == 1 or\
len(searchUserMail) != 1)):
self.printERROR(
_("Alternate email address %s is found in Mail service")%\
str(mail) + " ...")
return False
modAttrs.append((ldap.MOD_ADD, 'mailAlternateAddress', mail))
# Удаляем предыдущие адреса
@ -4121,6 +4126,12 @@ class servJabber(shareLdap):
"departmentNumber")
return resSearch
def searchUsersToHostName(self, hostName):
"""Находит всех пользователей с данным именем хоста"""
resSearch = self.searchLdapDN("*@%s" %hostName, self.relUsersDN,
"mail",["uid","mail"])
return resSearch
def searchUserToNameOrId(self, nameOrId):
"""Находит пользователя сервиса Jabber по имени или id"""
resSearch = self.searchUserToName(nameOrId)
@ -4157,7 +4168,42 @@ class servJabber(shareLdap):
userDN = self.addDN("uid="+uid, self.relUsersDN)
return self.modAttrsDN(userDN, modAttrs)
def renameJabberId(self, userName, newJabberId):
"""Изменяет jabber ID для пользователя"""
searchUser = self.searchUserToName(userName)
if not searchUser:
self.printERROR(_("User %s is not found in Jabber service")%\
str(userName) + " ...")
return False
modAttrs = []
if searchUser[0][0][1].has_key('mail'):
modAttrs.append((ldap.MOD_REPLACE, 'mail', newJabberId))
else:
modAttrs.append((ldap.MOD_ADD, 'mail', newJabberId))
userDN = self.addDN("uid="+userName, self.relUsersDN)
return self.modAttrsDN(userDN, modAttrs)
@adminConnectLdap
def setHostName(self, newHostName, oldHostName):
"""Заменяет пользователям имя хоста на новое"""
searchUsers = self.searchUsersToHostName(oldHostName)
if not searchUsers:
self.printWARNING(_("Host name %s not found in Jabber service")\
%oldHostName)
return True
flagError = False
for userFields in searchUsers:
newJabberId = userFields[0][1]['mail'][0].replace(oldHostName,
newHostName)
userName = userFields[0][1]['uid'][0]
if not self.renameJabberId(userName, newJabberId):
self.printERROR(_("Can not change host name for user %s \
in Jabber service"))
flagError = True
break
if flagError:
return False
return True
def addUsersGroupJabber(self, users, groupName, replaceFlag=False):
"""Добавляет пользователей из списка в Jabber группу"""
@ -5594,6 +5640,8 @@ class servLdap(shareLdap):
self.servSambaObj = servSamba()
# Сервис Mail
self.servMailObj = servMail()
# Сервис Jabber
self.servJabberObj = servJabber()
def savePrivateFile(self, fileName, data):
"""Записать файл с правами 0600"""
@ -5793,19 +5841,20 @@ outdated. If the backup is obsolete, use cl-backup."))
mailCrypt = ""
self.clVars.Set("sr_mail_crypt", mailCrypt, True)
# Настройка jabber cервиса
# Предыдущее имя хоста для Jabber
previousJabberHost = self.clVars.Get("sr_jabber_host")
if serviceUpdate in ["all","jabber"]:
# История для jabber
if options.has_key("history"):
history = options["history"].strip()
if history in ("on", "off"):
self.clVars.Set("sr_jabber_history", history)
else :
else:
self.printERROR(\
_("Command line incorrect, \
'history=%s' - error, to use 'history on' or 'history off'")\
%str(history) + " ...")
return False
# находим установленные сервисы
servInstalled = self.getServiceSetup()
if not servInstalled:
@ -5844,7 +5893,7 @@ outdated. If the backup is obsolete, use cl-backup."))
if service == "ldap":
continue
if service == "samba":
# Получаем от пользователя доверительные сети
# Получаем от п<EFBFBD>льзователя доверительные сети
# для сервиса Samba
if options.has_key("a") and\
not service in noInputAllowNetServices:
@ -5938,6 +5987,19 @@ it was added by the calculate-server")
if not self.restartLdapServer():
return False
self.printOK(_("Restarting service %s")%"LDAP")
if not flagError and serviceUpdate in ["all","jabber"]:
# Замена имени хоста для сервиса Jabber
if options.has_key("host"):
newHostName = options['host']
if not "." in newHostName:
newHostName = "%s.%s" %(newHostName,
self.clVars.Get('os_net_domain'))
if newHostName != previousJabberHost:
self.clVars.Set("sr_jabber_host",newHostName,True)
# Установка в LDAP ветке Jabber cервиса нового имени хоста
if not self.servJabberObj.setHostName(newHostName,
previousJabberHost):
return False
if not flagError and serviceUpdate in ["all","unix","samba","mail"]:
# создаем объект репликации
objRepl = servRepl()
@ -5970,6 +6032,9 @@ it was added by the calculate-server")
self.clVars.Write("sr_jabber_history",
self.clVars.Get("sr_jabber_history"),
True,"local")
self.clVars.Write("sr_jabber_host",
self.clVars.Get("sr_jabber_host"),
True,"local")
# Переменные для почты
if "mail" in servInstalled and serviceUpdate in ["all","mail"]:
self.clVars.Write("sr_mail_type",
@ -7782,6 +7847,12 @@ the password will be changed only for Samba account")
'help':_("enabled or disabled jabber history logging, default disable.\
(on/off)")
},
{'progAccess':(9,),
'optVal':"HOST",
'longOption':"host",
'helpChapter':_("Jabber service options"),
'help':_("jabber host, default - hostname")
},
{'progAccess':(9,),
'shortOption':"a",
'longOption':"allow",
@ -10195,7 +10266,6 @@ class tsOpt(cl_base.opt):
_("Try") + ' "' + sys.argv[0].split("/")[-1] + ' --help" ' +\
_("for more information.")
def handlerParam(self,param):
# Обработчик хвостов (значение)
self.__iter += 1

Loading…
Cancel
Save