|
|
|
@ -42,7 +42,7 @@ import tempfile
|
|
|
|
|
# Вывод в строку ввода
|
|
|
|
|
import readline
|
|
|
|
|
|
|
|
|
|
Version = "calculate-server 2.0.8"
|
|
|
|
|
Version = "calculate-server 2.0.9"
|
|
|
|
|
|
|
|
|
|
tr = cl_base.lang()
|
|
|
|
|
tr.setLanguage(sys.modules[__name__])
|
|
|
|
@ -8601,9 +8601,17 @@ use the new version. (openldap > 2.4)")%openLdapVesion)
|
|
|
|
|
if self.clVars.Get("ld_repl_set") == "off":
|
|
|
|
|
self.printWARNING(_("Replication off for all services"))
|
|
|
|
|
return True
|
|
|
|
|
elif service == "unix" and\
|
|
|
|
|
self.clVars.Get("ld_repl_unix_set") == "off":
|
|
|
|
|
self.printWARNING(_("Replication off for service %s")%"Unix")
|
|
|
|
|
return True
|
|
|
|
|
elif service == "samba" and\
|
|
|
|
|
self.clVars.Get("ld_repl_samba_set") == "off":
|
|
|
|
|
self.printWARNING(_("Replication off for service Samba"))
|
|
|
|
|
self.printWARNING(_("Replication off for service %s")%"Samba")
|
|
|
|
|
return True
|
|
|
|
|
elif service == "mail" and\
|
|
|
|
|
self.clVars.Get("ld_repl_mail_set") == "off":
|
|
|
|
|
self.printWARNING(_("Replication off for service %s")%"Mail")
|
|
|
|
|
return True
|
|
|
|
|
self.printWARNING(_("Undo can be achieved by executing a command"))
|
|
|
|
|
self.printWARNING(_("when the backup was created on this server \
|
|
|
|
@ -8702,27 +8710,38 @@ together with option '-r'") + " ...")
|
|
|
|
|
return False
|
|
|
|
|
if options.has_key('r'):
|
|
|
|
|
replSambaServers = self.clVars.Get("ld_repl_samba_servers")
|
|
|
|
|
if replSambaServers:
|
|
|
|
|
replSambaServers = replSambaServers.split(",")
|
|
|
|
|
replUnixServers =list(\
|
|
|
|
|
set(replSambaServers)|set(replServers))
|
|
|
|
|
else:
|
|
|
|
|
replUnixServers = replServers
|
|
|
|
|
replMailServers = self.clVars.Get("ld_repl_mail_servers")
|
|
|
|
|
dictServers = {"samba":replSambaServers,
|
|
|
|
|
"mail":replMailServers,
|
|
|
|
|
"unix":",".join(replServers)}
|
|
|
|
|
listServersRepl = map(lambda x: (x[0],set(x[1].split(","))),
|
|
|
|
|
filter(lambda x: x[1],
|
|
|
|
|
dictServers.items()))
|
|
|
|
|
# Все серверы репликации
|
|
|
|
|
replAllServers = list(reduce(lambda x,y: ('',x[1]|y[1]),
|
|
|
|
|
listServersRepl,("",set()))[1])
|
|
|
|
|
# Серверы репликации для ветки Unix
|
|
|
|
|
replUnixServers = list(reduce(lambda x,y: ('',x[1]|y[1]),
|
|
|
|
|
filter(lambda x: x[0] in ['samba','unix'],
|
|
|
|
|
listServersRepl),("",set()))[1])
|
|
|
|
|
# Устанавливаем переменную серверы репл. для Unix сервиса
|
|
|
|
|
self.clVars.Set("ld_repl_unix_servers",
|
|
|
|
|
",".join(replUnixServers),True)
|
|
|
|
|
if replSambaServers:
|
|
|
|
|
replAllServers = list(\
|
|
|
|
|
set(replUnixServers)|set(replSambaServers))
|
|
|
|
|
else:
|
|
|
|
|
replAllServers = replUnixServers
|
|
|
|
|
# Устанавливаем переменную серверы репл. для всех сервисов
|
|
|
|
|
self.clVars.Set("ld_repl_servers",
|
|
|
|
|
",".join(replAllServers),True)
|
|
|
|
|
elif options.has_key('off'):
|
|
|
|
|
# Вылючаем репликацию
|
|
|
|
|
self.clVars.Set("ld_repl_set", "off", True)
|
|
|
|
|
# Вылючаем репликацию для сервисов Samba и Mail
|
|
|
|
|
if self.clVars.Get("ld_repl_mail_set") == "on" and\
|
|
|
|
|
self.clVars.Get("ld_repl_mail_servers"):
|
|
|
|
|
self.clVars.Set("ld_repl_set", "on", True)
|
|
|
|
|
# Устанавливаем переменную серверы репл. для всех сервисов
|
|
|
|
|
self.clVars.Set("ld_repl_servers",
|
|
|
|
|
self.clVars.Get("ld_repl_mail_servers"),True)
|
|
|
|
|
else:
|
|
|
|
|
self.clVars.Set("ld_repl_set", "off", True)
|
|
|
|
|
self.clVars.Set("ld_repl_samba_set", "off", True)
|
|
|
|
|
self.clVars.Set("ld_repl_unix_set", "off", True)
|
|
|
|
|
elif service == "samba":
|
|
|
|
|
if self.clVars.Get("sr_samba_set") != "on":
|
|
|
|
|
self.printERROR(\
|
|
|
|
@ -8734,19 +8753,67 @@ together with option '-r'") + " ...")
|
|
|
|
|
if options.has_key('off'):
|
|
|
|
|
# Очищаем cерверы репликации Samba
|
|
|
|
|
self.clVars.Set("ld_repl_samba_servers", "", True)
|
|
|
|
|
replServers = []
|
|
|
|
|
replSambaServers = self.clVars.Get("ld_repl_samba_servers")
|
|
|
|
|
if replSambaServers:
|
|
|
|
|
replSambaServers = replSambaServers.split(",")
|
|
|
|
|
setReplUnixServers = set(replSambaServers)^set(replUnixServers)
|
|
|
|
|
replSambaServers = replServers
|
|
|
|
|
replUnixServers = list(setReplUnixServers|set(replSambaServers))
|
|
|
|
|
replMailServers = self.clVars.Get("ld_repl_mail_servers")
|
|
|
|
|
# Находим разницу между серверами Samba и Unix
|
|
|
|
|
diffReplServers = list(set(replSambaServers)^set(replUnixServers))
|
|
|
|
|
dictServers = {"samba":",".join(replServers),
|
|
|
|
|
"mail":replMailServers,
|
|
|
|
|
"unix":",".join(diffReplServers)}
|
|
|
|
|
listServersRepl = map(lambda x: (x[0],set(x[1].split(","))),
|
|
|
|
|
filter(lambda x: x[1], dictServers.items()))
|
|
|
|
|
# Все серверы репликации
|
|
|
|
|
replAllServers = list(reduce(lambda x,y: ('',x[1]|y[1]),
|
|
|
|
|
listServersRepl,("",set()))[1])
|
|
|
|
|
# Серверы репликации для ветки Unix
|
|
|
|
|
replUnixServers = list(reduce(lambda x,y: ('',x[1]|y[1]),
|
|
|
|
|
filter(lambda x: x[0] in ['samba','unix'],
|
|
|
|
|
listServersRepl),("",set()))[1])
|
|
|
|
|
# Серверы репликации для ветки Samba
|
|
|
|
|
replSambaServers = list(reduce(lambda x,y: ('',x[1]|y[1]),
|
|
|
|
|
filter(lambda x: x[0] in ['samba'],
|
|
|
|
|
listServersRepl),("",set()))[1])
|
|
|
|
|
# Устанавливаем переменную серверы репл. для Samba сервиса
|
|
|
|
|
self.clVars.Set("ld_repl_samba_servers",
|
|
|
|
|
",".join(replSambaServers),True)
|
|
|
|
|
# Устанавливаем переменную серверы репл. для Unix сервиса
|
|
|
|
|
self.clVars.Set("ld_repl_unix_servers",
|
|
|
|
|
",".join(replUnixServers),True)
|
|
|
|
|
replUnixServers = list(set(replUnixServers)|set(replSambaServers))
|
|
|
|
|
replAllServers = replUnixServers
|
|
|
|
|
",".join(replUnixServers),True
|
|
|
|
|
# Устанавливаем переменную серверы репл. для всех сервисов
|
|
|
|
|
self.clVars.Set("ld_repl_servers",
|
|
|
|
|
",".join(replAllServers),True)
|
|
|
|
|
if not self.clVars.Get("ld_repl_id"):
|
|
|
|
|
# Вылючаем репликацию
|
|
|
|
|
self.clVars.Set("ld_repl_set", "off")
|
|
|
|
|
elif service == "mail":
|
|
|
|
|
if self.clVars.Get("sr_mail_set") != "on":
|
|
|
|
|
self.printERROR(\
|
|
|
|
|
_("Set Replication error, Mail service not setuped") + " ...")
|
|
|
|
|
return False
|
|
|
|
|
replUnixServers = self.clVars.Get("ld_repl_unix_servers")
|
|
|
|
|
if options.has_key('off'):
|
|
|
|
|
# Очищаем cерверы репликации Mail
|
|
|
|
|
self.clVars.Set("ld_repl_mail_servers", "", True)
|
|
|
|
|
replServers = []
|
|
|
|
|
replSambaServers = self.clVars.Get("ld_repl_samba_servers")
|
|
|
|
|
dictServers = {"samba":replSambaServers,
|
|
|
|
|
"mail":",".join(replServers),
|
|
|
|
|
"unix":replUnixServers}
|
|
|
|
|
listServersRepl = map(lambda x: (x[0],set(x[1].split(","))),
|
|
|
|
|
filter(lambda x: x[1], dictServers.items()))
|
|
|
|
|
# Все серверы репликации
|
|
|
|
|
replAllServers = list(reduce(lambda x,y: ('',x[1]|y[1]),
|
|
|
|
|
listServersRepl,("",set()))[1])
|
|
|
|
|
# Серверы репликации для ветки Mail
|
|
|
|
|
replMailServers = list(reduce(lambda x,y: ('',x[1]|y[1]),
|
|
|
|
|
filter(lambda x: x[0] in ['mail'],
|
|
|
|
|
listServersRepl),("",set()))[1])
|
|
|
|
|
# Устанавливаем переменную серверы репл. для Mail сервиса
|
|
|
|
|
self.clVars.Set("ld_repl_mail_servers",
|
|
|
|
|
",".join(replMailServers),True)
|
|
|
|
|
# Устанавливаем переменную серверы репл. для всех сервисов
|
|
|
|
|
self.clVars.Set("ld_repl_servers",
|
|
|
|
|
",".join(replAllServers),True)
|
|
|
|
@ -8783,6 +8850,7 @@ together with option '-r'") + " ...")
|
|
|
|
|
# Удаляем переменные
|
|
|
|
|
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")
|
|
|
|
|