develop
asamoukin 16 years ago
parent 614b457a3c
commit 07b05a5d4c

@ -171,12 +171,12 @@ 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):
def restorePathDelUser(self,userName,destDir,relDir,message,unixObj=False):
"""Восстанавливает директорию удаленного пользователя"""
removeDir = False
flagError = False
resRestore = self.restoreDelUser(userName, relDir,
destDir, message)
destDir, message,unixObj)
# Если ошибка то выходим
if not resRestore:
flagError = True
@ -627,11 +627,12 @@ class shareLdap(imp_cl_err, imp_cl_xml, imp_cl_help, imp_cl_smcon):
break
return True
def createUserDir(self, uid, gid, userDir):
def createUserDir(self, uid, gid, userDir, mode=0700):
"""Создание пользовательской директории для почты"""
if not os.path.exists(userDir):
os.makedirs(userDir)
os.chmod(userDir,0700)
if mode:
os.chmod(userDir,mode)
os.chown(userDir,uid,gid)
return True
else:
@ -1493,33 +1494,18 @@ 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:
# Востановим (home на сервере) удаленного пользователя
message = _("Restored deleted user %s")% userName + "\n" +\
_("(Y - yes, n - no, ctrl+c - cansel)")
resHomeDir = self.restorePathDelUser(userName, homeDir,
"unix/home", message, self)
if not resHomeDir:
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]
createDirHome = False
else:
term, createDirHome, removeHomeBack = resHomeDir
# Удаляем бекап домашней директории на сервере (удаленного польз..)
if not flagError and removeHomeBack and\
os.path.exists(removeHomeBack):
@ -2360,8 +2346,11 @@ class servMail(shareLdap):
backup = False
# Делаем сохранение данных удаляемого пользователя
if backup and os.path.exists(mailDir) and os.listdir(mailDir):
if not self.backupDelUser(userName, 'mail', mailDir):
if not self.backupDelUser(userName, 'mail/imap', mailDir):
return False
#удаляем почту из Unix сервиса
if not self.servUnixObj.deleteUserMail(userName):
return False
# Удаляем пользователя из групп
if not self.delUserInGroup(userName):
return False
@ -2865,9 +2854,40 @@ in Unix service ...") %str(primaryMail))
def createMailDir(self, userName, uid, gid):
"""Создание пользовательской директории для почты"""
def createCNT(mailDir, uid, gid):
"""создание cur, new, tmp в текущей директории"""
appendDirs = ["cur","new","tmp"]
flagError = False
for appDir in appendDirs:
createDir = os.path.join(mailDir, appDir)
if not self.createUserDir(uid, gid, createDir, False):
flagError = True
break
if flagError:
return False
return True
mailDir = os.path.join(self.clVars.Get("soft_ldap_mail_path"),
userName)
return self.createUserDir(uid, gid, mailDir)
flagError = False
if not self.createUserDir(uid, gid, mailDir):
flagError = True
if not flagError and not createCNT(mailDir, uid, gid):
flagError = True
if not flagError:
mailDirs = [os.path.join(mailDir,".Drafts"),
os.path.join(mailDir,".Sent"),
os.path.join(mailDir,".Spam"),
os.path.join(mailDir,".Trash")]
for createDir in mailDirs:
if not self.createUserDir(uid, gid, createDir, False):
flagError = True
break
if not createCNT(createDir, uid, gid):
flagError = True
break
if flagError:
return False
return True
def addUsersGroupMail(self, users, groupName):
"""Добавляет пользователей из списка в Mail группу"""
@ -2977,6 +2997,8 @@ in Unix service ...") %str(primaryMail))
# Полное имя пользователя
if options.has_key('c'):
optUnix['c'] = options['c']
# Cделаем пользователя видимым
optUnix['v'] = ""
if not self.servUnixObj.addUserUnixServer(userName, optUnix,
False):
return False
@ -3020,64 +3042,54 @@ in Unix service ...") %str(primaryMail))
self.ldapObj.ldapAdd(userLdif)
#ldapObj.ldapAdd(userLdif1)
# не переделывать на else
flagError = False
if self.ldapObj.getError():
print _("LDAP Error") + ": " + self.ldapObj.getError().strip()
if flagCreateUnixUser:
self.servUnixObj.delUserUnixServer(userName, {}, False, False)
return False
if resUnix:
uid = int(resUnix[0][0][1]['uidNumber'][0])
gid = int(resUnix[0][0][1]['gidNumber'][0])
elif resPwd:
uid = int(resPwd.split(":")[2])
gid = int(resPwd.split(":")[3])
else:
self.printERROR(_("user are not found"))
flagError = True
if not flagError:
if resUnix:
uid = int(resUnix[0][0][1]['uidNumber'][0])
gid = int(resUnix[0][0][1]['gidNumber'][0])
elif resPwd:
uid = int(resPwd.split(":")[2])
gid = int(resPwd.split(":")[3])
else:
self.printERROR(_("user are not found"))
flagError = True
if not flagError:
# Востановим удаленного пользователя
# Почтовая директория пользователя
mailDir = os.path.join(self.clVars.Get("soft_ldap_mail_path"),
userName)
message = _("Restored deleted user %s data")% userName + "\n" +\
_("(Y - yes, n - no, ctrl+c - cansel)")
resMailDir = self.restorePathDelUser(userName, mailDir,
"mail/imap", message)
removeMailDirBack = False
if not resMailDir:
flagError = True
createDirMail = False
else:
term, createDirMail, removeMailDirBack = resMailDir
# Создаем почтовую директорию
if not flagError and createDirMail:
if not self.createMailDir(userName, uid, gid):
flagError = True
# Записываем основной почтовый адрес
if not flagError and primaryMail:
if not self.servUnixObj.setUserMail(userName, primaryMail):
self.printERROR(_("Failed set primary email for user %s in\
Unix service ...") %str(primaryMail))
flagError = True
if not flagError and removeMailDirBack\
and os.path.exists(removeMailDirBack):
self.removeDir(removeMailDirBack)
self.removeEmptyDir(os.path.split(removeMailDirBack)[0])
if flagError:
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
self.printERROR(_("Can not add user") + " ...")
return False
# Востановим удаленного пользователя
# Почтовая директория пользователя
mailDir = os.path.join(self.clVars.Get("soft_ldap_mail_path"),
userName)
message = _("Restored deleted user %s data")% userName + "\n" +\
_("(Y - yes, n - no, ctrl+c - cansel)")
resRestore = self.restoreDelUser(userName, "mail", mailDir, message)
# Если ошибка то выходим
if not resRestore:
return False
# Флаг создания почтовой директории пользователя
createDir = True
if type(resRestore) == types.TupleType:
# Если cansel
if resRestore[0] == "Cansel":
# Удаляем пользователя
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
return False
# Если No
if resRestore[0] == "No":
if not self.removeDir(resRestore[1]):
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
return False
createDir = True
if resRestore[0] == "Yes":
createDir = False
# Создаем почтовую директорию
if createDir:
if not self.createMailDir(userName, uid, gid):
self.delUserInMailAndUnix(userName, flagCreateUnixUser)
return False
# Записываем основной почтовый адрес
if primaryMail:
if not self.servUnixObj.setUserMail(userName, primaryMail):
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") + " ...")
@ -3967,8 +3979,6 @@ class servSamba(shareLdap):
optUnix['c'] = options['c']
# Cделаем пользователя видимым
optUnix['v'] = ""
# Cоздадим директорию профиля
optUnix['n'] = ""
if not self.servUnixObj.addUserUnixServer(userName, optUnix,
False):
return False
@ -5130,13 +5140,6 @@ class cl_ldap(shareLdap):
'helpChapter':_("Unix service options"),
'help':_("create home directory for the new user account")
},
{'progAccess':(3,),
'shortOption':"n",
'longOption':"create-profile",
'helpChapter':_("Unix service options"),
'help':_("create a directory for storing new user account \
preferences")
},
{'progAccess':(3,),
'shortOption':"p",
'longOption':"password",
@ -5166,8 +5169,8 @@ preferences")
'shortOption':"n",
'longOption':"create-profile",
'helpChapter':_("Samba service options"),
'help':_("create a directory for storing new user account \
preferences")
'help':_("create a directories for storing new user account \
preferences and data")
},
{'progAccess':(3,),
'shortOption':"p",

@ -276,7 +276,7 @@ class Data:
# Директория хранения писем
soft_ldap_mail_path = {'mode':"r",
'type':('param','soft'),
'value':'/var/calculate/services/mail'}
'value':'/var/calculate/services/mail/imap'}
#Настроен или нет сервис Mail
soft_mail_setup= {'mode':"w",
'type':('param','soft'),

Loading…
Cancel
Save