develop
asamoukin 16 years ago
parent a0c730d928
commit 2ed5fd0813

@ -82,7 +82,7 @@ chown=root:root
;time offset =
[homes]
path = #-soft_ldap_samba_home_path-#
path = #-soft_samba_home_path-#
comment = Home Directories
valid users = %U
read only = No
@ -91,7 +91,19 @@ chown=root:root
browseable = No
[profiles]
path = #-soft_ldap_samba_profile_path-#
path = #-soft_samba_winprofile_path-#
create mask = 0600
directory mask = 0700
browseable = No
guest ok = Yes
profile acls = Yes
csc policy = disable
writable = yes
force user = %U
valid users = %U @"Domain Admins"
[unix]
path = #-soft_samba_linprofile_path-#
create mask = 0600
directory mask = 0700
browseable = No
@ -103,12 +115,12 @@ chown=root:root
valid users = %U @"Domain Admins"
[netlogon]
path = #-soft_ldap_samba_netlogon_path-#/%u
path = #-soft_samba_winlogon_path-#/%u
browseable = No
read only = yes
[share]
path = #-soft_ldap_samba_share_path-#
path = #-soft_samba_share_path-#
comment = Share Files
browseable = yes
writable = yes

@ -72,13 +72,13 @@ class iniLdapParser(cl_base.iniParser):
"""Класс для работы c ini-файлом ldap"""
def __init__(self):
# название ini файла
nameIniFile = "/etc/calculate2/calculate.ldap"
cl_base.iniParser.__init__(self,nameIniFile)
self.nameIniFile = "/etc/calculate/calculate.ldap"
cl_base.iniParser.__init__(self, self.nameIniFile)
# права создаваемого ini-файла
self.setMode(0600)
self.pathIniFile = os.path.split(nameIniFile)[0]
if not os.path.exists(self.pathIniFile):
os.makedirs(self.pathIniFile)
pathIniFile = os.path.split(self.nameIniFile)[0]
if not os.path.exists(pathIniFile):
os.makedirs(pathIniFile)
class addLdif(LDIFParser):
"""Класс необходимый для добавления записей в LDAP"""
@ -171,22 +171,69 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
# DN сервисов относительно базового
self.ServicesDN = "ou=Services"
def restorePathDelUser(self, userName, destDir, relDir, message):
"""Восстанавливает директорию удаленного пользователя"""
removeDir = False
flagError = False
resRestore = self.restoreDelUser(userName, relDir,
destDir, message)
# Если ошибка то выходим
if not resRestore:
flagError = True
# Флаг создания директории профиля пользователя
createDir = destDir
term = ""
if resRestore == True:
term = message
if not flagError and type(resRestore) == types.TupleType:
# Если cansel
if resRestore[0] == "Cansel":
# Удаляем пользователя
flagError = True
term = None
# Если No
elif resRestore[0] == "No":
if not self.removeDir(resRestore[1]):
flagError = True
if not flagError:
removeDir = resRestore[1]
term = False
elif resRestore[0] == "Yes":
createDir = False
removeDir = resRestore[1]
term = True
if flagError or term == "":
return False
else:
return (term, createDir, removeDir)
@adminConnectLdap
def restoreDelUser(self, userName, service, srcDir, message):
def restoreDelUser(self,userName,service,srcDir,message,unixObj=False):
"""Возвращаем данные удаленного пользователя"""
# Ищем Unix пользователя
searchUnixUser = self.servUnixObj.searchUnixUser(userName)
if unixObj:
servUnixObj = unixObj
else:
servUnixObj = self.servUnixObj
searchUnixUser = servUnixObj.searchUnixUser(userName)
# id пользователя
strUid = ""
if searchUnixUser:
strUid = searchUnixUser[0][0][1]['uidNumber'][0]
else:
resPasswd = servUnixObj.searchPasswdUser(userName)
if resPasswd:
strUid = resPasswd.split(":")[2]
if strUid:
delBackDir =\
os.path.join(self.clVars.Get("soft_ldap_delete_user_dir"),
"%s-%s"%(userName,strUid),
service)
if os.path.exists(delBackDir) and os.listdir(delBackDir):
dialogRes = self.dialogYesNo(message)
if strUid and os.path.exists(delBackDir) and os.listdir(delBackDir):
if message == None or type(message) == types.BooleanType:
dialogRes = message
else:
dialogRes = self.dialogYesNo(message)
if dialogRes and dialogRes == True:
#try:
self.copyDir(srcDir, delBackDir)
@ -204,10 +251,14 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
return True
@adminConnectLdap
def backupDelUser(self, userName, service, srcDir):
def backupDelUser(self, userName, service, srcDir, unixObj=False):
"""Сохраняем данные удаляемого пользователя"""
# Ищем Unix пользователя
searchUnixUser = self.servUnixObj.searchUnixUser(userName)
if unixObj:
servUnixObj = unixObj
else:
servUnixObj = self.servUnixObj
searchUnixUser = servUnixObj.searchUnixUser(userName)
# id пользователя
strUid = ""
if searchUnixUser:
@ -240,7 +291,7 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
os.makedirs(self.clVars.Get("soft_ldap_delete_user_dir"))
#Делаем сохранение директории
try:
os.renames(srcDir, delBackDir)
self.copyDir(delBackDir,srcDir)
except:
self.printERROR(_("Not created deleted user data dir %s")\
%delBackDir)
@ -390,7 +441,7 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
for process in listProcess:
if "erlang" in process:
killPid.append(process.split(" ")[0])
if killPid:
if killPid and " ".join(killPid).strip():
textLine = self.execProg("kill %s" %" ".join(killPid))
if not (textLine == None):
self.printERROR(_("Can not 'kill %s'")\
@ -563,6 +614,19 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
os.rmdir(rmDir)
return True
def removeEmptyDir(self, rmDir):
"""Удаление пустых директорий"""
if not os.path.exists(rmDir):
self.printERROR(_("Not found remove dir %s") %rmDir)
return False
rDir = rmDir
while os.listdir(rDir) == []:
os.rmdir(rDir)
rDir = os.path.split(rDir)[0]
if rDir == "/":
break
return True
def createUserDir(self, uid, gid, userDir):
"""Создание пользовательской директории для почты"""
if not os.path.exists(userDir):
@ -932,15 +996,6 @@ class servUnix(shareLdap):
"""Cоединение с LDAP администратором Samba сервиса"""
return shareLdap.getLdapObjInFile(self, "unix")
def createUnixDir(self, userName, uid, gid):
"""Создание пользовательской директории хранения профилей"""
unixDir = os.path.join(self.clVars.Get("soft_ldap_unix_path"),
userName)
if self.createUserDir(uid, gid, unixDir):
return unixDir
else:
return False
def createHomeDir(self, userName, homeDir, skelDir):
"""Создаем домашнюю директорию пользователя
@ -989,13 +1044,6 @@ class servUnix(shareLdap):
os.chown(homeDir, uid,gid)
return True
def removeHomeDir(self, homeDir):
"""Удаление домашней директории пользователя"""
if os.path.exists(homeDir):
self.execProg("rm -rf %s" %homeDir)
return True
return False
def searchPasswdUser(self, userName):
"""Ищет пользователей в /etc/passwd"""
filePasswd = "/etc/passwd"
@ -1445,11 +1493,43 @@ class servUnix(shareLdap):
if self.ldapObj.getError():
print _("LDAP Error") + ": " + self.ldapObj.getError().strip()
flagError = True
message = _("Restored deleted user %s")% userName + "\n" +\
_("(Y - yes, n - no, ctrl+c - cansel)")
removeHomeBack = False
if not flagError:
# Востановим удаленного пользователя
resRestoreHm = self.restoreDelUser(userName, "unix/home",
homeDir, message, self)
# Если ошибка то выходим
if not resRestoreHm:
flagError = True
# Флаг создания домашней директории пользователя на сервере
createDirHome = True
if not flagError and type(resRestoreHm) == types.TupleType:
# Если cansel
if resRestoreHm[0] == "Cansel":
# Удаляем пользователя
flagError = True
# Если No
if resRestoreHm[0] == "No":
if not self.removeDir(resRestoreHm[1]):
flagError = True
if not flagError:
createDirHome = True
removeHomeBack = resRestoreHm[1]
if resRestoreHm[0] == "Yes":
createDirHome = False
removeHomeBack = resRestoreHm[1]
# Удаляем бекап домашней директории на сервере (удаленного польз..)
if not flagError and removeHomeBack and\
os.path.exists(removeHomeBack):
self.removeDir(removeHomeBack)
self.removeEmptyDir(os.path.split(removeHomeBack)[0])
# Изменим время последнего измения пароля пользователя
if not flagError and not self.setShadowLastChange(userName):
flagError = True
# Добавим домашнюю директорию
if not flagError and options.has_key('m'):
if not flagError and createDirHome and options.has_key('m'):
if not os.path.exists(homeDir):
if not self.createHomeDir(userName, homeDir, skelDir):
self.printERROR (_("ERROR") + ": " +\
@ -1462,37 +1542,19 @@ class servUnix(shareLdap):
self.printERROR(_("Not added jpeg photo for user") + " " +\
str(userName))
flagError = True
# Cоздаем директорию профиля
createDirProfile = False
if not flagError and (options.has_key('n') or int(userId) >= 1000):
profileDir = self.createUnixDir(userName,int(userId),int(userGid))
if not profileDir:
flagError = True
else:
createDirProfile = True
if flagError:
if options.has_key('m'):
self.delUserUnixServer(userName, {'r':""}, False)
else:
self.delUserUnixServer(userName, {}, False)
self.delUserUnixServer(userName, {}, False, False)
self.printERROR (_("Can not added user")+ " " + str(userName))
return False
if flagAdd.has_key('group'):
if printSuccess:
if printSuccess:
if flagAdd.has_key('group'):
self.printSUCCESS(_("Added group in Unix service") + " ...")
if options.has_key('m'):
if printSuccess:
if createDirHome and options.has_key('m'):
self.printSUCCESS(_("Created home dir %s")% homeDir+\
" ...")
if options.has_key('i'):
if printSuccess:
if options.has_key('i'):
self.printSUCCESS(_("Added jpeg photo %s")% photoFile+\
" ...")
if createDirProfile:
if printSuccess:
self.printSUCCESS(_("Created profile dir %s") %profileDir +\
" ...")
if printSuccess:
self.printSUCCESS(_("Added user in Unix service") + " ...")
return True
@ -1726,18 +1788,21 @@ service"))
_("User %s is not found in Unix service") % str(userName) +\
" ...")
return False
#директория хранения настроек пользователя
unixDir = os.path.join(self.clVars.Get("soft_ldap_unix_path"),
userName)
# Делаем сохранение данных удаляемого пользователя
if backup and os.listdir(unixDir):
if not self.backupDelUser(userName, 'unix', unixDir):
return False
if options.has_key('r'):
backup = False
homeDir = False
if resLdap[0][0][1].has_key('homeDirectory'):
#Домашняя директория пользователя
homeDir = resLdap[0][0][1]['homeDirectory'][0]
if backup and os.path.exists(homeDir) and os.listdir(homeDir):
# Делаем сохранение домашней директории
if not self.backupDelUser(userName, 'unix/home',
homeDir, self):
return False
# Удаляем пользователя
delDN = self.addDN("uid=" + userName, self.relUsersDN)
if not self.delDN(delDN):
return False
# Удаляем пользователя из групп
if not self.delUserInGroup(userName):
return False
@ -1746,7 +1811,7 @@ service"))
else:
resPasswd = self.searchPasswdUser(userName)
if resPasswd:
gid = resPasswd.split(":")[2]
gid = resPasswd.split(":")[3]
#Находим основную группу пользователя
resGroup = False
if gid:
@ -1757,14 +1822,11 @@ service"))
groupName = resGroup[0][0][1]['cn'][0]
if not self.delGroupUnixServer(groupName, {}, False):
return False
if options.has_key('r') and\
resLdap[0][0][1].has_key('homeDirectory'):
#Домашняя директория пользователя
homeDir = resLdap[0][0][1]['homeDirectory'][0]
if self.removeHomeDir(homeDir):
# Удаляем домашнюю директорию
if homeDir and os.path.exists(homeDir) and self.removeDir(homeDir):
if printSuccess:
self.printSUCCESS(
_("Home directory %s is removed")% str(homeDir) +\
" ...")
_("Home directory %s is removed")% str(homeDir) + " ...")
if printSuccess:
self.printSUCCESS(_("User %s is deleted")%userName + " ...")
return True
@ -2294,9 +2356,9 @@ class servMail(shareLdap):
#почтовая директория пользователя
mailDir = os.path.join(self.clVars.Get("soft_ldap_mail_path"),
userName)
# Делаем сохранение данных удаляемого пользователя
if options.has_key('r'):
backup = False
# Делаем сохранение данных удаляемого пользователя
if backup and os.path.exists(mailDir) and os.listdir(mailDir):
if not self.backupDelUser(userName, 'mail', mailDir):
return False
@ -2308,7 +2370,7 @@ class servMail(shareLdap):
if not self.delDN(delDN):
return False
# Удаляем почтовую папку
if self.servUnixObj.removeHomeDir(mailDir):
if self.removeDir(mailDir):
if printSuccess:
self.printSUCCESS(\
_("Mail user directory %s is removed")% str(mailDir) +\
@ -2842,6 +2904,19 @@ in Unix service ...") %str(primaryMail))
return self.modAttrsDN(groupDN, modAttrs)
return True
def delUserInMailAndUnix(self, userName, flagDelUnixUser):
"""Удаляет пользователя без бекапа
Удаляет из Mail и если установлен флаг из Unix
"""
if not self.delUserMailServer(userName, {}, False,False):
return False
if flagDelUnixUser:
if not self.servUnixObj.delUserUnixServer(userName, {}, False,
False):
return False
return True
@adminConnectLdap
def addUserMailServer(self, userName, options):
"""Добавляет почтового пользователя в LDAP-сервер"""
@ -2929,7 +3004,7 @@ in Unix service ...") %str(primaryMail))
self.printERROR(_("ERROR") + ": " +\
_("create crypto password"))
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False)
self.servUnixObj.delUserUnixServer(userName, {}, False, False)
return False
self.clVars.Set("soft_ldap_user_pw_hash",userPwdHash)
ldifFile = self.ldifFileUser
@ -2937,7 +3012,7 @@ in Unix service ...") %str(primaryMail))
if not userRawLdif:
print self.getError()
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False)
self.servUnixObj.delUserUnixServer(userName, {}, False, False)
return False
userLdif = userRawLdif.rstrip() + "\n" + "\n".join(modAttrs)
if not self.ldapObj.getError():
@ -2948,7 +3023,7 @@ in Unix service ...") %str(primaryMail))
if self.ldapObj.getError():
print _("LDAP Error") + ": " + self.ldapObj.getError().strip()
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False)
self.servUnixObj.delUserUnixServer(userName, {}, False, False)
return False
if resUnix:
uid = int(resUnix[0][0][1]['uidNumber'][0])
@ -2958,9 +3033,7 @@ in Unix service ...") %str(primaryMail))
gid = int(resPwd.split(":")[3])
else:
self.printERROR(_("user are not found"))
self.delUserMailServer(userName, {}, False, False)
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False)
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
return False
# Востановим удаленного пользователя
# Почтовая директория пользователя
@ -2978,16 +3051,12 @@ in Unix service ...") %str(primaryMail))
# Если cansel
if resRestore[0] == "Cansel":
# Удаляем пользователя
self.delUserMailServer(userName, {}, False,False)
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False)
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
return False
# Если No
if resRestore[0] == "No":
if not self.removeDir(resRestore[1]):
self.delUserMailServer(userName, {}, False,False)
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False)
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
return False
createDir = True
if resRestore[0] == "Yes":
@ -2995,23 +3064,20 @@ in Unix service ...") %str(primaryMail))
# Создаем почтовую директорию
if createDir:
if not self.createMailDir(userName, uid, gid):
self.delUserMailServer(userName, {}, False,False)
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False)
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
return False
# Записываем основной почтовый адрес
if primaryMail:
if not self.servUnixObj.setUserMail(userName, primaryMail):
self.delUserMailServer(userName, {}, False, False)
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False)
self.printERROR(_("Failed set primary email for user %s in\
Unix service ...") %str(primaryMail))
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
return False
if type(resRestore) == types.TupleType and\
(resRestore[0] == "Yes" or resRestore[0] == "No")\
and os.path.exists(resRestore[1]):
self.removeDir(resRestore[1])
self.removeEmptyDir(os.path.split(resRestore[1])[0])
if flagCreateUnixUser:
self.printSUCCESS(_("Added user in Unix service") + " ...")
self.printSUCCESS(_("Added user in Mail service") + " ...")
@ -3793,38 +3859,38 @@ class servSamba(shareLdap):
_("Samba user %s is not found in Samba service") %\
str(delUser))
return False
# Делаем сохранение данных удаляемого пользователя
if backup:
userProfDir =\
os.path.join(self.clVars.Get("soft_ldap_samba_profile_path"),
winProfDir =\
os.path.join(self.clVars.Get("soft_samba_winprofile_path"),
userName)
userHomeDir =\
os.path.join(self.clVars.Get("soft_ldap_samba_home_path"),
linProfDir =\
os.path.join(self.clVars.Get("soft_samba_linprofile_path"),
userName)
userNetlogonDir =\
os.path.join(self.clVars.Get("soft_ldap_samba_netlogon_path"),
userHomeDir =\
os.path.join(self.clVars.Get("soft_samba_home_path"),
userName)
if os.path.exists(userProfDir) and os.listdir(userProfDir):
if not self.backupDelUser(userName, 'samba/profile',
userProfDir):
userNetlogonDir =\
os.path.join(self.clVars.Get("soft_samba_winlogon_path"),
userName)
if options.has_key('r'):
backup = False
# Делаем сохранение данных удаляемого пользователя
if backup:
if os.path.exists(winProfDir) and os.listdir(winProfDir):
if not self.backupDelUser(userName, 'samba/winprofile',
winProfDir):
return False
if os.path.exists(linProfDir) and os.listdir(linProfDir):
if not self.backupDelUser(userName, 'samba/linprofile',
linProfDir):
return False
else:
self.printWARNING(_("Samba profile directory not found for \
user %s") %str(userName))
if os.path.exists(userHomeDir)and os.listdir(userHomeDir):
if not self.backupDelUser(userName, 'samba/home',
userHomeDir):
return False
else:
self.printWARNING(_("Samba home directory not found for \
user %s") %str(userName))
if os.path.exists(userNetlogonDir) and os.listdir(userNetlogonDir):
if not self.backupDelUser(userName, 'samba/netlogon',
userProfDir):
winProfDir):
return False
else:
self.printWARNING(_("Samba netlogon directory not found for \
user %s") %str(userName))
textLine = self.execProg("smbpasswd -x %s" %(delUser), False, False)
flagError = False
if textLine:
@ -3842,12 +3908,25 @@ user %s") %str(userName))
_("Can not delete Samba user") + " " + str(delUser) + " ...")
return False
else:
self.printSUCCESS(_("Deleted Samba user %s") % str(delUser) +
# Удаляем win профиль
if os.path.exists(winProfDir):
self.removeDir(winProfDir)
# Удаляем lin профиль
if os.path.exists(linProfDir):
self.removeDir(linProfDir)
# Удаляем домашнюю директорию
if os.path.exists(userHomeDir):
self.removeDir(userHomeDir)
# Удаляем netlogon
if os.path.exists(userNetlogonDir):
self.removeDir(userNetlogonDir)
if printSuccess:
self.printSUCCESS(_("Deleted Samba user %s") % str(delUser) +\
" ...")
return True
@adminConnectLdap
def addUserSambaServer(self, userName, options, pwDialog=False):
def addUserSambaServer(self,userName,options,pwDialog=False):
"""Добавляет LDAP пользователя в LDAP-сервер"""
# Добавление машины samba
if options.has_key('w'):
@ -3876,6 +3955,7 @@ user %s") %str(userName))
userPwd = self.getUserPassword(options, "p", "P", pwDialog)
if userPwd == False:
return False
flagCreateUnixUser = False
if not resSearch:
# Добавим пользователя LDAP
optUnix = {}
@ -3887,22 +3967,138 @@ user %s") %str(userName))
optUnix['c'] = options['c']
# Cделаем пользователя видимым
optUnix['v'] = ""
# Cоздадим директорию профиля
optUnix['n'] = ""
if not self.servUnixObj.addUserUnixServer(userName, optUnix,
False):
return False
flagCreateUnixUser = True
if userPwd:
textLine = self.execProg("smbpasswd -a -s %s" %(userName),
"%s\n%s\n" %(userPwd,userPwd))
else:
textLine = self.execProg("smbpasswd -a -n %s" %(userName))
if "Added" in str(textLine):
if not resSearch:
flagError = False
winProfDir =\
os.path.join(self.clVars.Get("soft_samba_winprofile_path"),
userName)
linProfDir =\
os.path.join(self.clVars.Get("soft_samba_linprofile_path"),
userName)
userHomeDir =\
os.path.join(self.clVars.Get("soft_samba_home_path"),
userName)
userNetlogonDir =\
os.path.join(self.clVars.Get("soft_samba_winlogon_path"),
userName)
removeProfileBack = False
message = _("Restored deleted user %s")% userName + "\n" +\
_("(Y - yes, n - no, ctrl+c - cansel)")
resWinProf = self.restorePathDelUser(userName, winProfDir,
"samba/winprofile", message)
removeProfileBack = False
if not resWinProf:
flagError = True
createDirWinProfile = False
else:
term, createDirWinProfile, removeProfileBack = resWinProf
removeHomeBack = False
if not flagError:
resHome = self.restorePathDelUser(userName, userHomeDir,
"samba/home", term)
if not resHome:
flagError = True
createDirLogon = False
else:
term, createDirHome, removeHomeBack = resHome
removeLogonBack = False
if not flagError:
resLogon = self.restorePathDelUser(userName, userNetlogonDir,
"samba/netlogon", term)
if not resLogon:
flagError = True
createDirHome = False
else:
term, createDirLogon, removeLogonBack = resLogon
removeLinProfileBack = False
if not flagError:
resLinProf = self.restorePathDelUser(userName, linProfDir,
"samba/linprofile", term)
if not resLinProf:
flagError = True
createDirLinProfile = False
else:
term,createDirLinProfile,removeLinProfileBack = resLinProf
# Cоздадим нужные директории
if not flagError:
resSearchUnix = self.servUnixObj.searchUnixUser(userName)
resPasswd = False
if resSearchUnix:
uid = int(resSearchUnix[0][0][1]['uidNumber'][0])
gid = int(resSearchUnix[0][0][1]['gidNumber'][0])
else:
resPasswd = self.servUnixObj.searchPasswdUser(userName)
if resPasswd:
uid = int(resPasswd.split(":")[2])
gid = int(resPasswd.split(":")[3])
if (resPasswd or resSearchUnix) and\
(options.has_key('n') or int(uid) >=1000):
# Cоздаем домашнюю директорию
if createDirHome:
if not self.createUserDir(uid, gid, createDirHome):
flagError = True
# Cоздаем директорию netlogon
if not flagError and createDirLogon:
if not self.createUserDir(uid, gid, createDirLogon):
flagError = True
# Cоздаем директорию профиля win
if not flagError and createDirWinProfile:
if not self.createUserDir(uid,gid,createDirWinProfile):
flagError = True
# Создаем директорию профиля lin
if not flagError and createDirLinProfile:
if not self.createUserDir(uid,gid,createDirLinProfile):
flagError = True
if not flagError:
# Удаляем директорию бекапа профиля win
if removeProfileBack and\
os.path.exists(removeProfileBack):
self.removeDir(removeProfileBack)
self.removeEmptyDir(os.path.split(removeProfileBack)[0])
# Удаляем директорию бекапа профиля lin
if removeLinProfileBack and\
os.path.exists(removeLinProfileBack):
self.removeDir(removeLinProfileBack)
self.removeEmptyDir(os.path.split(removeLinProfileBack)[0])
# Удаляем бекап домашней директории
if removeHomeBack and\
os.path.exists(removeHomeBack):
self.removeDir(removeHomeBack)
self.removeEmptyDir(os.path.split(removeHomeBack)[0])
# Удалим директорию logon пользователя
if removeLogonBack and\
os.path.exists(removeLogonBack):
self.removeDir(removeLogonBack)
self.removeEmptyDir(os.path.split(removeLogonBack)[0])
if flagError:
self.delUserSambaServer(userName,{},False,False)
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {},
False, False)
self.printERROR(_("Can not add user") + " ...")
return False
if flagCreateUnixUser:
self.printSUCCESS(_("Added user in Unix service") + " ...")
self.printSUCCESS(_("Added user in Samba service") +" ...")
return True
else:
if not resSearch:
self.servUnixObj.delUserUnixServer(userName, {}, False)
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False, False)
self.printERROR(_("Can not add user") + " ...")
return False
@ -3997,17 +4193,6 @@ user %s") %str(userName))
# останавливаем сервис Samba
if not self.stopServices(["samba"]):
return False
# Установим права 777 на директории
dirs = [self.clVars.Get("soft_ldap_samba_profile_path"),
self.clVars.Get("soft_ldap_samba_share_path")]
for mDir in dirs:
if os.path.exists(mDir):
fd = os.open(mDir, os.O_RDONLY)
fst = os.fstat(fd)
mode = stat.S_IMODE(fst.st_mode)
os.close(fd)
if not mode == 0777:
os.chmod(mDir, 0777)
# Имя устанавливаемого сервиса
self.clVars.Set("soft_ldap_setup_name","samba")
self.clVars.Write("soft_samba_setup","no")
@ -4288,8 +4473,16 @@ class servLdap(shareLdap):
if "ldap" in servInstalled:
# Получаем путь к ini директории
ldapParser = iniLdapParser()
iniPath = ldapParser.pathIniFile
scanPrivDirs.append(iniPath)
#iniPath = ldapParser.pathIniFile
#scanPrivDirs.append(iniPath)
dirDelUsers = self.clVars.Get("soft_ldap_delete_user_dir")
if os.path.exists(dirDelUsers):
scanPrivDirs.append(dirDelUsers)
# Добавляем calulate.ldap
allArchFiles.append(ldapParser.nameIniFile)
# Добавляем calculate.env
iniFile = "/" + self.clVars.Get("sys_calculate_ini")
allArchFiles.append(iniFile)
if "samba" in servInstalled:
scanPrivDirs.append(self.sambaPrivate)
if "mail" in servInstalled:
@ -4587,7 +4780,8 @@ class servLdap(shareLdap):
if os.path.exists(iniFile):
os.remove(iniFile)
# Получим путь к ldap файлу
ldapFile = iniFile.replace(".ini",".ldap")
ldapParser = iniLdapParser()
ldapFile = ldapParser.nameIniFile
# Удаляем ldap файл
if os.path.exists(ldapFile):
os.remove(ldapFile)
@ -4626,7 +4820,6 @@ class servLdap(shareLdap):
if not self.restartLdapServer():
return False
# Записываем данные администратора сервера
ldapParser = iniLdapParser()
ldapParser.setVar("admin",
{"DN":self.clVars.Get("soft_ldap_admin"),
"PASS":self.clVars.Get("soft_ldap_adminpw")})
@ -4970,6 +5163,13 @@ preferences")
'helpChapter':_("Mail service options"),
'help':_("create unix user account and mail user account")
},
{'progAccess':(3,),
'shortOption':"n",
'longOption':"create-profile",
'helpChapter':_("Samba service options"),
'help':_("create a directory for storing new user account \
preferences")
},
{'progAccess':(3,),
'shortOption':"p",
'longOption':"password",
@ -5041,6 +5241,12 @@ preferences")
'helpChapter':_("Unix service options"),
'help':_("not create backup deleted user data")
},
{'progAccess':(4,),
'shortOption':"r",
'longOption':"remove",
'helpChapter':_("Samba service options"),
'help':_("not create backup deleted user data")
},
{'progAccess':(4,),
'shortOption':"r",
'longOption':"remove",

@ -174,7 +174,7 @@ class Data:
#директория куда будут записаны данные удаленных пользователей
soft_ldap_delete_user_dir= {'mode':"w",
'type':('param','soft'),
'value':'/var/calculate/delete'
'value':'/var/calculate/deleted'
}
#-----------------------------------------------------
#Сервис Unix
@ -195,10 +195,6 @@ class Data:
soft_ldap_admin_unixpw_hash= {'mode':"r",
'type':('param','soft'),
}
# Директория хранения настроек пользователя
soft_ldap_unix_path = {'mode':"r",
'type':('param','soft'),
'value':'/var/calculate/services/unix'}
#Настроен или нет сервис Unix
soft_unix_setup= {'mode':"w",
'type':('param','soft'),
@ -223,27 +219,31 @@ class Data:
soft_ldap_admin_sambapw_hash= {'mode':"r",
'type':('param','soft'),
}
# Директория профилей
soft_ldap_samba_profile_path = {'mode':"r",
# Директория настроек пользователя windows
soft_samba_winprofile_path = {'mode':"r",
'type':('param','soft'),
'value':'/var/calculate/services/samba/profiles'
'value':'/var/calculate/services/samba/win/profiles'
}
# Директория хранения настроек пользователя linux
soft_samba_linprofile_path = {'mode':"r",
'type':('param','soft'),
'value':'/var/calculate/services/samba/lin/profiles'}
# Домашняя директория
soft_ldap_samba_home_path = {'mode':"r",
soft_samba_home_path = {'mode':"r",
'type':('param','soft'),
'value':'/var/calculate/services/samba/share'
'value':'/var/calculate/services/samba/home'
}
# Директория netlogon
soft_ldap_samba_netlogon_path = {'mode':"r",
soft_samba_winlogon_path = {'mode':"r",
'type':('param','soft'),
'value':'/var/calculate/services/samba/netlogon'
'value':'/var/calculate/services/samba/win/netlogon'
}
# Директория share
soft_ldap_samba_share_path = {'mode':"r",
soft_samba_share_path = {'mode':"r",
'type':('param','soft'),
'value':'/var/calculate/services/samba/share'
}
#Настроен или нет сервис Samba
# Настроен или нет сервис Samba
soft_samba_setup= {'mode':"w",
'type':('param','soft'),
'value':'no'

@ -30,10 +30,11 @@ var_data_files = [("/var/calculate/profile/server",[]),
("/var/calculate/services",[]),
# samba
("/var/calculate/services/samba",[]),
#("/var/calculate/services/samba/home",[]),
("/var/calculate/services/samba/home",[]),
("/var/calculate/services/samba/share",[]),
("/var/calculate/services/samba/profiles",[]),
("/var/calculate/services/samba/netlogon",[]),
("/var/calculate/services/samba/win/profiles",[]),
("/var/calculate/services/samba/lin/profiles",[]),
("/var/calculate/services/samba/win/netlogon",[]),
]
data_dirs_local = ['profile','ldif']

Loading…
Cancel
Save