|
|
|
@ -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)
|
|
|
|
|