|
|
|
@ -2030,7 +2030,8 @@ service"))
|
|
|
|
|
if not self.isServiceSetup("unix"):
|
|
|
|
|
return False
|
|
|
|
|
# Ищем пользователя в Samba
|
|
|
|
|
if self.servSambaObj.searchSambaUser(userName):
|
|
|
|
|
if self.isServiceSetup("samba", False) and\
|
|
|
|
|
self.servSambaObj.searchSambaUser(userName):
|
|
|
|
|
self.printERROR (_("ERROR") + ": " +\
|
|
|
|
|
_("User %s is found in Samba service") %\
|
|
|
|
|
str(userName) + " ...")
|
|
|
|
@ -2039,7 +2040,8 @@ service"))
|
|
|
|
|
)
|
|
|
|
|
return False
|
|
|
|
|
# Ищем пользователя в Mail
|
|
|
|
|
if self.servMailObj.searchMailUserToName(userName):
|
|
|
|
|
if self.isServiceSetup("mail", False) and\
|
|
|
|
|
self.servMailObj.searchMailUserToName(userName):
|
|
|
|
|
self.printERROR (_("ERROR") + ": " +\
|
|
|
|
|
_("User %s is found in Mail service") %\
|
|
|
|
|
str(userName) + " ...")
|
|
|
|
@ -7792,21 +7794,34 @@ class servRepl(shareLdap):
|
|
|
|
|
userNetlogonDir =\
|
|
|
|
|
os.path.join(self.clVars.Get("sr_samba_winlogon_path"),
|
|
|
|
|
userName)
|
|
|
|
|
userDirs = [userHomeDir, winProfDir, linProfDir, userNetlogonDir]
|
|
|
|
|
userDirs = [("home",userHomeDir),
|
|
|
|
|
("netlogon",userNetlogonDir),
|
|
|
|
|
("win_prof",winProfDir),
|
|
|
|
|
('lin_prof',linProfDir)]
|
|
|
|
|
flagError = False
|
|
|
|
|
flagHomeDir = True
|
|
|
|
|
for userDir in userDirs:
|
|
|
|
|
for name, userDir in userDirs:
|
|
|
|
|
if not os.path.exists(userDir):
|
|
|
|
|
if not self.createUserDir(uid, gid, userDir):
|
|
|
|
|
flagError = True
|
|
|
|
|
break
|
|
|
|
|
if flagHomeDir:
|
|
|
|
|
flagHomeDir = False
|
|
|
|
|
if name == "home":
|
|
|
|
|
# Cоздаем иконку в домашней директории
|
|
|
|
|
fileTxt = "[Desktop Entry]\nIcon=user-home"
|
|
|
|
|
fileDirectory = os.path.join(userDir,".directory")
|
|
|
|
|
if not self.createUserFile(fileDirectory,
|
|
|
|
|
fileTxt, uid, gid):
|
|
|
|
|
fileTxt, uid, gid):
|
|
|
|
|
flagError = True
|
|
|
|
|
break
|
|
|
|
|
elif name == "netlogon":
|
|
|
|
|
# Создаем start.cmd
|
|
|
|
|
netbios = self.clVars.Get("sr_samba_netbios")
|
|
|
|
|
netbios = netbios.upper()
|
|
|
|
|
fileTxt='NET USE R: /D\r\nNET USE R: \\\\%s\\share\
|
|
|
|
|
\r\nNET USE T: /D\r\nNET VIEW \\\\%s | find "ftp"\r\n\
|
|
|
|
|
if %%errorlevel%%==0 NET USE T: \\\\%s\\ftp' %(netbios,netbios,netbios)
|
|
|
|
|
fileDirectory = os.path.join(userDir,"start.cmd")
|
|
|
|
|
if not self.createUserFile(fileDirectory,
|
|
|
|
|
fileTxt, uid, gid):
|
|
|
|
|
flagError = True
|
|
|
|
|
break
|
|
|
|
|
if flagError:
|
|
|
|
@ -7847,6 +7862,18 @@ class servRepl(shareLdap):
|
|
|
|
|
return False
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
@adminConnectLdap
|
|
|
|
|
def delSysDN(self):
|
|
|
|
|
"""Удаляет служебную ветку в LDAP если она существует"""
|
|
|
|
|
if self.isSysDNExists():
|
|
|
|
|
sysLdapOU = "ou=%s"%self.clVars.Get("ld_ldap_login")
|
|
|
|
|
sysLdapRelDN = self.addDN(sysLdapOU, self.ServicesDN)
|
|
|
|
|
if not self.deleteDN(sysLdapRelDN):
|
|
|
|
|
self.printERROR(_("Can not remove 'Services/LDAP' DN")+" ...")
|
|
|
|
|
return False
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@adminConnectLdap
|
|
|
|
|
def addReplDN(self):
|
|
|
|
|
"""Добавляет ветки репликации в LDAP"""
|
|
|
|
@ -8181,6 +8208,62 @@ calculate-server")
|
|
|
|
|
"""Начальная настройка репликации"""
|
|
|
|
|
# Cоздаем объект переменные
|
|
|
|
|
self.createClVars()
|
|
|
|
|
if options.has_key('off'):
|
|
|
|
|
if self.clVars.Get("ld_repl_set") == "off":
|
|
|
|
|
self.printWARNING(_("Replication off for all services"))
|
|
|
|
|
return True
|
|
|
|
|
elif service == "samba" and\
|
|
|
|
|
self.clVars.Get("ld_repl_samba_set") == "off":
|
|
|
|
|
self.printWARNING(_("Replication off for service Samba"))
|
|
|
|
|
return True
|
|
|
|
|
self.printWARNING(_("Undo can be achieved by executing a command"))
|
|
|
|
|
self.printWARNING(_("when the backup was created on this server \
|
|
|
|
|
'cl-rebuild',"))
|
|
|
|
|
self.printWARNING(_("if taken from another server \
|
|
|
|
|
'cl-rebuild --repl'"))
|
|
|
|
|
bFile = self.servLdapObj.getArchFile()
|
|
|
|
|
if not bFile:
|
|
|
|
|
return Falses
|
|
|
|
|
archFileTime = time.localtime(os.stat(bFile)[stat.ST_MTIME])
|
|
|
|
|
timeFile = datetime.datetime(archFileTime[0],archFileTime[1],
|
|
|
|
|
archFileTime[2],archFileTime[3],
|
|
|
|
|
archFileTime[4],archFileTime[5])
|
|
|
|
|
localTime = time.localtime()
|
|
|
|
|
timeLocal = datetime.datetime(localTime[0],localTime[1],
|
|
|
|
|
localTime[2],localTime[3],
|
|
|
|
|
localTime[4],localTime[5])
|
|
|
|
|
if timeLocal < timeFile:
|
|
|
|
|
self.printERROR(_("Incorrect system time or time create\
|
|
|
|
|
file %s")%bFile)
|
|
|
|
|
return False
|
|
|
|
|
deltaTime = timeLocal - timeFile
|
|
|
|
|
if deltaTime.days == 0:
|
|
|
|
|
deltaSec = deltaTime.seconds
|
|
|
|
|
dHours = int(deltaSec/3600)
|
|
|
|
|
dMinutes = int((deltaSec - dHours*3600)/60)
|
|
|
|
|
dSeconds = deltaSec - dHours*3600 - dMinutes*60
|
|
|
|
|
hours = _("hours")
|
|
|
|
|
minutes = _("minutes")
|
|
|
|
|
seconds = _("seconds")
|
|
|
|
|
if dHours:
|
|
|
|
|
timeBackup = "%s %s %s %s %s %s"%\
|
|
|
|
|
(dHours,hours,dMinutes,minutes,dSeconds,seconds)
|
|
|
|
|
elif dMinutes:
|
|
|
|
|
timeBackup = "%s %s %s %s"%(dMinutes,minutes,dSeconds,\
|
|
|
|
|
seconds)
|
|
|
|
|
elif dSeconds:
|
|
|
|
|
timeBackup = "%s %s"%(dSeconds,seconds)
|
|
|
|
|
self.printWARNING(_("The backup file is created %s ago")\
|
|
|
|
|
%timeBackup)
|
|
|
|
|
else:
|
|
|
|
|
self.printWARNING(_("The backup file is created %s days ago")\
|
|
|
|
|
%deltaTime.days)
|
|
|
|
|
self.printWARNING(_("If the backup is obsolete, use cl-backup."))
|
|
|
|
|
messDialog = \
|
|
|
|
|
_("If you are ready to continue executing the program")+", "+\
|
|
|
|
|
_("input 'yes'") +", "+ _("if not 'no'")
|
|
|
|
|
if not self.dialogYesNo(messDialog):
|
|
|
|
|
return True
|
|
|
|
|
# Удаляем переменную из /var/calculate.calculate.env
|
|
|
|
|
self.clVars.Delete("ld_repl_ids","local","server")
|
|
|
|
|
# Cоздаем объект переменные
|
|
|
|
@ -8302,6 +8385,10 @@ calculate-server")
|
|
|
|
|
self.printERROR(_("Not found 'serverID' this server") + " ...")
|
|
|
|
|
self.printERROR(_("variable 'ld_repl_id' empty") + " ...")
|
|
|
|
|
return False
|
|
|
|
|
# Удаляем служебную ветку ldap
|
|
|
|
|
if options.has_key('off') and self.clVars.Get("ld_repl_set") == "off":
|
|
|
|
|
if not self.delSysDN():
|
|
|
|
|
return False
|
|
|
|
|
# Делаем update cервиса Samba в случае опции off
|
|
|
|
|
if service == "unix" and self.clVars.Get("sr_samba_set") == "on" and\
|
|
|
|
|
options.has_key('off'):
|
|
|
|
|