#! /usr/bin/env python # -*- coding: iso-8859-15 -*- import sys, signal from gen_confs import gen_config, anim, cprint, OK, ERREUR sys.path.append('/usr/scripts/gestion') from ldap_crans import crans_ldap, crans, ann_scol, preattr, ldap class droits(crans_ldap,gen_config) : ####### Les groupes base_group_dn = 'ou=Group,dc=crans,dc=org' # Quels droits donnent l'appartenacne à quel groupe ? groupes = { 'adm' : [ u'Nounou' ] , 'respbats' : [ u'Câbleur' , u'Déconnecteur', u'Nounou' ] , 'moderateurs' : [ u'Modérateur' ] , 'disconnect' : [ u'Déconnecteur' ] , 'webcvs' : [ u'CVSWeb'] } ####### Les ML # Le + devant un nom de ML indique une synchronisqtion # ML <-> fonction partielle : il n'y a pas d'effacement # des abonnés si le droit est retiré mailing_listes = { 'roots' : [ u'Nounou', u'Apprenti' ], '+nounou' : [ u'Nounou', u'Apprenti' ], 'respbats' : [ u'Câbleur', u'Nounou' ], 'moderateurs' : [ u'Modérateur' ], 'disconnect' : [ u'Déconnecteur' ] } def restart(s) : # Rien à faire pass def __str__(self): return "droits" def build_group(self) : """ Reconstruit les groupes dans la base LDAP """ self.anim.iter = len( self.groupes.keys() ) for group, fonctions in self.groupes.items() : self.anim.cycle() # Qui doit être dans ce groupe ? res = [] for f in fonctions : res += self.search('droits=%s' % f)['adherent'] # Récupération de la constitution du groupe actuel dn = 'cn=%s,%s' % (group, self.base_group_dn) data = self.conn.search_s(dn ,0,'objectClass=posixGroup')[0][1] init_data = data.copy() # Supression de tout les membres data['memberUid'] = [] # Ajout des bonnes personnes for adher in res : uid = preattr(adher.compte())[1] if uid and uid not in data['memberUid'] : data['memberUid'].append(uid) # Sauvegarde modlist = ldap.modlist.modifyModlist(init_data,data) self.conn.modify_s(dn,modlist) def gen_conf(self) : self.anim = anim('\tconfiguration groupes') try : self.build_group() self.anim.reinit() print OK except : self.anim.reinit() print ERREUR if self.debug : import traceback traceback.print_exc() self.anim = anim('\tconfiguration ML Crans') print 'TODO'