|
|
@ -4265,6 +4265,7 @@ variable 'cl_name'"))
|
|
|
|
if ":" in owner:
|
|
|
|
if ":" in owner:
|
|
|
|
strUid, strGid = owner.split(":")
|
|
|
|
strUid, strGid = owner.split(":")
|
|
|
|
import pwd
|
|
|
|
import pwd
|
|
|
|
|
|
|
|
uid = self.getUidFromPasswd(strUid)
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
uid = pwd.getpwnam(strUid).pw_uid
|
|
|
|
uid = pwd.getpwnam(strUid).pw_uid
|
|
|
|
except:
|
|
|
|
except:
|
|
|
@ -4272,6 +4273,7 @@ variable 'cl_name'"))
|
|
|
|
self.setError(_("False value 'chown' in template")+\
|
|
|
|
self.setError(_("False value 'chown' in template")+\
|
|
|
|
": " + templateDirFile)
|
|
|
|
": " + templateDirFile)
|
|
|
|
return ("", False, [])
|
|
|
|
return ("", False, [])
|
|
|
|
|
|
|
|
gid = self.getGidFromGroup(strGid)
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
import grp
|
|
|
|
import grp
|
|
|
|
gid = grp.getgrnam(strGid).gr_gid
|
|
|
|
gid = grp.getgrnam(strGid).gr_gid
|
|
|
@ -4321,6 +4323,28 @@ variable 'cl_name'"))
|
|
|
|
self.autoUpdateDirs.append(applyDir)
|
|
|
|
self.autoUpdateDirs.append(applyDir)
|
|
|
|
return (applyDir, objHead, createdDirs)
|
|
|
|
return (applyDir, objHead, createdDirs)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getUidFromPasswd(self,strUid):
|
|
|
|
|
|
|
|
"""Get uid by username from chroot passwd file"""
|
|
|
|
|
|
|
|
passwdFile = os.path.join(self._baseDir,'etc/passwd')
|
|
|
|
|
|
|
|
if os.path.exists(passwdFile):
|
|
|
|
|
|
|
|
mapUid = dict(map(lambda x:x.split(':')[0:3:2],
|
|
|
|
|
|
|
|
filter(lambda x:not x.startswith('#'),
|
|
|
|
|
|
|
|
open(passwdFile,'r'))))
|
|
|
|
|
|
|
|
if strUid in mapUid:
|
|
|
|
|
|
|
|
return int(mapUid[strUid])
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getGidFromGroup(self,strGid):
|
|
|
|
|
|
|
|
"""Get gid by groupname from chroot group file"""
|
|
|
|
|
|
|
|
groupFile = os.path.join(self._baseDir,'etc/group')
|
|
|
|
|
|
|
|
if os.path.exists(groupFile):
|
|
|
|
|
|
|
|
mapGid = dict(map(lambda x:x.split(':')[0:3:2],
|
|
|
|
|
|
|
|
filter(lambda x:not x.startswith('#'),
|
|
|
|
|
|
|
|
open(groupFile,'r'))))
|
|
|
|
|
|
|
|
if strGid in mapGid:
|
|
|
|
|
|
|
|
return int(mapGid[strGid])
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
def getApplyHeadTemplate(self, nameFileTemplate, nameFileConfig,
|
|
|
|
def getApplyHeadTemplate(self, nameFileTemplate, nameFileConfig,
|
|
|
|
templateFileType, optFile):
|
|
|
|
templateFileType, optFile):
|
|
|
|
"""Применяет заголовок к шаблону (права, владелец, и.т. д)"""
|
|
|
|
"""Применяет заголовок к шаблону (права, владелец, и.т. д)"""
|
|
|
@ -4612,24 +4636,36 @@ variable 'cl_name'"))
|
|
|
|
if owner:
|
|
|
|
if owner:
|
|
|
|
if ":" in owner:
|
|
|
|
if ":" in owner:
|
|
|
|
strUid, strGid = owner.split(":")
|
|
|
|
strUid, strGid = owner.split(":")
|
|
|
|
import pwd
|
|
|
|
if strUid.isdigit():
|
|
|
|
try:
|
|
|
|
uid = int(strUid)
|
|
|
|
uid = pwd.getpwnam(strUid).pw_uid
|
|
|
|
else:
|
|
|
|
except:
|
|
|
|
uid = self.getUidFromPasswd(strUid)
|
|
|
|
self.setError(_("Not user in this system: ") + strUid)
|
|
|
|
import pwd
|
|
|
|
self.setError(_("False value 'chown' in template") +\
|
|
|
|
try:
|
|
|
|
": "+ nameFileTemplate)
|
|
|
|
if uid is None:
|
|
|
|
preReturn(pathProg)
|
|
|
|
uid = pwd.getpwnam(strUid).pw_uid
|
|
|
|
return ([], False)
|
|
|
|
except:
|
|
|
|
try:
|
|
|
|
self.setError(_("Not user in this system: ") +
|
|
|
|
import grp
|
|
|
|
strUid)
|
|
|
|
gid = grp.getgrnam(strGid).gr_gid
|
|
|
|
self.setError(_("False value 'chown' in template") +
|
|
|
|
except:
|
|
|
|
": "+ nameFileTemplate)
|
|
|
|
self.setError(_("Not group in this system: ")+strGid)
|
|
|
|
preReturn(pathProg)
|
|
|
|
self.setError(_("False value 'chown' in template") +\
|
|
|
|
return ([], False)
|
|
|
|
": "+ nameFileTemplate)
|
|
|
|
if strGid.isdigit():
|
|
|
|
preReturn(pathProg)
|
|
|
|
gid = int(strGid)
|
|
|
|
return ([], False)
|
|
|
|
else:
|
|
|
|
|
|
|
|
gid = self.getGidFromGroup(strGid)
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
if gid is None:
|
|
|
|
|
|
|
|
import grp
|
|
|
|
|
|
|
|
gid = grp.getgrnam(strGid).gr_gid
|
|
|
|
|
|
|
|
except:
|
|
|
|
|
|
|
|
self.setError(_("Not group in this system: ") +
|
|
|
|
|
|
|
|
strGid)
|
|
|
|
|
|
|
|
self.setError(_("False value 'chown' in template") +
|
|
|
|
|
|
|
|
": "+ nameFileTemplate)
|
|
|
|
|
|
|
|
preReturn(pathProg)
|
|
|
|
|
|
|
|
return ([], False)
|
|
|
|
# Изменяем владельца файла
|
|
|
|
# Изменяем владельца файла
|
|
|
|
if not chownConfFile(pathOldFile,uid,gid,nameFileTemplate):
|
|
|
|
if not chownConfFile(pathOldFile,uid,gid,nameFileTemplate):
|
|
|
|
preReturn(pathProg)
|
|
|
|
preReturn(pathProg)
|
|
|
@ -4945,7 +4981,7 @@ variable 'cl_name'"))
|
|
|
|
return False
|
|
|
|
return False
|
|
|
|
if objHeadOld and objHeadOld.body:
|
|
|
|
if objHeadOld and objHeadOld.body:
|
|
|
|
self.textConfig = objHeadOld.body
|
|
|
|
self.textConfig = objHeadOld.body
|
|
|
|
if self.textTemplate[-1] == "\n":
|
|
|
|
if self.textTemplate and self.textTemplate[-1] == "\n":
|
|
|
|
tmpTemplate = self.textTemplate + self.textConfig
|
|
|
|
tmpTemplate = self.textTemplate + self.textConfig
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
tmpTemplate = self.textTemplate + "\n" + self.textConfig
|
|
|
|
tmpTemplate = self.textTemplate + "\n" + self.textConfig
|
|
|
|