Добавлено удаление cлужебной LDAP ветки 'LDAP' в случае отключения репликации для всех сервисов и переустановки одного из сервисов Unix, Samba, Mail

git-svn-id: http://svn.calculate.ru/calculate2/calculate-server/trunk@1790 c91db197-33c1-4113-bf15-f8a5c547ca64
develop
asamoukin 15 years ago
parent 5af79ac9ee
commit 526e5ee01b

@ -3136,6 +3136,25 @@ service"))
return False
bakupObj = servLdap()
bakupObj.backupServer()
# Удаляем переменные сервиса в ini файлах
self.deleteServiceVarsInFile("unix")
# Cоздаем объект переменные
self.createClVars()
# Объект сервис репликации
servReplObj = servRepl()
foundReplication = False
# проверяем на присутствие серверов репликации
for replServ in servReplObj.replServices:
if self.clVars.Get("ld_repl_%s_servers"%replServ):
foundReplication = True
break
if not foundReplication:
# Если серверов репликации нет
# удаляем переменные репликации
servReplObj.clVars = self.clVars
servReplObj.deleteVars()
# Cоздаем объект переменные
self.createClVars()
# Имя устанавливаемого сервиса
self.clVars.Set("cl_pass_service","unix")
self.clVars.Write("sr_unix_set","off")
@ -3157,17 +3176,21 @@ service"))
# Удаляем предыдущую ветку сервиса Unix
servicesDN = self.relDN
resSearch = self.searchService()
ret = True
if resSearch:
delDN = self.relDN
ret = self.deleteDN(delDN)
if ret:
if self.deleteDN(delDN):
self.printOK(_("Removed Unix DN from LDAP database") + " ...")
else:
self.printERROR(\
_("Can not remove Unix DN from LDAP database"))
if not ret:
return False
return False
# в случае отключения репликации
if self.clVars.Get("ld_repl_set") != "on":
# Объект сервис репликации
servReplObj = servRepl()
# Удаляем служебную ветку ldap
if not servReplObj.delSysDN():
return False
ldifFile = self.ldifFileBase
baseLdif = self.createLdif(ldifFile)
if not self.ldapObj.getError():
@ -4408,6 +4431,21 @@ if you want to continue to run the program again"))
self.deleteServiceVarsInFile("mail")
# Cоздаем объект переменные
self.createClVars()
# Объект сервис репликации
servReplObj = servRepl()
foundReplication = False
# проверяем на присутствие серверов репликации
for replServ in servReplObj.replServices:
if self.clVars.Get("ld_repl_%s_servers"%replServ):
foundReplication = True
break
if not foundReplication:
# Если серверов репликации нет
# удаляем переменные репликации
servReplObj.clVars = self.clVars
servReplObj.deleteVars()
# Cоздаем объект переменные
self.createClVars()
# Устанавливаем доступные сети
self.clVars.Set("sr_mail_net_allow",allowNet,True)
# Удаляем из автозапуска демона
@ -4469,16 +4507,20 @@ if you want to continue to run the program again"))
return False
# Находим в LDAP Mail сервис
resSearch = self.searchService()
ret = True
if resSearch:
delDN = self.relDN
ret = self.deleteDN(delDN)
if ret:
if self.deleteDN(delDN):
self.printOK(_("Remove Mail DN from LDAP Database") + " ...")
else:
self.printERROR(_("Can not remove Mail DN from LDAP Database"))
if not ret:
return False
return False
# в случае отключения репликации
if self.clVars.Get("ld_repl_set") != "on":
# Объект сервис репликации
servReplObj = servRepl()
# Удаляем служебную ветку ldap
if not servReplObj.delSysDN():
return False
ldifFile = self.ldifFileBase
baseLdif = self.createLdif(ldifFile)
if not self.ldapObj.getError():
@ -6460,6 +6502,21 @@ Samba and Unix services") %", ".join(exclGroup)
self.deleteServiceVarsInFile("samba")
# Cоздаем объект переменные
self.createClVars()
# Объект сервис репликации
servReplObj = servRepl()
foundReplication = False
# проверяем на присутствие серверов репликации
for replServ in servReplObj.replServices:
if self.clVars.Get("ld_repl_%s_servers"%replServ):
foundReplication = True
break
if not foundReplication:
# Если серверов репликации нет
# удаляем переменные репликации
servReplObj.clVars = self.clVars
servReplObj.deleteVars()
# Cоздаем объект переменные
self.createClVars()
# Устанавливаем доступные сети
self.clVars.Set("sr_samba_net_allow",allowNet,True)
# Удаляем из автозапуска демона
@ -6518,17 +6575,21 @@ Samba and Unix services") %", ".join(exclGroup)
if not shareLdap.getLdapObjInFile(self):
return False
resSearch = self.searchService()
ret = True
if resSearch:
delDN = self.relDN
ret = self.deleteDN(delDN)
if ret:
if self.deleteDN(delDN):
self.printOK(_("Removed Samba DN from LDAP Database") + " ...")
else:
self.printERROR(\
_("Can not remove Samba DN from LDAP Database"))
if not ret:
return False
return False
# в случае отключения репликации
if self.clVars.Get("ld_repl_set") != "on":
# Объект сервис репликации
servReplObj = servRepl()
# Удаляем служебную ветку ldap
if not servReplObj.delSysDN():
return False
ldifFile = self.ldifFileBase
baseLdif = self.createLdif(ldifFile)
if not self.ldapObj.getError():
@ -10382,6 +10443,8 @@ class servRepl(shareLdap):
"ld_samba_dn"]
# файл для удаления данных несуществущих пользователей по cron
replCronFile = "replcron"
# поддерживаемые сервисы
replServices = ("unix", "samba", "mail")
def __init__(self):
shareLdap.__init__(self)
@ -10395,7 +10458,7 @@ class servRepl(shareLdap):
self.servMailObj = servMail()
# Cервис Jabber
self.servJabberObj = servJabber()
# DN ветки Worked
# DN ветки Replication/Worked
self.relWorkedDN = False
# DN ветки Replication/Mail
self.relMailDN = False
@ -10811,6 +10874,22 @@ if %%errorlevel%%==0 NET USE T: \\\\%s\\ftp' %(netbios,netbios,netbios)
else:
return True
@adminConnectLdap
def isReplWorkedDNExists(self):
"""Существуют ли ветка репликации Replication/Worked"""
if not self.isReplDNExists():
return False
sysLogin = self.clVars.Get("ld_ldap_login")
replLogin = self.clVars.Get("ld_repl_login")
replMailLogin = self.clVars.Get("ld_repl_worked_login")
relSysDn = "ou=%s,ou=%s,%s"%(replLogin,sysLogin,self.ServicesDN)
searchReplDN = self.searchLdapDN(replMailLogin, relSysDn, 'ou')
if not searchReplDN:
return False
else:
return True
@adminConnectLdap
def addSysDN(self):
"""Добавляет служебную ветку в LDAP если она не существует"""
@ -10867,6 +10946,21 @@ if %%errorlevel%%==0 NET USE T: \\\\%s\\ftp' %(netbios,netbios,netbios)
except:
self.printERROR(errorMessage)
return False
# Если ветка Replication/Worked не существует - добавляем ее
if not self.isReplWorkedDNExists():
errorMessage = _("Can not append Replication/Worked branch in LDAP")
entry = [('objectclass', ['top','organizationalUnit']),
('ou', ['%s' %self.clVars.Get("ld_repl_worked_login")])]
try:
self.conLdap.add_s(self.clVars.Get("ld_repl_worked_dn"),
entry)
except ldap.LDAPError, e:
self.printERROR(_("LDAP Error") + ": " + e[0]['desc'].strip())
self.printERROR(errorMessage)
return False
except:
self.printERROR(errorMessage)
return False
return True
@adminConnectLdap
@ -10948,6 +11042,20 @@ if %%errorlevel%%==0 NET USE T: \\\\%s\\ftp' %(netbios,netbios,netbios)
return False
return True
def deleteVars(self):
"""Удаляем переменные репликации
Объект self.clVars должен определен перед вызовом
"""
self.clVars.Delete("ld_repl_servers","local","server")
self.clVars.Delete("ld_repl_samba_servers","local","server")
self.clVars.Delete("ld_repl_mail_servers","local","server")
self.clVars.Delete("ld_repl_unix_servers","local","server")
self.clVars.Delete("ld_repl_pw")
self.clVars.Delete("ld_repl_set")
self.clVars.Delete("ld_repl_ids","local","server")
return True
@adminConnectLdap
def renameReplMailAlias(self, oldName, newName):
"""Изменяем название алиаса в Replication/Mail"""
@ -11779,15 +11887,10 @@ together with option '-r'"))
return False
if self.clVars.Get("ld_repl_set") != "on":
# Удаляем переменные
self.clVars.Delete("ld_repl_servers","local","server")
self.clVars.Delete("ld_repl_samba_servers","local","server")
self.clVars.Delete("ld_repl_mail_servers","local","server")
self.clVars.Delete("ld_repl_unix_servers","local","server")
self.clVars.Delete("ld_repl_pw")
self.clVars.Delete("ld_repl_set")
self.deleteVars()
self.printOK(_("Replication off for all services") + " ...")
return True
#запишем переменные дл<EFBFBD> сервера
#запишем переменные для сервера
# в /etc/calculate.env
self.clVars.Write("ld_repl_pw",
self.clVars.Get("ld_repl_pw"),True)

Loading…
Cancel
Save