Passage de whosthere à lc_ldap

This commit is contained in:
Gabriel Detraz 2015-08-17 16:36:02 +02:00
parent 96676dee69
commit 686bc45ed5

View file

@ -9,7 +9,8 @@ import collections
import os import os
import xml.dom.minidom import xml.dom.minidom
from gestion.ldap_crans import crans_ldap, AssociationCrans from lc_ldap import shortcuts
from gestion.hptools import hpswitch, ConversationError from gestion.hptools import hpswitch, ConversationError
from gestion.affich_tools import cprint from gestion.affich_tools import cprint
import gestion.affichage as affichage import gestion.affichage as affichage
@ -28,6 +29,7 @@ STATE_DESCR = collections.OrderedDict([
DN_CLUB_CRANS = 'cid=35,' DN_CLUB_CRANS = 'cid=35,'
DN_CLUB_BDE = 'cid=1,' DN_CLUB_BDE = 'cid=1,'
DN_CRANS = 'ou=data,dc=crans,dc=org'
WIFIMAP_DIR = os.getenv('DBG_WIFIMAP_DB', '/usr/scripts/var/wifi_xml') WIFIMAP_DIR = os.getenv('DBG_WIFIMAP_DB', '/usr/scripts/var/wifi_xml')
@ -35,10 +37,13 @@ def pretty_name(item):
"""Affiche un joli nom pour un objet ldap (adh ou machine)""" """Affiche un joli nom pour un objet ldap (adh ou machine)"""
v = "" v = ""
if hasattr(item, 'nom'): try:
v = item.nom() nom = unicode(item['nom'][0])
if hasattr(item, 'prenom'): prenom = unicode(item['prenom'][0])
v = item.prenom() + " " + v v = prenom + u" " + nom
except KeyError:
nom = unicode(item['host'][0])
v = nom
v = v.replace('.wifi.crans.org', ' (WiFi)') v = v.replace('.wifi.crans.org', ' (WiFi)')
v = v.replace('.adm.crans.org', '') v = v.replace('.adm.crans.org', '')
v = v.replace('.crans.org', '') v = v.replace('.crans.org', '')
@ -50,7 +55,7 @@ def show_liste_by_prop(liste):
by_owner = dict() by_owner = dict()
for machine in liste: for machine in liste:
# ldap_crans or lc_ldap # ldapcrans(déprécié) or lc_ldap
owner = (getattr(machine, 'proprietaire', None) or \ owner = (getattr(machine, 'proprietaire', None) or \
getattr(machine, 'proprio', None))() getattr(machine, 'proprio', None))()
if owner.dn not in by_owner: if owner.dn not in by_owner:
@ -90,24 +95,27 @@ class WhosThere(object):
def populate_from_mac(self, mac): def populate_from_mac(self, mac):
"""Rempli à partir de la mac""" """Rempli à partir de la mac"""
fm = self.db.search("mac=%s" % mac) fm = self.db.search(u"macAddress=%s" % mac)
res = self._res res = self._res
if mac in self.expected: if mac in self.expected:
return return
if fm['machine']: if fm:
m = fm['machine'][0] m = fm[0]
if m.nom() in self.expected: proprio = m.proprio()
return if proprio.dn == DN_CRANS or proprio.dn.startswith(DN_CLUB_CRANS):
proprio = m.proprietaire()
if isinstance(proprio, AssociationCrans) or proprio.dn.startswith(DN_CLUB_CRANS):
key = 'crans' key = 'crans'
elif hasattr(proprio, 'droits') and proprio.droits():
key = 'ma'
elif proprio.dn.startswith(DN_CLUB_BDE): elif proprio.dn.startswith(DN_CLUB_BDE):
key = 'bde' key = 'bde'
else:
try:
droits = proprio['droits']
except KeyError:
droits = False
if droits:
key = 'ma'
else: else:
if self._ignore_inactive: if self._ignore_inactive:
if fm['machineWifi'] or self._ignore_wifi_only: if unicode(m['objectClass'][0]) == u'machineWifi' or self._ignore_wifi_only:
return return
key = 'adh' key = 'adh'
res[key].append(m) res[key].append(m)
@ -151,7 +159,7 @@ class WhosThere(object):
'unknown_macs': [], 'unknown_macs': [],
'ttyfound': 0, 'ttyfound': 0,
} }
self.db = crans_ldap() self.db = shortcuts.lc_ldap_readonly()
self.do_scan() self.do_scan()
return self._res return self._res