diff --git a/gestion/gen_confs/switchs.py b/gestion/gen_confs/switchs.py index da4ccdf3..69a21105 100644 --- a/gestion/gen_confs/switchs.py +++ b/gestion/gen_confs/switchs.py @@ -27,6 +27,15 @@ import config from annuaires import bat_switchs +try: + any +except NameError: + def any(iterable): + for item in iterable: + if item: + return True + return False + class switch(gen_config) : # Répertoire ou écire les fichiers de conf CONF_REP='/tmp/' # avec un / derrière @@ -133,7 +142,7 @@ no stack interface_template = """interface %(prise)i enable name "%(nom)s" - flow-control%(speed)s + %(no_flowcontrol)sflow-control%(speed)s no lacp exit """ @@ -338,12 +347,13 @@ exit # Conf par défaut : activée, autonégociation prise_params = { 'prise' : prise , 'speed' : '', - 'etat' : '' } + 'etat' : '', 'no_flowcontrol': '' } annu_prise = '%i%02i' % (sw_num, prise) # prise telle que notée dans l'annuaire if uplink_prises[bat].has_key(int(annu_prise)) : ### Prise d'uplink prise_params['nom'] = uplink_prises[bat][int(annu_prise)] + prise_params['no_flowcontrol'] = 'no ' params['uplinks'].append(prise) vlans['default'].append(prise) vlans['adm_tagged'].append(prise) @@ -403,10 +413,12 @@ exit # chambres. chbres = prise_chbres.get(annu_prise, []) - # "unauth-vid" est le vlan sur lequel sont envoyés les machines - # quand l'authentification RADIUS échoue. On met le VLAN 1 pour - # éviter les problèmes quand LDAP se ch@#! dessus sur pegase. - params['INTERFACES_CONF'] += """aaa port-access mac-based %(prise)s + # Authentification RADIUS, pas pour les clubs... + if not any("cl" in chbre.lower() for chbre in chbres): + # "unauth-vid" est le vlan sur lequel sont envoyés les machines + # quand l'authentification RADIUS échoue. On met le VLAN 1 pour + # éviter les problèmes quand LDAP se ch@#! dessus sur pegase. + params['INTERFACES_CONF'] += """aaa port-access mac-based %(prise)s aaa port-access mac-based %(prise)s addr-limit %(nbmac)s aaa port-access mac-based %(prise)s logoff-period 3600 aaa port-access mac-based %(prise)s unauth-vid 1