From 2d4f65758596fde9c90149a0177333c50526c3c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BC=D0=BE=D1=83=D0=BA=D0=B8=D0=BD=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 3 Jun 2010 14:47:23 +0400 Subject: [PATCH] Bugfix encrypt module --- pym/cl_ldap.py | 8 ++++++++ pym/encrypt.py | 50 +++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/pym/cl_ldap.py b/pym/cl_ldap.py index 05625ba..bf2efd5 100644 --- a/pym/cl_ldap.py +++ b/pym/cl_ldap.py @@ -128,6 +128,14 @@ class ldapUser(_error): return usersDN return False + def getHost(self): + """Получение LDAP хоста""" + configdata = self.getDataInLdapConf(bindData=False) + if configdata: + host = configdata["host"][0] + return host + return False + def getGroupsDN(self): """Получение списка DN групп""" configdata = self.getDataInLdapConf(bindData=False) diff --git a/pym/encrypt.py b/pym/encrypt.py index 23ad60b..1d7c425 100644 --- a/pym/encrypt.py +++ b/pym/encrypt.py @@ -25,7 +25,7 @@ from base64 import encodestring as b64encode import smbpasswd from cl_print import color_print # для создания сертификата -from server.users import users +import pwd from server.utils import execProg import cl_lang # Перевод модуля @@ -109,7 +109,7 @@ class encrypt(color_print): nsCertType="server", sslDays=730, sslBits=1024, - userName="root",groupName="root", + userName="root", certFile="/tmp/server.pem", certFileMode=0400, keyFile="/tmp/server.key", @@ -121,13 +121,14 @@ class encrypt(color_print): return True # Удаляем файл сертификата map(lambda x: os.remove(x), foundCertFiles) - # Объект для работы с пользователями - usersObj = users() # получаем id и gid пользователя - uidAndGid = usersObj.getUserUidAndGid(userName, groupName) - if not uidAndGid: + try: + pwdObj = pwd.getpwnam(userName) + except: + self.printERROR(_("Not found user %s")%userName) return False - uid, gid = uidAndGid + uid = pwdObj.pw_uid + gid = pwdObj.pw_gid textCnf="""[ req ] prompt = no default_bits = %s @@ -157,9 +158,9 @@ nsCertType = %s for fileName in certAndKeyFiles: dirName = os.path.split(fileName)[0] if not os.path.exists(dirName): - self.createUserDir(0, 0, dirName, 0755) + self._createDir(0, 0, dirName, 0755) # Создание конфигурационного файла - usersObj.createUserFile(cnfFile, textCnf, 0, 0, 0600) + self._createFile(cnfFile, textCnf, 0, 0, 0600) # Создание сертификата textLine = execProg(\ "%s req -new -x509 -nodes -config %s -days %s -out %s -keyout %s"\ @@ -184,3 +185,34 @@ nsCertType = %s self.printERROR(_("Can not create certificate %s")%certFile) return False return True + + def _createDir(self, uid, gid, dirName, mode=0700): + """Создание пользовательской директории""" + if not os.path.exists(dirName): + os.makedirs(dirName) + if mode: + os.chmod(dirName,mode) + os.chown(dirName,uid,gid) + return True + else: + self.printERROR(_("Path %s exists") %dirName) + return False + + def _createFile(self, fileName, fileTxt, uid, gid, mode=0644): + """Создает пользовательский файл с содержимым + + Если директория файла не существует то ошибка + """ + dirName = os.path.split(fileName)[0] + if not os.path.exists(dirName): + self.printERROR(_("Path %s not exists") %dirName) + return False + fd = os.open(fileName, os.O_CREAT) + os.close(fd) + os.chmod(fileName, mode) + os.chown(fileName,uid,gid) + if fileTxt: + FD = open(fileName, "r+") + FD.write(fileTxt) + FD.close() + return True