|
|
|
@ -430,7 +430,10 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
# DN хранения последнего посещенного пользователя
|
|
|
|
|
self.replHostsDN = self.addDN("ou=Worked","ou=Replication",
|
|
|
|
|
"ou=LDAP", self.ServicesDN)
|
|
|
|
|
# Файл репликации
|
|
|
|
|
self.replLogoutFile = ".logout"
|
|
|
|
|
self.skipHomeFile = ["Home","Disks","FTP",
|
|
|
|
|
self.replLogoutFile]
|
|
|
|
|
# Если атрибут установлен то значит (ошибка и отмонтируются
|
|
|
|
|
# пользовательские ресурсы)
|
|
|
|
|
self.errorAndUnmountUserRes = False
|
|
|
|
@ -802,8 +805,7 @@ conjunction with the 'login' or 'logout'")
|
|
|
|
|
|
|
|
|
|
if homeExists:
|
|
|
|
|
self.printWARNING(_("Home dir %s exists")%homeDir)
|
|
|
|
|
if set(os.listdir(homeDir))-set(["Home","Disks","FTP",\
|
|
|
|
|
self.replLogoutFile]):
|
|
|
|
|
if set(os.listdir(homeDir))-set(self.skipHomeFile):
|
|
|
|
|
if not applyAlways:
|
|
|
|
|
# Получаем пути к профилям постоянного наложения
|
|
|
|
|
alwProfilePath = self.getAlwaysProfilePath()
|
|
|
|
@ -1681,6 +1683,8 @@ or ld_bind_dn or ld_bind_pw")
|
|
|
|
|
return False
|
|
|
|
|
# Синхронизируем настройки
|
|
|
|
|
if sync:
|
|
|
|
|
# Короткое имя системы
|
|
|
|
|
osLinuxShort = self.clVars.Get("os_linux_shortname")
|
|
|
|
|
# Ошибка при монтировании unix ресурса удаленного сервера при
|
|
|
|
|
# включенной репликации
|
|
|
|
|
replErrorMount = False
|
|
|
|
@ -1710,7 +1714,13 @@ or ld_bind_dn or ld_bind_pw")
|
|
|
|
|
self.upgradeProfileClient(userName, homeDir)
|
|
|
|
|
# Если на текущем сервере в ресурсе unix есть файлы
|
|
|
|
|
# то синхронируем настройки
|
|
|
|
|
if os.listdir(defaultPath):
|
|
|
|
|
# Получаем директорию хранения профиля на сервере
|
|
|
|
|
# Получаем директорию хранения профиля на сервере
|
|
|
|
|
homeProfile = os.path.join(home, "." + userName, osLinuxShort)
|
|
|
|
|
if not os.path.exists(homeProfile):
|
|
|
|
|
homeProfile = os.path.join(home, "." + userName,
|
|
|
|
|
"." + osLinuxShort)
|
|
|
|
|
if os.listdir(homeProfile):
|
|
|
|
|
if not self.syncUser(userName, homeDir, "login", uid, gid,\
|
|
|
|
|
progress=progress,
|
|
|
|
|
host=self.clVars.Get('cl_remote_host')):
|
|
|
|
@ -1720,8 +1730,7 @@ or ld_bind_dn or ld_bind_pw")
|
|
|
|
|
else:
|
|
|
|
|
#Удаляем ненужные файлы
|
|
|
|
|
rmFiles = list(set(os.listdir(homeDir))-\
|
|
|
|
|
set(["Home","Disks","FTP",\
|
|
|
|
|
self.replLogoutFile]))
|
|
|
|
|
set(self.skipHomeFile))
|
|
|
|
|
for rmFile in rmFiles:
|
|
|
|
|
delFile = os.path.join(homeDir,rmFile)
|
|
|
|
|
if os.path.islink(delFile):
|
|
|
|
@ -1790,14 +1799,38 @@ or ld_bind_dn or ld_bind_pw")
|
|
|
|
|
# Переносим настройки пользователя в новую директорию
|
|
|
|
|
# .CLD
|
|
|
|
|
self.upgradeProfileClient(userName, homeDir)
|
|
|
|
|
if not self.syncUser(userName, homeDir, "login", uid, gid,\
|
|
|
|
|
progress=progress,host=prevHost):
|
|
|
|
|
if pathReplRun and mountServer == "remote":
|
|
|
|
|
replErrorSync = True
|
|
|
|
|
else:
|
|
|
|
|
# Отмонтируем пользовательские ресурсы в случае ошибки
|
|
|
|
|
self.errorAndUnmountUserRes = True
|
|
|
|
|
return False
|
|
|
|
|
# Получаем директорию хранения профиля на сервере
|
|
|
|
|
homeProfile = os.path.join(home, "." + userName, osLinuxShort)
|
|
|
|
|
if not os.path.exists(homeProfile):
|
|
|
|
|
homeProfile = os.path.join(home, "." + userName,
|
|
|
|
|
"." + osLinuxShort)
|
|
|
|
|
if os.listdir(homeProfile):
|
|
|
|
|
if not self.syncUser(userName, homeDir, "login", uid, gid,\
|
|
|
|
|
progress=progress,host=prevHost):
|
|
|
|
|
if pathReplRun and mountServer == "remote":
|
|
|
|
|
replErrorSync = True
|
|
|
|
|
else:
|
|
|
|
|
# Отмонтируем пользовательские ресурсы в случае ошибки
|
|
|
|
|
self.errorAndUnmountUserRes = True
|
|
|
|
|
return False
|
|
|
|
|
else:
|
|
|
|
|
#Удаляем ненужные файлы
|
|
|
|
|
rmFiles = list(set(os.listdir(homeDir))-\
|
|
|
|
|
set(self.skipHomeFile))
|
|
|
|
|
for rmFile in rmFiles:
|
|
|
|
|
delFile = os.path.join(homeDir,rmFile)
|
|
|
|
|
if os.path.islink(delFile):
|
|
|
|
|
os.unlink(delFile)
|
|
|
|
|
elif os.path.isfile(delFile):
|
|
|
|
|
os.remove(delFile)
|
|
|
|
|
elif os.path.isdir(delFile):
|
|
|
|
|
if not self.removeDir(delFile):
|
|
|
|
|
# Отмонтируем пользовательские ресурсы
|
|
|
|
|
# в случае ошибки
|
|
|
|
|
self.errorAndUnmountUserRes = True
|
|
|
|
|
return False
|
|
|
|
|
elif stat.S_ISSOCK(os.stat(delFile)[stat.ST_MODE]):
|
|
|
|
|
os.remove(delFile)
|
|
|
|
|
if pathReplRun and mountServer == "remote":
|
|
|
|
|
# В случае репликации перемонтируем ресурс профилей
|
|
|
|
|
# на текущий сервер (в случае необходимости)
|
|
|
|
|