Добавление закачки профиля на локальный сервер в любом случае,

если актуальный профиль находится на удаленном сервере


git-svn-id: http://svn.calculate.ru/calculate2/calculate-client/trunk@1105 c91db197-33c1-4113-bf15-f8a5c547ca64
develop
mhiretskiy 15 years ago
parent eb02da91de
commit 212b9ece0f

@ -1147,24 +1147,35 @@ install/6intranet" %(domain,servDn,unixDN,bindDn,bindPw)
# проверяем произведен ли корректный вход в систему -
# в этом случае закачиваем профиль с локальной машины на сервер
logOutFile = os.path.join(homeDir,self.replLogoutFile)
# необходима ли синхронизация с локальным сервером
needSync = False
try:
# проверяем logOutFile: содержит ли он "PROCESS"
FD = open(logOutFile)
exitStr = FD.read().strip()
FD.close()
if exitStr != "PROCESS":
if not self.syncUser(userName, homeDir, "logout", uid, gid):
# Удаляем приватные файлы
self.removePrivateFiles(homeDir)
# Отмонтируем пользовательские ресурсы в случае ошибки
self.errorAndUnmountUserRes = True
return False
# если актуальный профиль хранистся не на локальном сервер
# то на локальный сервер закачиваем профиль
# так как даже если он будет поврежденные на другом серевер
# остаётся правильная копия
if not self.isCorrectProfileOnLocalServer(userName):
needSync = True
else:
FD = open(logOutFile)
exitStr = FD.read().strip()
FD.close()
# проверяем logOutFile: не содержит ли он "PROCESS"
if exitStr != "PROCESS":
needSync = True
except:
# Удаляем приватные файлы
self.removePrivateFiles(homeDir)
# Отмонтируем пользовательские ресурсы в случае ошибки
self.errorAndUnmountUserRes = True
return False
if needSync and not self.syncUser(userName, homeDir, "logout", uid, gid):
# Удаляем приватные файлы
self.removePrivateFiles(homeDir)
# Отмонтируем пользовательские ресурсы в случае ошибки
self.errorAndUnmountUserRes = True
return False
# Удаляем приватные файлы
self.removePrivateFiles(homeDir)
@ -1200,9 +1211,8 @@ install/6intranet" %(domain,servDn,unixDN,bindDn,bindPw)
self.printOK(_("Umount user resource in domain") + " ...")
return True
def umountUserResNoSync(self, userName, printError=True,
printSuccess=True, isXsession=True, killRsync=False,
progress=False):
def umountUserResNoSync(self, userName, printError=True, printSuccess=True,
isXsession=True, killRsync=False, progress=False):
"""Отмонтирование пользовательских ресурсов
без синхронизации настроек"""
@ -1349,6 +1359,23 @@ install/6intranet" %(domain,servDn,unixDN,bindDn,bindPw)
os.rmdir(rmDir)
return True
def isCorrectProfileOnLocalServer(self,userName):
"""Узнать находится ли актуальный профиль пользователя на локальном
сервере
"""
searchPrevHost = self.searchPrevHost(userName)
if searchPrevHost and searchPrevHost[0][0][1].has_key('host'):
prevHost = searchPrevHost[0][0][1]['host'][0]
print prevHost
else:
prevHost = None
# если местоположение актуального профиля найти не удалось
# или его местоположение не на локальном сервере
if not prevHost or prevHost == self.clVars.Get('cl_remote_host'):
return True
else:
return False
def mountUserRes(self, userName, sync=True, progress=False):
"""Монтирование пользовательских ресурсов и синхронизация настроек"""
# Имя пользователя
@ -1785,7 +1812,6 @@ install/6intranet" %(domain,servDn,unixDN,bindDn,bindPw)
rsync.runsilent()
if sync == "logout":
rsync.runsilent()
# получаем uid и gid пользователя
try:
if cl_base.iniParser(configFileName).setVar('rsync',{'files':\
rsync.getFilesNum()}):
@ -1795,6 +1821,13 @@ install/6intranet" %(domain,servDn,unixDN,bindDn,bindPw)
pass
rsync.close()
if rsync.getExitCode() != 0:
try:
if cl_base.iniParser(configFileName).setVar(\
'rsync',{'exitcode':rsync.getExitCode()}):
os.chmod(configFileName, 0600)
os.chown(configFileName,uid,gid)
except:
pass
self.printERROR(_("Can not rsync") + " " + str(sync) +\
" ...")
flagError = True

Loading…
Cancel
Save