|
|
@ -3148,7 +3148,7 @@ re.M|re.S)
|
|
|
|
def createDir(self, dirName, mode=False, uid=False, gid=False):
|
|
|
|
def createDir(self, dirName, mode=False, uid=False, gid=False):
|
|
|
|
"""Создает директорию"""
|
|
|
|
"""Создает директорию"""
|
|
|
|
if os.access(dirName, os.F_OK):
|
|
|
|
if os.access(dirName, os.F_OK):
|
|
|
|
return [dirName]
|
|
|
|
return True
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
dMode = False
|
|
|
|
dMode = False
|
|
|
|
prevDir, tmpSubdir = os.path.split(dirName)
|
|
|
|
prevDir, tmpSubdir = os.path.split(dirName)
|
|
|
@ -3186,8 +3186,8 @@ re.M|re.S)
|
|
|
|
os.chown(dirName, dUid, dGid)
|
|
|
|
os.chown(dirName, dUid, dGid)
|
|
|
|
createDirs.append(dirName)
|
|
|
|
createDirs.append(dirName)
|
|
|
|
except:
|
|
|
|
except:
|
|
|
|
self.setError(_("Can not create dir: " ) + dirName)
|
|
|
|
self.setError(_("Can not create dir: " ) + dirName)
|
|
|
|
return False
|
|
|
|
return False
|
|
|
|
return createDirs
|
|
|
|
return createDirs
|
|
|
|
|
|
|
|
|
|
|
|
def applyVarsTemplate(self, textTemplate, nameTemplate):
|
|
|
|
def applyVarsTemplate(self, textTemplate, nameTemplate):
|
|
|
@ -3492,9 +3492,12 @@ re.M|re.S)
|
|
|
|
newDir = os.path.join(self._baseDir, path.partition(prefix)[2][1:])
|
|
|
|
newDir = os.path.join(self._baseDir, path.partition(prefix)[2][1:])
|
|
|
|
newDir = "/".join(map(lambda x:x.split("?")[0], newDir.split("/")))
|
|
|
|
newDir = "/".join(map(lambda x:x.split("?")[0], newDir.split("/")))
|
|
|
|
# Применяем шаблон
|
|
|
|
# Применяем шаблон
|
|
|
|
pathDir, objHeadDir = self.__getApplyHeadDir(newDir, dirInfoFile, opt)
|
|
|
|
pathDir, objHeadDir, createdDirs =\
|
|
|
|
|
|
|
|
self.__getApplyHeadDir(newDir, dirInfoFile, opt)
|
|
|
|
|
|
|
|
if createdDirs:
|
|
|
|
|
|
|
|
self.createdDirs += createdDirs
|
|
|
|
if objHeadDir:
|
|
|
|
if objHeadDir:
|
|
|
|
self.createdDirs += [pathDir]
|
|
|
|
return pathDir, objHeadDir
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
if self.getError():
|
|
|
|
if self.getError():
|
|
|
|
return False
|
|
|
|
return False
|
|
|
@ -3502,7 +3505,6 @@ re.M|re.S)
|
|
|
|
if path in self.dictTemplates.keys():
|
|
|
|
if path in self.dictTemplates.keys():
|
|
|
|
self.numberProcessTempl += self.dictTemplates[path]
|
|
|
|
self.numberProcessTempl += self.dictTemplates[path]
|
|
|
|
return None
|
|
|
|
return None
|
|
|
|
return pathDir, objHeadDir
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __getApplyHeadDir(self, newDir, templateDirFile, optDir):
|
|
|
|
def __getApplyHeadDir(self, newDir, templateDirFile, optDir):
|
|
|
|
"""Применяет шаблон к директории (права, владелец, и.т. д)"""
|
|
|
|
"""Применяет шаблон к директории (права, владелец, и.т. д)"""
|
|
|
@ -3545,11 +3547,15 @@ re.M|re.S)
|
|
|
|
# Фильтрация шаблонов по названию директории
|
|
|
|
# Фильтрация шаблонов по названию директории
|
|
|
|
realPath = os.path.join("/",applyDir.partition(self._baseDir)[2])
|
|
|
|
realPath = os.path.join("/",applyDir.partition(self._baseDir)[2])
|
|
|
|
if realPath in self.dirsFilter:
|
|
|
|
if realPath in self.dirsFilter:
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
# Создаем директорию если необходимо
|
|
|
|
# Создаем директорию если необходимо
|
|
|
|
if not self.createDir(applyDir, False, self.uid, self.gid):
|
|
|
|
crDirs = self.createDir(applyDir, False, self.uid, self.gid)
|
|
|
|
return False
|
|
|
|
if not crDirs:
|
|
|
|
return (applyDir, True)
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
if crDirs is True:
|
|
|
|
|
|
|
|
return (applyDir, True, [])
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return (applyDir, True, crDirs)
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
FD = open(templateDirFile)
|
|
|
|
FD = open(templateDirFile)
|
|
|
|
textTemplate = FD.read()
|
|
|
|
textTemplate = FD.read()
|
|
|
@ -3557,7 +3563,7 @@ re.M|re.S)
|
|
|
|
except:
|
|
|
|
except:
|
|
|
|
self.setError(_("Error open template") + ": " +\
|
|
|
|
self.setError(_("Error open template") + ": " +\
|
|
|
|
templateDirFile)
|
|
|
|
templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
|
|
|
|
# Заменяем переменные на их значения
|
|
|
|
# Заменяем переменные на их значения
|
|
|
|
textTemplate = self.applyVarsTemplate(textTemplate, templateDirFile)
|
|
|
|
textTemplate = self.applyVarsTemplate(textTemplate, templateDirFile)
|
|
|
@ -3572,12 +3578,12 @@ re.M|re.S)
|
|
|
|
if objHead.getError():
|
|
|
|
if objHead.getError():
|
|
|
|
self.setError(_("Incorrect template") + ": " +\
|
|
|
|
self.setError(_("Incorrect template") + ": " +\
|
|
|
|
templateDirFile)
|
|
|
|
templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
|
|
|
|
# Пропускаем директорию
|
|
|
|
# Пропускаем директорию
|
|
|
|
if objHead.typeAppend == "skip":
|
|
|
|
if objHead.typeAppend == "skip":
|
|
|
|
applyDir = path
|
|
|
|
applyDir = path
|
|
|
|
return (applyDir, objHead)
|
|
|
|
return (applyDir, objHead, [])
|
|
|
|
|
|
|
|
|
|
|
|
# Изменяем название родительской директории
|
|
|
|
# Изменяем название родительской директории
|
|
|
|
if "path" in objHead.params:
|
|
|
|
if "path" in objHead.params:
|
|
|
@ -3589,7 +3595,7 @@ re.M|re.S)
|
|
|
|
elif not path or path and path[0] != "/":
|
|
|
|
elif not path or path and path[0] != "/":
|
|
|
|
self.setError(_("False value 'path' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'path' in template") + ": " +\
|
|
|
|
templateDirFile)
|
|
|
|
templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
path = os.path.join(self._baseDir, path[1:])
|
|
|
|
path = os.path.join(self._baseDir, path[1:])
|
|
|
|
|
|
|
|
|
|
|
@ -3599,7 +3605,7 @@ re.M|re.S)
|
|
|
|
if "/" in nameDir or nameDir == ".." or nameDir == ".":
|
|
|
|
if "/" in nameDir or nameDir == ".." or nameDir == ".":
|
|
|
|
self.setError(_("False value 'name' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'name' in template") + ": " +\
|
|
|
|
templateDirFile)
|
|
|
|
templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
# Новый путь к директории
|
|
|
|
# Новый путь к директории
|
|
|
|
applyDir = os.path.join(path, nameDir)
|
|
|
|
applyDir = os.path.join(path, nameDir)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -3608,7 +3614,7 @@ re.M|re.S)
|
|
|
|
# Фильтрация шаблонов по названию директории
|
|
|
|
# Фильтрация шаблонов по названию директории
|
|
|
|
realPath = os.path.join("/",applyDir.partition(self._baseDir)[2])
|
|
|
|
realPath = os.path.join("/",applyDir.partition(self._baseDir)[2])
|
|
|
|
if realPath in self.dirsFilter:
|
|
|
|
if realPath in self.dirsFilter:
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
# Удаляем директорию
|
|
|
|
# Удаляем директорию
|
|
|
|
if objHead.typeAppend == "remove":
|
|
|
|
if objHead.typeAppend == "remove":
|
|
|
|
if os.path.isdir(applyDir):
|
|
|
|
if os.path.isdir(applyDir):
|
|
|
@ -3618,21 +3624,26 @@ re.M|re.S)
|
|
|
|
except:
|
|
|
|
except:
|
|
|
|
self.setError(_("Can not delete dir: " ) +\
|
|
|
|
self.setError(_("Can not delete dir: " ) +\
|
|
|
|
applyDir)
|
|
|
|
applyDir)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Созданные директории
|
|
|
|
|
|
|
|
createdDirs = []
|
|
|
|
# chmod - изменяем права
|
|
|
|
# chmod - изменяем права
|
|
|
|
if "chmod" in objHead.params:
|
|
|
|
if "chmod" in objHead.params:
|
|
|
|
mode = self.__octToInt(objHead.params['chmod'])
|
|
|
|
mode = self.__octToInt(objHead.params['chmod'])
|
|
|
|
if mode:
|
|
|
|
if mode:
|
|
|
|
if not os.path.exists(applyDir):
|
|
|
|
if not os.path.exists(applyDir):
|
|
|
|
if not self.createDir(applyDir, mode):
|
|
|
|
crDirs = self.createDir(applyDir, mode, self.uid, self.gid)
|
|
|
|
return False
|
|
|
|
if not crDirs:
|
|
|
|
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
if not crDirs is True:
|
|
|
|
|
|
|
|
createdDirs += crDirs
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
os.chmod(applyDir, mode)
|
|
|
|
os.chmod(applyDir, mode)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.setError(_("False value 'chmod' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'chmod' in template") + ": " +\
|
|
|
|
templateDirFile)
|
|
|
|
templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
# chown - изменяем владельца и группу
|
|
|
|
# chown - изменяем владельца и группу
|
|
|
|
if "chown" in objHead.params:
|
|
|
|
if "chown" in objHead.params:
|
|
|
|
owner = objHead.params['chown']
|
|
|
|
owner = objHead.params['chown']
|
|
|
@ -3646,7 +3657,7 @@ re.M|re.S)
|
|
|
|
self.setError(_("Not user in this system: ") + strUid)
|
|
|
|
self.setError(_("Not user in this system: ") + strUid)
|
|
|
|
self.setError(_("False value 'chown' in template")+\
|
|
|
|
self.setError(_("False value 'chown' in template")+\
|
|
|
|
": " + templateDirFile)
|
|
|
|
": " + templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
import grp
|
|
|
|
import grp
|
|
|
|
gid = grp.getgrnam(strGid).gr_gid
|
|
|
|
gid = grp.getgrnam(strGid).gr_gid
|
|
|
@ -3654,23 +3665,26 @@ re.M|re.S)
|
|
|
|
self.setError(_("Not group in this system: ")+strGid)
|
|
|
|
self.setError(_("Not group in this system: ")+strGid)
|
|
|
|
self.setError(_("False value 'chown' in template") +\
|
|
|
|
self.setError(_("False value 'chown' in template") +\
|
|
|
|
": "+ templateDirFile)
|
|
|
|
": "+ templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
|
|
|
|
if not os.path.exists(applyDir):
|
|
|
|
if not os.path.exists(applyDir):
|
|
|
|
if not self.createDir(applyDir, False, uid, gid):
|
|
|
|
crDirs = self.createDir(applyDir, False, uid, gid)
|
|
|
|
return (applyDir, False)
|
|
|
|
if not crDirs:
|
|
|
|
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
if not crDirs is True:
|
|
|
|
|
|
|
|
createdDirs += crDirs
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
if not chownConfDir(applyDir, uid, gid,
|
|
|
|
if not chownConfDir(applyDir, uid, gid,
|
|
|
|
templateDirFile):
|
|
|
|
templateDirFile):
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.setError(_("False value 'chown' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'chown' in template") + ": " +\
|
|
|
|
templateDirFile)
|
|
|
|
templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.setError(_("False value 'chown' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'chown' in template") + ": " +\
|
|
|
|
templateDirFile)
|
|
|
|
templateDirFile)
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
# Устанавливаем владельцем директории, пользователя по умолчанию
|
|
|
|
# Устанавливаем владельцем директории, пользователя по умолчанию
|
|
|
|
# (переменная шаблона ur_login)
|
|
|
|
# (переменная шаблона ur_login)
|
|
|
@ -3679,11 +3693,16 @@ re.M|re.S)
|
|
|
|
if (self.uid, self.gid) != (tUid, tGid):
|
|
|
|
if (self.uid, self.gid) != (tUid, tGid):
|
|
|
|
if not chownConfDir(applyDir, self.uid, self.gid,
|
|
|
|
if not chownConfDir(applyDir, self.uid, self.gid,
|
|
|
|
templateDirFile):
|
|
|
|
templateDirFile):
|
|
|
|
return (applyDir, False)
|
|
|
|
return ("", False, [])
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
if not self.createDir(applyDir, False, self.uid, self.gid):
|
|
|
|
crDirs = self.createDir(applyDir, False, self.uid, self.gid)
|
|
|
|
return False
|
|
|
|
if not crDirs:
|
|
|
|
return (applyDir, objHead)
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
if not crDirs is True:
|
|
|
|
|
|
|
|
createdDirs += crDirs
|
|
|
|
|
|
|
|
if not objHead:
|
|
|
|
|
|
|
|
applyDir = ""
|
|
|
|
|
|
|
|
return (applyDir, objHead, createdDirs)
|
|
|
|
|
|
|
|
|
|
|
|
def __getApplyHeadTemplate(self, nameFileTemplate, nameFileConfig,
|
|
|
|
def __getApplyHeadTemplate(self, nameFileTemplate, nameFileConfig,
|
|
|
|
templateFileType, optFile):
|
|
|
|
templateFileType, optFile):
|
|
|
@ -3761,7 +3780,7 @@ re.M|re.S)
|
|
|
|
if objHeadNew.getError():
|
|
|
|
if objHeadNew.getError():
|
|
|
|
self.setError(_("Incorrect template") + ": " +\
|
|
|
|
self.setError(_("Incorrect template") + ": " +\
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
|
|
|
|
|
|
|
|
pathProg = ""
|
|
|
|
pathProg = ""
|
|
|
|
# Родительская директория
|
|
|
|
# Родительская директория
|
|
|
@ -3776,7 +3795,7 @@ re.M|re.S)
|
|
|
|
elif not path or path and path[0] != "/":
|
|
|
|
elif not path or path and path[0] != "/":
|
|
|
|
self.setError(_("False value 'path' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'path' in template") + ": " +\
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
path = os.path.join(self._baseDir, path[1:])
|
|
|
|
path = os.path.join(self._baseDir, path[1:])
|
|
|
|
|
|
|
|
|
|
|
@ -3787,7 +3806,7 @@ re.M|re.S)
|
|
|
|
if "/" in nameFile or nameFile == ".." or nameFile == ".":
|
|
|
|
if "/" in nameFile or nameFile == ".." or nameFile == ".":
|
|
|
|
self.setError(_("False value 'name' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'name' in template") + ": " +\
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
# Новый путь к оригинальному файлу
|
|
|
|
# Новый путь к оригинальному файлу
|
|
|
|
pathOldFile = os.path.join(path,nameFile)
|
|
|
|
pathOldFile = os.path.join(path,nameFile)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -3797,7 +3816,7 @@ re.M|re.S)
|
|
|
|
# Фильтрация шаблонов по названию файла
|
|
|
|
# Фильтрация шаблонов по названию файла
|
|
|
|
realPath = os.path.join("/",pathOldFile.partition(self._baseDir)[2])
|
|
|
|
realPath = os.path.join("/",pathOldFile.partition(self._baseDir)[2])
|
|
|
|
if realPath in self.filesFilter:
|
|
|
|
if realPath in self.filesFilter:
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
typeAppendTemplate = objHeadNew.typeAppend
|
|
|
|
typeAppendTemplate = objHeadNew.typeAppend
|
|
|
|
# Удаляем оригинальный файл
|
|
|
|
# Удаляем оригинальный файл
|
|
|
|
if typeAppendTemplate == "remove":
|
|
|
|
if typeAppendTemplate == "remove":
|
|
|
@ -3810,6 +3829,7 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not delete link") + ": " +\
|
|
|
|
self.setError(_("Can not delete link") + ": " +\
|
|
|
|
pathOldFile)
|
|
|
|
pathOldFile)
|
|
|
|
|
|
|
|
return ([], False)
|
|
|
|
if os.path.isfile(pathOldFile):
|
|
|
|
if os.path.isfile(pathOldFile):
|
|
|
|
# удаляем файл
|
|
|
|
# удаляем файл
|
|
|
|
try:
|
|
|
|
try:
|
|
|
@ -3819,15 +3839,16 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
pathOldFile)
|
|
|
|
pathOldFile)
|
|
|
|
|
|
|
|
return ([], False)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return (applyFiles, False)
|
|
|
|
# Пропускаем обработку шаблона
|
|
|
|
# Пропускаем обработку шаблона
|
|
|
|
elif typeAppendTemplate == "skip":
|
|
|
|
elif typeAppendTemplate == "skip":
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
|
|
|
|
|
|
|
|
# Создаем директорию для файла если ее нет
|
|
|
|
# Создаем директорию для файла если ее нет
|
|
|
|
if not os.path.exists(path):
|
|
|
|
if not os.path.exists(path):
|
|
|
|
if not self.createDir(path):
|
|
|
|
if not self.createDir(path):
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
# В случае force
|
|
|
|
# В случае force
|
|
|
|
if objHeadNew.params.has_key("force"):
|
|
|
|
if objHeadNew.params.has_key("force"):
|
|
|
|
if os.path.islink(pathOldFile):
|
|
|
|
if os.path.islink(pathOldFile):
|
|
|
@ -3839,7 +3860,7 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not delete link") + ": " +\
|
|
|
|
self.setError(_("Can not delete link") + ": " +\
|
|
|
|
pathOldFile)
|
|
|
|
pathOldFile)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
if os.path.isfile(pathOldFile):
|
|
|
|
if os.path.isfile(pathOldFile):
|
|
|
|
# удаляем файл
|
|
|
|
# удаляем файл
|
|
|
|
try:
|
|
|
|
try:
|
|
|
@ -3849,7 +3870,7 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
pathOldFile)
|
|
|
|
pathOldFile)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
|
|
|
|
|
|
|
|
flagSymlink = False
|
|
|
|
flagSymlink = False
|
|
|
|
flagForce = False
|
|
|
|
flagForce = False
|
|
|
@ -3866,9 +3887,9 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
pathOldFile)
|
|
|
|
pathOldFile)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
elif not os.path.exists(pathOldFile):
|
|
|
|
elif not os.path.exists(pathOldFile):
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
# Если есть указатель на файл шаблона (link)
|
|
|
|
# Если есть указатель на файл шаблона (link)
|
|
|
|
if objHeadNew.params.has_key("link") and\
|
|
|
|
if objHeadNew.params.has_key("link") and\
|
|
|
|
not objHeadNew.params.has_key("symbolic"):
|
|
|
|
not objHeadNew.params.has_key("symbolic"):
|
|
|
@ -3885,7 +3906,7 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not open file") + ": " +\
|
|
|
|
self.setError(_("Can not open file") + ": " +\
|
|
|
|
templateFile)
|
|
|
|
templateFile)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
if os.path.exists(pathOldFile):
|
|
|
|
if os.path.exists(pathOldFile):
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
os.remove(pathOldFile)
|
|
|
|
os.remove(pathOldFile)
|
|
|
@ -3894,7 +3915,7 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
pathOldFile)
|
|
|
|
pathOldFile)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
if foundTemplateFile:
|
|
|
|
if foundTemplateFile:
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
FD = open(pathOldFile, "w+")
|
|
|
|
FD = open(pathOldFile, "w+")
|
|
|
@ -3905,13 +3926,13 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not create file") + " '%s'"\
|
|
|
|
self.setError(_("Can not create file") + " '%s'"\
|
|
|
|
%pathOldFile)
|
|
|
|
%pathOldFile)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
oMode = getModeFile(pathOldFile, mode="mode")
|
|
|
|
oMode = getModeFile(pathOldFile, mode="mode")
|
|
|
|
# Если права не совпадают, меняем права
|
|
|
|
# Если права не совпадают, меняем права
|
|
|
|
if fMode != oMode:
|
|
|
|
if fMode != oMode:
|
|
|
|
if not chmodConfFile(pathOldFile, fMode, nameFileTemplate,
|
|
|
|
if not chmodConfFile(pathOldFile, fMode, nameFileTemplate,
|
|
|
|
checkExists=False):
|
|
|
|
checkExists=False):
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
|
|
|
|
|
|
|
|
# Если символическая ссылка
|
|
|
|
# Если символическая ссылка
|
|
|
|
if objHeadNew.params.has_key("symbolic"):
|
|
|
|
if objHeadNew.params.has_key("symbolic"):
|
|
|
@ -3928,18 +3949,18 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not change the current directory to")+\
|
|
|
|
self.setError(_("Can not change the current directory to")+\
|
|
|
|
" " + pathLink)
|
|
|
|
" " + pathLink)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
|
|
|
|
|
|
|
|
# chmod - изменяем права
|
|
|
|
# chmod - изменяем права
|
|
|
|
if objHeadNew.params.has_key("chmod"):
|
|
|
|
if objHeadNew.params.has_key("chmod"):
|
|
|
|
mode = self.__octToInt(objHeadNew.params['chmod'])
|
|
|
|
mode = self.__octToInt(objHeadNew.params['chmod'])
|
|
|
|
if mode:
|
|
|
|
if mode:
|
|
|
|
if not chmodConfFile(pathOldFile, mode, nameFileTemplate):
|
|
|
|
if not chmodConfFile(pathOldFile, mode, nameFileTemplate):
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.setError(_("False value 'chmod' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'chmod' in template") + ": " +\
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
# chown - изменяем владельца и группу
|
|
|
|
# chown - изменяем владельца и группу
|
|
|
|
if objHeadNew.params.has_key("chown"):
|
|
|
|
if objHeadNew.params.has_key("chown"):
|
|
|
|
owner = objHeadNew.params['chown']
|
|
|
|
owner = objHeadNew.params['chown']
|
|
|
@ -3953,7 +3974,7 @@ re.M|re.S)
|
|
|
|
self.setError(_("Not user in this system: ") + strUid)
|
|
|
|
self.setError(_("Not user in this system: ") + strUid)
|
|
|
|
self.setError(_("False value 'chown' in template") +\
|
|
|
|
self.setError(_("False value 'chown' in template") +\
|
|
|
|
": "+ nameFileTemplate)
|
|
|
|
": "+ nameFileTemplate)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
import grp
|
|
|
|
import grp
|
|
|
|
gid = grp.getgrnam(strGid).gr_gid
|
|
|
|
gid = grp.getgrnam(strGid).gr_gid
|
|
|
@ -3961,18 +3982,18 @@ re.M|re.S)
|
|
|
|
self.setError(_("Not group in this system: ")+strGid)
|
|
|
|
self.setError(_("Not group in this system: ")+strGid)
|
|
|
|
self.setError(_("False value 'chown' in template") +\
|
|
|
|
self.setError(_("False value 'chown' in template") +\
|
|
|
|
": "+ nameFileTemplate)
|
|
|
|
": "+ nameFileTemplate)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
# Изменяем владельца файла
|
|
|
|
# Изменяем владельца файла
|
|
|
|
if not chownConfFile(pathOldFile,uid,gid,nameFileTemplate):
|
|
|
|
if not chownConfFile(pathOldFile,uid,gid,nameFileTemplate):
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.setError(_("False value 'chown' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'chown' in template") + ": " +\
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.setError(_("False value 'chown' in template") + ": " +\
|
|
|
|
self.setError(_("False value 'chown' in template") + ": " +\
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
|
|
|
|
|
|
|
|
self.openFiles(nameFileTemplate, pathOldFile)
|
|
|
|
self.openFiles(nameFileTemplate, pathOldFile)
|
|
|
|
if not objHeadNew.params.has_key("chown"):
|
|
|
|
if not objHeadNew.params.has_key("chown"):
|
|
|
@ -3983,7 +4004,7 @@ re.M|re.S)
|
|
|
|
# Изменяем владельца файла
|
|
|
|
# Изменяем владельца файла
|
|
|
|
if not chownConfFile(pathOldFile, self.uid, self.gid,
|
|
|
|
if not chownConfFile(pathOldFile, self.uid, self.gid,
|
|
|
|
nameFileTemplate, checkExists=False):
|
|
|
|
nameFileTemplate, checkExists=False):
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
if flagSymlink:
|
|
|
|
if flagSymlink:
|
|
|
|
if os.path.exists(prevOldFile) or os.path.islink(prevOldFile):
|
|
|
|
if os.path.exists(prevOldFile) or os.path.islink(prevOldFile):
|
|
|
|
try:
|
|
|
|
try:
|
|
|
@ -3998,7 +4019,7 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
self.setError(_("Can not delete file") + ": " +\
|
|
|
|
prevOldFile)
|
|
|
|
prevOldFile)
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
if not "/" == pathOldFile[0]:
|
|
|
|
if not "/" == pathOldFile[0]:
|
|
|
|
applyFiles = [prevOldFile,os.path.join(pathLink,pathOldFile)]
|
|
|
|
applyFiles = [prevOldFile,os.path.join(pathLink,pathOldFile)]
|
|
|
|
else:
|
|
|
|
else:
|
|
|
@ -4010,9 +4031,9 @@ re.M|re.S)
|
|
|
|
nameFileTemplate)
|
|
|
|
nameFileTemplate)
|
|
|
|
self.setError(_("Can not create symbolic link") + " :" +\
|
|
|
|
self.setError(_("Can not create symbolic link") + " :" +\
|
|
|
|
"%s -> %s"%(prevOldFile, pathOldFile))
|
|
|
|
"%s -> %s"%(prevOldFile, pathOldFile))
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
if not objHeadNew.body.strip():
|
|
|
|
if not objHeadNew.body.strip():
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
applyFiles = [pathOldFile]
|
|
|
|
applyFiles = [pathOldFile]
|
|
|
|
if pathProg:
|
|
|
|
if pathProg:
|
|
|
@ -4021,7 +4042,7 @@ re.M|re.S)
|
|
|
|
if typeAppendTemplate == "replace" and\
|
|
|
|
if typeAppendTemplate == "replace" and\
|
|
|
|
not objHeadNew.params.has_key("symbolic") and\
|
|
|
|
not objHeadNew.params.has_key("symbolic") and\
|
|
|
|
objHeadNew.params.has_key("link"):
|
|
|
|
objHeadNew.params.has_key("link"):
|
|
|
|
return (applyFiles, False)
|
|
|
|
return ([], False)
|
|
|
|
if not pathOldFile in self.dictProcessedTemplates:
|
|
|
|
if not pathOldFile in self.dictProcessedTemplates:
|
|
|
|
self.dictProcessedTemplates[pathOldFile] = []
|
|
|
|
self.dictProcessedTemplates[pathOldFile] = []
|
|
|
|
self.dictProcessedTemplates[pathOldFile].append(nameFileTemplate)
|
|
|
|
self.dictProcessedTemplates[pathOldFile].append(nameFileTemplate)
|
|
|
|