|
|
@ -436,7 +436,7 @@ class fileHeader(_terms): |
|
|
|
# Допустимые параметры заголовка |
|
|
|
allowParam = ["format", "format_conf", "comment", "append", "force", |
|
|
|
"link", "mirror", "symbolic", "chmod", "chown", "name", |
|
|
|
"path", "autoupdate"] |
|
|
|
"path", "autoupdate", "exec"] |
|
|
|
|
|
|
|
# Тип шаблона |
|
|
|
fileType = "" |
|
|
@ -562,6 +562,9 @@ class fileHeader(_terms): |
|
|
|
self.headerTerm = False |
|
|
|
self.setError(_("incorrect header parameters - '%s'")\ |
|
|
|
%"append=%s"%self.params["append"]) |
|
|
|
if 'exec' in self.params: |
|
|
|
self.execStr = "#!%s"%self.params['exec'] |
|
|
|
|
|
|
|
if not incorrectParams and self.params: |
|
|
|
incorrectParams = set(self.params.keys()) - set(self.allowParam) |
|
|
|
if incorrectParams: |
|
|
@ -3549,9 +3552,16 @@ re.M|re.S) |
|
|
|
self.autoUpdateFiles = [] |
|
|
|
self.autoUpdateDirs = [] |
|
|
|
|
|
|
|
|
|
|
|
def executeTemplate(self, path, execPath): |
|
|
|
"""Execute template""" |
|
|
|
if os.system("""%s %s %s"""%(execPath,path,'>/dev/null 2>&1')) == 0: |
|
|
|
return True |
|
|
|
else: |
|
|
|
return False |
|
|
|
|
|
|
|
# Преобразование восьмеричного в целое (ввод строка, вывод число) |
|
|
|
def __octToInt(self, strOct): |
|
|
|
"""Преобразование восьмеричного в целое (ввод строка, вывод число)""" |
|
|
|
if strOct: |
|
|
|
try: |
|
|
|
res = string.atoi(strOct, 8) |
|
|
@ -4390,7 +4400,6 @@ variable 'cl_name'")) |
|
|
|
|
|
|
|
# Родительская директория |
|
|
|
path = optFile["path"] |
|
|
|
|
|
|
|
# Изменяем название родительской директории |
|
|
|
if "path" in objHeadNew.params: |
|
|
|
path = objHeadNew.params['path'] |
|
|
@ -4422,6 +4431,20 @@ variable 'cl_name'")) |
|
|
|
if realPath in self.filesFilter: |
|
|
|
return ([], False) |
|
|
|
typeAppendTemplate = objHeadNew.typeAppend |
|
|
|
|
|
|
|
# Параметр exec |
|
|
|
if "exec" in objHeadNew.params: |
|
|
|
execPath = objHeadNew.params['exec'] |
|
|
|
if not os.access(execPath,os.X_OK): |
|
|
|
self.setError(_("False value 'exec' in template") + ": " +\ |
|
|
|
nameFileTemplate) |
|
|
|
self.setError(_("Can not execute %s") %execPath) |
|
|
|
return ([], False) |
|
|
|
if typeAppendTemplate == "join": |
|
|
|
self.setError(_("False value 'append=join' in template") + ": " +\ |
|
|
|
nameFileTemplate) |
|
|
|
return ([], False) |
|
|
|
|
|
|
|
# Очищаем оригинальный файл |
|
|
|
if typeAppendTemplate == "clear": |
|
|
|
try: |
|
|
@ -4827,6 +4850,14 @@ variable 'cl_name'")) |
|
|
|
else: |
|
|
|
self.textConfig = title + self.textTemplate |
|
|
|
self.saveConfFile() |
|
|
|
if 'exec' in objHeadNew.params: |
|
|
|
if not self.executeTemplate(self.nameFileConfig, |
|
|
|
objHeadNew.params['exec']): |
|
|
|
self.setError(_("False template") + ": " +\ |
|
|
|
nameFileTemplate) |
|
|
|
self.setError(_("Can not execute") + ": " +\ |
|
|
|
self.nameFileConfig) |
|
|
|
return False |
|
|
|
return filesApply |
|
|
|
# Создаем объект в случае параметра format в заголовке |
|
|
|
if (typeAppendTemplate == "replace" or\ |
|
|
@ -4888,7 +4919,16 @@ variable 'cl_name'")) |
|
|
|
self.textTemplate |
|
|
|
else: |
|
|
|
self.textConfig = title + self.textTemplate |
|
|
|
|
|
|
|
self.saveConfFile() |
|
|
|
if 'exec' in objHeadNew.params: |
|
|
|
if not self.executeTemplate(self.nameFileConfig, |
|
|
|
objHeadNew.params['exec']): |
|
|
|
self.setError(_("False template") + ": " +\ |
|
|
|
nameFileTemplate) |
|
|
|
self.setError(_("Can not execute") + ": " +\ |
|
|
|
self.nameFileConfig) |
|
|
|
return False |
|
|
|
return filesApply |
|
|
|
# Вверху |
|
|
|
elif typeAppendTemplate == "before": |
|
|
@ -4909,6 +4949,14 @@ variable 'cl_name'")) |
|
|
|
self.textConfig = title + tmpTemplate |
|
|
|
|
|
|
|
self.saveConfFile() |
|
|
|
if 'exec' in objHeadNew.params: |
|
|
|
if not self.executeTemplate(self.nameFileConfig, |
|
|
|
objHeadNew.params['exec']): |
|
|
|
self.setError(_("False template") + ": " +\ |
|
|
|
nameFileTemplate) |
|
|
|
self.setError(_("Can not execute") + ": " +\ |
|
|
|
self.nameFileConfig) |
|
|
|
return False |
|
|
|
return filesApply |
|
|
|
# Внизу |
|
|
|
elif typeAppendTemplate == "after": |
|
|
@ -4928,6 +4976,14 @@ variable 'cl_name'")) |
|
|
|
else: |
|
|
|
self.textConfig = title + tmpTemplate |
|
|
|
self.saveConfFile() |
|
|
|
if 'exec' in objHeadNew.params: |
|
|
|
if not self.executeTemplate(self.nameFileConfig, |
|
|
|
objHeadNew.params['exec']): |
|
|
|
self.setError(_("False template") + ": " +\ |
|
|
|
nameFileTemplate) |
|
|
|
self.setError(_("Can not execute") + ": " +\ |
|
|
|
self.nameFileConfig) |
|
|
|
return False |
|
|
|
return filesApply |
|
|
|
# Объединение |
|
|
|
elif typeAppendTemplate == "join": |
|
|
@ -5011,6 +5067,14 @@ variable 'cl_name'")) |
|
|
|
self.textTemplate = objTxtCoder.decode(self.textTemplate) |
|
|
|
self.textConfig = objTxtCoder.decode(self.textConfig) |
|
|
|
self.saveConfFile() |
|
|
|
if 'exec' in objHeadNew.params: |
|
|
|
if not self.executeTemplate(self.nameFileConfig, |
|
|
|
objHeadNew.params['exec']): |
|
|
|
self.setError(_("False template") + ": " +\ |
|
|
|
nameFileTemplate) |
|
|
|
self.setError(_("Can not execute") + ": " +\ |
|
|
|
self.nameFileConfig) |
|
|
|
return False |
|
|
|
return filesApply |
|
|
|
else: |
|
|
|
self.setError(_("False (type append) template") + ": " +\ |
|
|
|