|
|
|
@ -29,6 +29,7 @@ import getpass
|
|
|
|
|
import _cl_keys
|
|
|
|
|
|
|
|
|
|
import time
|
|
|
|
|
import stat
|
|
|
|
|
|
|
|
|
|
Version = "calculate-client 2.0.14"
|
|
|
|
|
|
|
|
|
@ -1056,6 +1057,30 @@ install/6intranet" %(domain,servDn,unixDN,bindDn,bindPw)
|
|
|
|
|
textLine = self.execProg(mountStr)
|
|
|
|
|
return textLine
|
|
|
|
|
|
|
|
|
|
def removeDir(self, rmDir):
|
|
|
|
|
"""Рекурсивное удаление директории"""
|
|
|
|
|
if not os.path.exists(rmDir):
|
|
|
|
|
self.printERROR(_("Not found remove dir %s") %rmDir)
|
|
|
|
|
return False
|
|
|
|
|
fileObj = cl_profile._file()
|
|
|
|
|
# Сканируем директорию
|
|
|
|
|
scanObjs = fileObj.scanDirs([rmDir])
|
|
|
|
|
for fileRm in scanObjs[0].files:
|
|
|
|
|
# Удаляем файлы
|
|
|
|
|
os.remove(fileRm)
|
|
|
|
|
for socketRm in scanObjs[0].sockets:
|
|
|
|
|
# Удаляем сокеты
|
|
|
|
|
os.remove(socketRm)
|
|
|
|
|
for linkRm in scanObjs[0].links:
|
|
|
|
|
# Удаляем ссылки
|
|
|
|
|
os.unlink(linkRm[1])
|
|
|
|
|
scanObjs[0].dirs.sort(lambda x, y: cmp(len(y), len(x)))
|
|
|
|
|
for dirRm in scanObjs[0].dirs:
|
|
|
|
|
# Удаляем директории
|
|
|
|
|
os.rmdir(dirRm)
|
|
|
|
|
os.rmdir(rmDir)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def mountUserRes(self, userName, sync=True):
|
|
|
|
|
"""Монтирование пользовательских ресурсов и синхронизация настроек"""
|
|
|
|
|
# Имя пользователя
|
|
|
|
@ -1195,11 +1220,30 @@ install/6intranet" %(domain,servDn,unixDN,bindDn,bindPw)
|
|
|
|
|
return False
|
|
|
|
|
# Если на текущем сервере в ресурсе unix есть файлы
|
|
|
|
|
# то синхронируем настройки
|
|
|
|
|
#if os.listdir(defaultPath):
|
|
|
|
|
if not self.syncUser(userName, homeDir, "login"):
|
|
|
|
|
# Отмонтируем пользовательские ресурсы в случае ошибки
|
|
|
|
|
self.errorAndUnmountUserRes = True
|
|
|
|
|
return False
|
|
|
|
|
if os.listdir(defaultPath):
|
|
|
|
|
if not self.syncUser(userName, homeDir, "login"):
|
|
|
|
|
# Отмонтируем пользовательские ресурсы в случае ошибки
|
|
|
|
|
self.errorAndUnmountUserRes = True
|
|
|
|
|
return False
|
|
|
|
|
else:
|
|
|
|
|
#Удаляем ненужные файлы
|
|
|
|
|
rmFiles = list(set(os.listdir(homeDir))-\
|
|
|
|
|
set(["Home","Disks","FTP",\
|
|
|
|
|
self.replLogoutFile]))
|
|
|
|
|
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)
|
|
|
|
|
# Отмонтируем ресурс
|
|
|
|
|
textLine = self.umountSleepPath(defaultPath)
|
|
|
|
|
if not textLine:
|
|
|
|
|