freeradius: DBG_FREERADIUS=1 pour les tests
This commit is contained in:
parent
5bc5794af9
commit
0d7b64a56c
2 changed files with 30 additions and 11 deletions
|
@ -1,4 +1,3 @@
|
||||||
#!/bin/bash /usr/scripts/python.sh
|
|
||||||
# ⁻*- coding: utf-8 -*-
|
# ⁻*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Ce fichier contient la définition de plusieurs fonctions d'interface à freeradius
|
# Ce fichier contient la définition de plusieurs fonctions d'interface à freeradius
|
||||||
|
@ -7,10 +6,10 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import traceback
|
|
||||||
import netaddr
|
import netaddr
|
||||||
import radiusd # Module magique freeradius (radiusd.py is dummy)
|
import radiusd # Module magique freeradius (radiusd.py is dummy)
|
||||||
import ldap
|
import ldap
|
||||||
|
import os
|
||||||
|
|
||||||
import lc_ldap.shortcuts
|
import lc_ldap.shortcuts
|
||||||
from lc_ldap.crans_utils import escape as escape_ldap
|
from lc_ldap.crans_utils import escape as escape_ldap
|
||||||
|
@ -20,12 +19,7 @@ from gestion.config.config import vlans
|
||||||
from gestion.gen_confs.trigger import trigger_generate_cochon as trigger_generate
|
from gestion.gen_confs.trigger import trigger_generate_cochon as trigger_generate
|
||||||
import annuaires_pg
|
import annuaires_pg
|
||||||
|
|
||||||
# Voilà, pour faire marcher le V6Only, il faut se retirer l'ipv4 de sa machine
|
TEST_SERVER = bool(os.getenv('DBG_FREERADIUS', False))
|
||||||
# ou en enregistrer une nouvelle (sans ipv4) avec une autre mac. Moi j'ai la
|
|
||||||
# flemme donc je hardcode les MAC qui doivent toujours être placées sur le vlan v6only
|
|
||||||
test_v6 = [
|
|
||||||
u'00:26:c7:a6:9e:16', # cerveaulent (machine de b2moo)
|
|
||||||
]
|
|
||||||
|
|
||||||
USERNAME_SUFFIX_WIFI = '.wifi.crans.org'
|
USERNAME_SUFFIX_WIFI = '.wifi.crans.org'
|
||||||
USERNAME_SUFFIX_FIL = '.crans.org'
|
USERNAME_SUFFIX_FIL = '.crans.org'
|
||||||
|
@ -218,7 +212,9 @@ def register_mac(data, machine, conn):
|
||||||
def instantiate(p, *conns):
|
def instantiate(p, *conns):
|
||||||
"""Utile pour initialiser les connexions ldap une première fois (otherwise,
|
"""Utile pour initialiser les connexions ldap une première fois (otherwise,
|
||||||
do nothing)"""
|
do nothing)"""
|
||||||
pass
|
logger.info('Instantiation')
|
||||||
|
if TEST_SERVER:
|
||||||
|
logger.info('DBG_FREERADIUS is enabled')
|
||||||
|
|
||||||
@radius_event
|
@radius_event
|
||||||
def authorize_wifi(data):
|
def authorize_wifi(data):
|
||||||
|
@ -295,6 +291,16 @@ def post_auth_wifi(data):
|
||||||
|
|
||||||
# WiFi : Pour l'instant, on ne met pas d'infos de vlans dans la réponse
|
# WiFi : Pour l'instant, on ne met pas d'infos de vlans dans la réponse
|
||||||
# les bornes wifi ont du mal avec cela
|
# les bornes wifi ont du mal avec cela
|
||||||
|
if TEST_SERVER:
|
||||||
|
return (radiusd.RLM_MODULE_UPDATED,
|
||||||
|
(
|
||||||
|
("Tunnel-Type", "VLAN"),
|
||||||
|
("Tunnel-Medium-Type", "IEEE-802"),
|
||||||
|
("Tunnel-Private-Group-Id", '%d' % vlan_id),
|
||||||
|
),
|
||||||
|
()
|
||||||
|
)
|
||||||
|
|
||||||
return radiusd.RLM_MODULE_OK
|
return radiusd.RLM_MODULE_OK
|
||||||
|
|
||||||
@radius_event
|
@radius_event
|
||||||
|
@ -364,8 +370,6 @@ def decide_vlan(data, is_wifi, conn):
|
||||||
|
|
||||||
if not machine['ipHostNumber']:
|
if not machine['ipHostNumber']:
|
||||||
decision = 'v6only', u'No IPv4'
|
decision = 'v6only', u'No IPv4'
|
||||||
elif unicode(machine['macAddress'][0]) in test_v6:
|
|
||||||
decision = 'v6only', u'Test machine v6'
|
|
||||||
# TODO: condition plus générique:
|
# TODO: condition plus générique:
|
||||||
# netaddr.all_matching_cidr(machine['ipHostNumber'][0].value,
|
# netaddr.all_matching_cidr(machine['ipHostNumber'][0].value,
|
||||||
# config.NETs_primaires['personnel-ens'])
|
# config.NETs_primaires['personnel-ens'])
|
||||||
|
@ -412,6 +416,18 @@ def decide_vlan(data, is_wifi, conn):
|
||||||
if force_ma:
|
if force_ma:
|
||||||
decision = decision[0], decision[1] + u' (force MA)'
|
decision = decision[0], decision[1] + u' (force MA)'
|
||||||
|
|
||||||
|
# Debug: si la machine a un commentaire de la forme "force_vlan: ..."
|
||||||
|
if TEST_SERVER:
|
||||||
|
for info in machine.get('info', []):
|
||||||
|
txt = info.value
|
||||||
|
if txt.startswith(u'force_vlan:'):
|
||||||
|
txt = txt[len(u'force_vlan:'):]
|
||||||
|
vlan, reason = txt.split(',')
|
||||||
|
vlan = vlan.encode('ascii', errors='ignore').strip()
|
||||||
|
reason = u"%s (was %r)" % (reason.strip(), decision)
|
||||||
|
|
||||||
|
decision = (vlan, reason)
|
||||||
|
|
||||||
return (port,) + decision
|
return (port,) + decision
|
||||||
|
|
||||||
@radius_event
|
@radius_event
|
||||||
|
|
|
@ -14,3 +14,6 @@ export DBG_ANNUAIRE=1
|
||||||
# NB: noter que pour le moment, cela ne marche pas avec tous les scripts.
|
# NB: noter que pour le moment, cela ne marche pas avec tous les scripts.
|
||||||
# Attention à ne pas envoyer de mails aux adhérents par erreurs !
|
# Attention à ne pas envoyer de mails aux adhérents par erreurs !
|
||||||
export DBG_MAIL=`whoami`+test@crans.org
|
export DBG_MAIL=`whoami`+test@crans.org
|
||||||
|
|
||||||
|
# Serveur freeradius de test ?
|
||||||
|
export DBG_FREERADIUS=1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue