|
|
|
@ -5557,19 +5557,17 @@ outdated. If the backup is obsolete, use cl-backup."))
|
|
|
|
|
self.clVars.Set("sr_ldap_set","on")
|
|
|
|
|
# Установка репликации
|
|
|
|
|
if options.has_key("r"):
|
|
|
|
|
if options['r'] == "on":
|
|
|
|
|
# Устанавливаем объект для хранения переменных
|
|
|
|
|
self.servReplObj.clVars = self.clVars
|
|
|
|
|
if not self.servReplObj.setupReplServer({}):
|
|
|
|
|
return False
|
|
|
|
|
ldapParser.setVar("replication",
|
|
|
|
|
{"DN":self.clVars.Get("ld_repl_dn"),
|
|
|
|
|
"PASS":self.clVars.Get("ld_repl_pw")})
|
|
|
|
|
self.clVars.Write("ld_repl_set", "on")
|
|
|
|
|
else:
|
|
|
|
|
self.clVars.Write("ld_repl_set", "off")
|
|
|
|
|
#if not self.servReplObj.addReplWorkedUser("alex74"):
|
|
|
|
|
#return False
|
|
|
|
|
optionsRepl = {'r':options['r']}
|
|
|
|
|
# Устанавливаем объект для хранения переменных
|
|
|
|
|
self.servReplObj.clVars = self.clVars
|
|
|
|
|
if not self.servReplObj.setupReplServer(optionsRepl):
|
|
|
|
|
return False
|
|
|
|
|
ldapParser.setVar("replication",
|
|
|
|
|
{"DN":self.clVars.Get("ld_repl_dn"),
|
|
|
|
|
"PASS":self.clVars.Get("ld_repl_pw")})
|
|
|
|
|
self.clVars.Write("ld_repl_set", "on")
|
|
|
|
|
else:
|
|
|
|
|
self.clVars.Write("ld_repl_set", "off")
|
|
|
|
|
self.clVars.Write("sr_ldap_set","on")
|
|
|
|
|
self.printOK(_("LDAP service configured") + " ...")
|
|
|
|
|
return True
|
|
|
|
@ -6340,11 +6338,12 @@ the password will be changed only for Samba account")
|
|
|
|
|
},
|
|
|
|
|
{'progAccess':(6,),
|
|
|
|
|
'shortOption':"r",
|
|
|
|
|
'optVal':"CONDITION",
|
|
|
|
|
'longOption':"repl",
|
|
|
|
|
'optVal':"R_HOSTS",
|
|
|
|
|
'longOption':"rhosts",
|
|
|
|
|
'helpChapter':_("LDAP service options"),
|
|
|
|
|
'help':_("enabled or disabled replication, default disable.\
|
|
|
|
|
(on/off)")
|
|
|
|
|
'help':_("servers replication (comma delimited). If you use this\
|
|
|
|
|
option and is configured Samba service will replicate LDAP branches Samba\
|
|
|
|
|
and Unix.")
|
|
|
|
|
},
|
|
|
|
|
# Опции cl-passwd
|
|
|
|
|
# LDAP пользователь
|
|
|
|
@ -7262,6 +7261,27 @@ class servRepl(shareLdap):
|
|
|
|
|
self.relWorkedDN = False
|
|
|
|
|
# Файл для определения выхода пользователя.
|
|
|
|
|
self.logOutFile = ".logout"
|
|
|
|
|
#repl_text = """
|
|
|
|
|
#rootdn "cn=ldaproot,dc=calculate"
|
|
|
|
|
|
|
|
|
|
#syncrepl rid=001
|
|
|
|
|
#provider=ldap://newserver
|
|
|
|
|
#type=refreshAndPersist
|
|
|
|
|
#retry="5 5 300 +"
|
|
|
|
|
#searchbase="ou=Unix,ou=Services,dc=calculate"
|
|
|
|
|
#attrs="*,+"
|
|
|
|
|
#bindmethod=simple
|
|
|
|
|
#binddn="ou=Unix,ou=Services,dc=calculate"
|
|
|
|
|
#credentials=UCwZO73Y1
|
|
|
|
|
|
|
|
|
|
#updateref ldap://newserver:389
|
|
|
|
|
|
|
|
|
|
#overlay syncprov
|
|
|
|
|
#syncprov-checkpoint 100 10
|
|
|
|
|
#syncprov-sessionlog 100
|
|
|
|
|
|
|
|
|
|
#mirrormode on
|
|
|
|
|
#serverID 2"""
|
|
|
|
|
|
|
|
|
|
@adminConnectLdap
|
|
|
|
|
def isSysDNExists(self):
|
|
|
|
@ -7525,6 +7545,42 @@ class servRepl(shareLdap):
|
|
|
|
|
# Cоздаем объект переменные
|
|
|
|
|
if not self.clVars:
|
|
|
|
|
self.createClVars()
|
|
|
|
|
if not options.has_key('r') or not options['r']:
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_("Not specified replication servers\
|
|
|
|
|
(command line option '-r')") + " ...")
|
|
|
|
|
return False
|
|
|
|
|
# Находим текущий сервер в серверах репликации
|
|
|
|
|
# и удаляем его из списка
|
|
|
|
|
replServers = options['r'].split(',')
|
|
|
|
|
hostName = self.clVars.Get('os_net_hostname')
|
|
|
|
|
domain = self.clVars.Get('os_net_domain')
|
|
|
|
|
fullHostName = "%s.%s"%(hostName,domain)
|
|
|
|
|
replServers = list(set(replServers))
|
|
|
|
|
lenRelpServers = len(replServers)
|
|
|
|
|
i=0
|
|
|
|
|
while(i<lenRelpServers):
|
|
|
|
|
replServer = replServers[i]
|
|
|
|
|
elemReplServer = replServer.split(".")
|
|
|
|
|
if len(elemReplServer)==1:
|
|
|
|
|
if replServer == hostName or not replServer.strip():
|
|
|
|
|
replServers.remove(replServer)
|
|
|
|
|
lenRelpServers -= 1
|
|
|
|
|
else:
|
|
|
|
|
i+=1
|
|
|
|
|
else:
|
|
|
|
|
if replServer == fullHostName:
|
|
|
|
|
replServers.remove(fullHostName)
|
|
|
|
|
lenRelpServers -= 1
|
|
|
|
|
else:
|
|
|
|
|
i+=1
|
|
|
|
|
# Если серверы отсуствуют - ошибка
|
|
|
|
|
if not replServers:
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_("Not a valid list of servers replication") + " ...")
|
|
|
|
|
return False
|
|
|
|
|
# Добавляем текущий сервер в серверы репликации
|
|
|
|
|
replServers.insert(0,fullHostName)
|
|
|
|
|
# В случае если сервер установлен
|
|
|
|
|
if self.clVars.Get("sr_ldap_set") != "on":
|
|
|
|
|
self.printERROR(\
|
|
|
|
@ -7537,8 +7593,16 @@ class servRepl(shareLdap):
|
|
|
|
|
return False
|
|
|
|
|
#Cоединение с Ldap (администратор)
|
|
|
|
|
shareLdap.getLdapObjInFile(self)
|
|
|
|
|
# Добавляем ветку репликации
|
|
|
|
|
if not self.addReplDN():
|
|
|
|
|
return False
|
|
|
|
|
#запишем переменные для сервера
|
|
|
|
|
# в /etc/calculate.env
|
|
|
|
|
self.clVars.Write("ld_repl_pw",
|
|
|
|
|
self.clVars.Get("ld_repl_pw"),True)
|
|
|
|
|
# в /var/calculate/calculate.env
|
|
|
|
|
self.clVars.Write("ld_repl_servers",
|
|
|
|
|
",".join(replServers),True,"local")
|
|
|
|
|
self.printOK(_("Replication setuped") + " ...")
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|