From a620d68411667cbcc8420e6e9bace2dec3319216 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Tue, 25 Oct 2011 21:49:23 +0200 Subject: [PATCH 1/2] =?UTF-8?q?On=20optimise=20la=20methode=20allMachines?= =?UTF-8?q?=20:=20il=20est=20inutile=20losque=20l'on=20construit=20les=20p?= =?UTF-8?q?ropri=C3=A9taires=20des=20machines=20de=20r=C3=A9int=C3=A9rroge?= =?UTF-8?q?r=20l'annuaire=20ldap=20pour=20les=20obtenir=20alors=20que=20l'?= =?UTF-8?q?on=20vient=20de=20dumper=20tout=20l'annuaire.=20Pour=20cela,=20?= =?UTF-8?q?on=20rajoute=20un=20param=C3=A8tre=20optionel=20machines=20?= =?UTF-8?q?=C3=A0=20la=20classe=20proprio,=20et=20on=20construit=20directe?= =?UTF-8?q?ment=20les=20propri=C3=A9taires=20en=20appelant=20la=20classe?= =?UTF-8?q?=20adh=C3=A9rant=20au=20lieu=20de=20passer=20par=20la=20methode?= =?UTF-8?q?=20new=5Fcransldapobject.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lc_ldap.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lc_ldap.py b/lc_ldap.py index 0065c91..b37e49e 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -130,14 +130,19 @@ class lc_ldap(ldap.ldapobject.LDAPObject): machines = [] # On récupère tous les objets ldap et on les met dans un dico # (proxying de la base ldap) - for dn, attrs in self.search_s(base_dn, scope=2): - res[dn] = attrs + for dn, attrs in self.search_s(base_dn, scope=2): #on fait tout dans une seule boucle + #~ res[dn] = attrs # On crée la liste des machines - for dn, attrs in res.items(): + #~ for dn, attrs in res.items(): if dn.startswith('mid='): m = new_cransldapobject(self, dn, ldif = attrs) parent_dn = dn.split(',', 1)[1] - m._proprio = new_cransldapobject(self, parent_dn, res[parent_dn]) + if not parent.has_key(parent_dn): + parent[parent_dn]=adherent(self, dn,machines= [ new_cransldapobject(self, dn,ldif=attrs)]) # on utilise pas new_cransldapobject pour optimiser les appel ldap (on passe la liste des machines) + else: + parent[parent_dn]._machines.append(new_cransldapobject(self, dn,ldif=attrs)) + #~ m._proprio = new_cransldapobject(self, parent_dn, res[parent_dn],opt=machine_proprio[parent_dn]) + m._proprio = parent[parent_dn] machines.append(m) return machines @@ -415,9 +420,9 @@ class proprio(CransLdapObject): ofields = [] xfields = [] - def __init__(self, conn, dn, mode='ro', ldif = None): + def __init__(self, conn, dn, mode='ro', ldif = None, machines=[]): super(proprio, self).__init__(conn, dn, mode, ldif) - self._machines = [] + self._machines = machines def machines(self): if not self._machines: From 054b42044b53d6eb80c71a09ae2aaca066ef46eb Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Tue, 25 Oct 2011 22:46:43 +0200 Subject: [PATCH 2/2] =?UTF-8?q?[attributs.py]=20On=20mets=20la=20liste=20d?= =?UTF-8?q?es=20shells=20en=20dur=20car=20se=20sont=20ceux=20install=C3=A9?= =?UTF-8?q?s=20sur=20zamok=20qui=20importent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- attributs.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/attributs.py b/attributs.py index d1d58d4..3dd03eb 100644 --- a/attributs.py +++ b/attributs.py @@ -524,8 +524,27 @@ class loginShell(Attr): can_modify = ["self", "Nounou", "Cableur"] def parse_value(self, shell, ldif): - with open('/etc/shells') as f: - shells = [ l.strip() for l in f.readlines() if not l.startswith('#') ] + #with open('/etc/shells') as f: + # shells = [ l.strip() for l in f.readlines() if not l.startswith('#') ] + shells=['/bin/csh', + '/bin/sh', + '/usr/bin/es', + '/usr/bin/ksh', + '/bin/ksh', + '/usr/bin/rc', + '/usr/bin/tcsh', + '/bin/tcsh', + '/usr/bin/esh', + '/bin/bash', + '/bin/rbash', + '/bin/zsh', + '/usr/bin/zsh', + '/usr/bin/screen', + '/bin/dash', + '/usr/bin/rssh', + '/usr/local/bin/disconnect_shell', + '/usr/scripts/surveillance/disconnect_shell', + ''] if (shell not in shells): raise ValueError("Shell %s invalide" % shell) self.value = shell