develop
Самоукин Алексей 14 years ago
parent 6519ad13e4
commit 9b804ac9be

@ -19,10 +19,9 @@ import os
import types import types
import filecmp import filecmp
import pwd, grp import pwd, grp
import cl_datavars
import cl_overriding import cl_overriding
from cl_ldap import ldapUser from cl_ldap import ldapUser
from cl_datavars import glob_attr
class clLocale: class clLocale:
lang = { lang = {
@ -211,7 +210,7 @@ def getdirlist(s_path):
dir_list=fdir.common_dirs dir_list=fdir.common_dirs
return dir_list return dir_list
class fillVars(cl_datavars.glob_attr): class fillVars(glob_attr):
# Объект данных из LDAP # Объект данных из LDAP
_ldapUserObject = False _ldapUserObject = False

@ -65,17 +65,21 @@ class ldapUser(_error):
# Подключение к LDAP # Подключение к LDAP
conLdap = False conLdap = False
def getServerDataUser(self, bindData=False): def getDataInLdapConf(self, bindData=False, cache=True):
"""Получение данных из /etc/ldap.conf""" """Получение данных из /etc/ldap.conf"""
fileName = "/etc/ldap.conf"
getStrList = lambda x: reduce(lambda x,y: [x,y.upper()],([x]*2))
data = [("host",'host'), data = [("host",'host'),
("usersDN",'nss_base_passwd'), ("usersDN",'nss_base_passwd'),
("groupsDN",'nss_base_group')] ("groupsDN",'nss_base_group')]
if bindData: if bindData:
data += [("bindDn",'binddn'), ("bindPw",'bindpw')] data += [("bindDn",'binddn'), ("bindPw",'bindpw')]
workData = map(lambda x: (x[0],getStrList(x[1]),len(x[1])), data)
namesData = map(lambda x: x[0], data) namesData = map(lambda x: x[0], data)
# Данные из кеша, если он есть
if cache and self._dictData and\
set(self._dictData.keys())<=set(namesData):
return self._dictData
fileName = "/etc/ldap.conf"
getStrList = lambda x: reduce(lambda x,y: [x,y.upper()],([x]*2))
workData = map(lambda x: (x[0],getStrList(x[1]),len(x[1])), data)
dictData = {} dictData = {}
splList = (" ", "\t") splList = (" ", "\t")
try: try:
@ -98,19 +102,20 @@ class ldapUser(_error):
self.setError(_("Can not open %s")%fileName) self.setError(_("Can not open %s")%fileName)
return False return False
if set(dictData.keys()) == set(namesData): if set(dictData.keys()) == set(namesData):
# Кеширование данных
if cache:
self._dictData.clear()
self._dictData.update(dictData)
return dictData return dictData
else: else:
return {} return {}
def getUserLdapInfo(self, userName): def getUserLdapInfo(self, userName):
"""Выдаем информацию о пользователе из LDAP""" """Выдаем информацию о пользователе из LDAP"""
if not "bindDn" in self._dictData: # Получаем информацию из /etc/ldap.conf
# Получаем информацию из /etc/ldap.conf retData = self.getDataInLdapConf(bindData=True, cache=True)
retData = self.getServerDataUser(bindData=True) if not retData:
if retData: return {}
self._dictData = retData
else:
return {}
bindDn = self._dictData["bindDn"][0] bindDn = self._dictData["bindDn"][0]
bindPw = self._dictData["bindPw"][0] bindPw = self._dictData["bindPw"][0]
host = self._dictData["host"][0] host = self._dictData["host"][0]

Loading…
Cancel
Save