[crans_utils, lc_ldap] Méthode pour récupérer les machines ldap correspondant à la machine physique locale
This commit is contained in:
parent
d6d9f84076
commit
067459eb44
3 changed files with 25 additions and 4 deletions
|
@ -45,6 +45,7 @@ sys.path.append('/usr/scripts/gestion')
|
|||
import config
|
||||
from unicodedata import normalize
|
||||
import subprocess
|
||||
from netifaces import interfaces, ifaddresses, AF_INET
|
||||
|
||||
DEVNULL = open(os.devnull, 'w')
|
||||
|
||||
|
@ -292,3 +293,14 @@ def fetch_cert_info(x509):
|
|||
for ext in x509.get_extensions():
|
||||
do_ext(data, ext)
|
||||
return data
|
||||
|
||||
|
||||
def ip4_addresses():
|
||||
"""Renvois la liste des ipv4 de la machine physique courante"""
|
||||
ip_list = []
|
||||
for interface in interfaces():
|
||||
if interface!='lo' and AF_INET in ifaddresses(interface).keys():
|
||||
for link in ifaddresses(interface)[AF_INET]:
|
||||
ip_list.append(link['addr'])
|
||||
return ip_list
|
||||
|
||||
|
|
10
lc_ldap.py
10
lc_ldap.py
|
@ -553,3 +553,13 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
return [attributs.soi]
|
||||
else:
|
||||
return []
|
||||
|
||||
|
||||
|
||||
def get_local_machines(self, mode='ro'):
|
||||
filter=""
|
||||
for ip in set(crans_utils.ip4_addresses()):
|
||||
filter+=u'(ipHostNumber=%s)' % ip
|
||||
filter = u"(|%s)" % filter
|
||||
return self.search(filter, mode=mode)
|
||||
|
||||
|
|
|
@ -34,7 +34,6 @@ current_user = os.getenv("SUDO_USER") or os.getenv("USER") or os.getenv("LOGNAME
|
|||
if isinstance(current_user, str):
|
||||
current_user = current_user.decode("utf-8")
|
||||
|
||||
|
||||
def lc_ldap(*args, **kwargs):
|
||||
"""Renvoie une connexion à la base LDAP."""
|
||||
return module_qui_a_le_meme_nom_que_sa_classe_principale.lc_ldap(*args, **kwargs)
|
||||
|
@ -60,7 +59,7 @@ def lc_ldap_test(*args, **kwargs):
|
|||
def lc_ldap_admin(*args, **kwargs):
|
||||
"""Renvoie une connexion LDAP à la vraie base, en admin.
|
||||
Possible seulement si on peut lire secrets.py
|
||||
|
||||
|
||||
"""
|
||||
kwargs["uri"] = 'ldap://ldap.adm.crans.org/'
|
||||
kwargs["dn"] = secrets.get('ldap_auth_dn')
|
||||
|
@ -71,7 +70,7 @@ def lc_ldap_admin(*args, **kwargs):
|
|||
def lc_ldap_readonly(*args, **kwargs):
|
||||
"""Connexion LDAP à la vraie base, en readonly.
|
||||
Possible seulement si on peut lire secrets.py
|
||||
|
||||
|
||||
"""
|
||||
kwargs["uri"] = 'ldap://ldap.adm.crans.org/'
|
||||
kwargs["dn"] = secrets.get('ldap_readonly_auth_dn')
|
||||
|
@ -90,7 +89,7 @@ def lc_ldap_local(*args, **kwargs):
|
|||
si vous souhaitez faire beaucoup de recherches
|
||||
indépendantes (c'est le temps d'accès à la socket
|
||||
qui est problématique).
|
||||
|
||||
|
||||
"""
|
||||
if os.path.exists('/var/run/slapd/ldapi'):
|
||||
ro_uri = 'ldapi://%2fvar%2frun%2fslapd%2fldapi/'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue