|
|
@ -144,7 +144,7 @@ class ldapUser(_error):
|
|
|
|
return groupsDNs
|
|
|
|
return groupsDNs
|
|
|
|
return False
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
def getUserLdapInfo(self, userName):
|
|
|
|
def getUserLdapInfo(self, userName, shadowAttr=False):
|
|
|
|
"""Выдаем информацию о пользователе из LDAP"""
|
|
|
|
"""Выдаем информацию о пользователе из LDAP"""
|
|
|
|
connectData = self.getBindConnectData()
|
|
|
|
connectData = self.getBindConnectData()
|
|
|
|
if not connectData:
|
|
|
|
if not connectData:
|
|
|
@ -159,39 +159,59 @@ class ldapUser(_error):
|
|
|
|
"uid=%s" %userName, None)
|
|
|
|
"uid=%s" %userName, None)
|
|
|
|
if not searchUser:
|
|
|
|
if not searchUser:
|
|
|
|
return False
|
|
|
|
return False
|
|
|
|
uid = False
|
|
|
|
convertDict = {'uid':('user','uidNumber'),
|
|
|
|
gid = False
|
|
|
|
'gid':('user','gidNumber'),
|
|
|
|
fullName = ""
|
|
|
|
'fullName':('user','cn'),
|
|
|
|
mail = ""
|
|
|
|
'mail':('user','mail'),
|
|
|
|
jid = ""
|
|
|
|
'jid':('user','registeredAddress'),
|
|
|
|
group = ""
|
|
|
|
'home':('user','homeDirectory'),
|
|
|
|
if 'uidNumber' in searchUser[0][0][1]:
|
|
|
|
'group':('group','cn')}
|
|
|
|
uid = searchUser[0][0][1]['uidNumber'][0]
|
|
|
|
if shadowAttr:
|
|
|
|
if 'gidNumber' in searchUser[0][0][1]:
|
|
|
|
convertDict.update({'loginShell':('user','loginShell'),
|
|
|
|
gid = searchUser[0][0][1]['gidNumber'][0]
|
|
|
|
'shadowLastChange':('user','shadowLastChange'),
|
|
|
|
for groupDN in groupsDNs:
|
|
|
|
'shadowMin':('user','shadowMin'),
|
|
|
|
searchGroup = self.ldapObj.ldapSearch(groupDN,
|
|
|
|
'shadowMax':('user','shadowMax'),
|
|
|
|
|
|
|
|
'shadowWarning':('user','shadowWarning'),
|
|
|
|
|
|
|
|
'shadowExpire':('user','shadowExpire'),
|
|
|
|
|
|
|
|
'shadowFlag':('user','shadowFlag')})
|
|
|
|
|
|
|
|
listUserAttr = map(lambda x: x[0],
|
|
|
|
|
|
|
|
filter(lambda x: x[1][0]=="user",
|
|
|
|
|
|
|
|
convertDict.items()))
|
|
|
|
|
|
|
|
listGroupAttr = map(lambda x: x[0],
|
|
|
|
|
|
|
|
filter(lambda x: x[1][0]=="group",
|
|
|
|
|
|
|
|
convertDict.items()))
|
|
|
|
|
|
|
|
uid = ""
|
|
|
|
|
|
|
|
gid = ""
|
|
|
|
|
|
|
|
dictOut = {}
|
|
|
|
|
|
|
|
for dictAttr in listUserAttr:
|
|
|
|
|
|
|
|
ldapAttr = convertDict[dictAttr][1]
|
|
|
|
|
|
|
|
if ldapAttr in searchUser[0][0][1]:
|
|
|
|
|
|
|
|
dictOut[dictAttr] = searchUser[0][0][1][ldapAttr][0]
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
dictOut[dictAttr] = ""
|
|
|
|
|
|
|
|
if dictAttr == 'uid':
|
|
|
|
|
|
|
|
uid = dictOut[dictAttr]
|
|
|
|
|
|
|
|
if dictAttr == 'gid':
|
|
|
|
|
|
|
|
gid = dictOut[dictAttr]
|
|
|
|
|
|
|
|
if gid:
|
|
|
|
|
|
|
|
for dictAttr in listGroupAttr:
|
|
|
|
|
|
|
|
searchGroup = []
|
|
|
|
|
|
|
|
ldapAttr = convertDict[dictAttr][1]
|
|
|
|
|
|
|
|
for groupDN in groupsDNs:
|
|
|
|
|
|
|
|
searchGroup = self.ldapObj.ldapSearch(groupDN,
|
|
|
|
ldap.SCOPE_ONELEVEL,
|
|
|
|
ldap.SCOPE_ONELEVEL,
|
|
|
|
"gidNumber=%s" %gid, ['cn'])
|
|
|
|
"gidNumber=%s" %gid, None)
|
|
|
|
|
|
|
|
if searchGroup:
|
|
|
|
|
|
|
|
break
|
|
|
|
if searchGroup:
|
|
|
|
if searchGroup:
|
|
|
|
group = searchGroup[0][0][1]['cn'][0]
|
|
|
|
if ldapAttr in searchGroup[0][0][1]:
|
|
|
|
break
|
|
|
|
dictOut[dictAttr] = searchGroup[0][0][1][ldapAttr][0]
|
|
|
|
if 'cn' in searchUser[0][0][1]:
|
|
|
|
else:
|
|
|
|
fullName = searchUser[0][0][1]['cn'][0]
|
|
|
|
dictOut[dictAttr] = ""
|
|
|
|
if 'mail' in searchUser[0][0][1]:
|
|
|
|
else:
|
|
|
|
mail = searchUser[0][0][1]['mail'][0]
|
|
|
|
dictOut[dictAttr] = ""
|
|
|
|
if 'registeredAddress' in searchUser[0][0][1]:
|
|
|
|
|
|
|
|
jid = searchUser[0][0][1]['registeredAddress'][0]
|
|
|
|
|
|
|
|
if 'homeDirectory' in searchUser[0][0][1]:
|
|
|
|
|
|
|
|
home = searchUser[0][0][1]['homeDirectory'][0]
|
|
|
|
|
|
|
|
if uid and gid:
|
|
|
|
if uid and gid:
|
|
|
|
return {"uid":uid,
|
|
|
|
return dictOut
|
|
|
|
"gid":gid,
|
|
|
|
|
|
|
|
"fullName":fullName,
|
|
|
|
|
|
|
|
"mail":mail,
|
|
|
|
|
|
|
|
"jid":jid,
|
|
|
|
|
|
|
|
"home":home,
|
|
|
|
|
|
|
|
"group":group}
|
|
|
|
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return {}
|
|
|
|
return {}
|
|
|
|
|
|
|
|
|
|
|
|