Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
re2o
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nounous
re2o
Commits
b22cda43
Commit
b22cda43
authored
Nov 19, 2017
by
Gabriel Detraz
Committed by
root
Nov 19, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Doc + si nas-innconnu, on traite quand même la requète
parent
70f5d556
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
11 deletions
+31
-11
freeradius_utils/auth.py
freeradius_utils/auth.py
+31
-11
No files found.
freeradius_utils/auth.py
View file @
b22cda43
...
...
@@ -139,20 +139,17 @@ def instantiate(*_):
@
radius_event
def
authorize
(
data
):
"""On test si on connait le calling nas:
- si le nas est inconnue, on suppose que c'est une requète 802.1X, on la traite
- si le nas est connu, on applique 802.1X si le mode est activé
- si le nas est connu et si il s'agit d'un nas auth par mac, on repond accept en authorize
"""
# Pour les requetes proxifiees, on split
nas
=
data
.
get
(
'NAS-IP-Address'
,
data
.
get
(
'NAS-Identifier'
,
None
))
nas_instance
=
find_nas_from_request
(
nas
)
# Toutes les reuquètes non proxifiées
if
nas
!=
'127.0.0.1'
:
if
not
nas_instance
:
logger
.
info
(
u
"Nas inconnu"
)
return
radiusd
.
RLM_MODULE_REJECT
if
nas_instance
:
nas_type
=
Nas
.
objects
.
filter
(
nas_type
=
nas_instance
.
type
).
first
()
if
not
nas_type
:
logger
.
info
(
u
"Type de nas non enregistré dans la bdd!"
.
encode
(
'utf-8'
))
return
radiusd
.
RLM_MODULE_REJECT
else
:
nas_type
=
None
if
not
nas_type
or
nas_type
.
port_access_mode
==
'802.1X'
:
user
=
data
.
get
(
'User-Name'
,
''
).
decode
(
'utf-8'
,
errors
=
'replace'
)
user
=
user
.
split
(
'@'
,
1
)[
0
]
...
...
@@ -184,8 +181,8 @@ def post_auth(data):
nas
=
data
.
get
(
'NAS-IP-Address'
,
data
.
get
(
'NAS-Identifier'
,
None
))
nas_instance
=
find_nas_from_request
(
nas
)
# Toutes les reuquètes non proxifiées
if
n
as
==
'127.0.0.1'
:
logger
.
info
(
u
"Requète proxifiée"
.
encode
(
'utf-8'
))
if
n
ot
nas_instance
:
logger
.
info
(
u
"Requète proxifiée
, nas inconnu
"
.
encode
(
'utf-8'
))
return
radiusd
.
RLM_MODULE_OK
nas_type
=
Nas
.
objects
.
filter
(
nas_type
=
nas_instance
.
type
).
first
()
if
not
nas_type
:
...
...
@@ -267,14 +264,37 @@ def check_user_machine_and_register(nas_type, username, mac_address):
def
decide_vlan_and_register_switch
(
nas
,
nas_type
,
port_number
,
mac_address
):
"""Fonction de placement vlan pour un switch en radius filaire auth par mac.
Plusieurs modes :
- nas inconnu, port inconnu : on place sur le vlan par defaut VLAN_OK
- pas de radius sur le port : VLAN_OK
- bloq : VLAN_NOK
- force : placement sur le vlan indiqué dans la bdd
- mode strict :
- pas de chambre associée : VLAN_NOK
- pas d'utilisateur dans la chambre : VLAN_NOK
- cotisation non à jour : VLAN_NOK
- sinon passe à common (ci-dessous)
- mode common :
- interface connue (macaddress):
- utilisateur proprio non cotisant ou banni : VLAN_NOK
- user à jour : VLAN_OK
- interface inconnue :
- register mac désactivé : VLAN_NOK
- register mac activé :
- dans la chambre associé au port, pas d'user ou non à jour : VLAN_NOK
- user à jour, autocapture de la mac et VLAN_OK
"""
# Get port from switch and port number
extra_log
=
""
# Si le NAS est inconnu, on place sur le vlan defaut
if
not
nas
:
return
(
'?'
,
u
'Nas inconnu'
,
VLAN_OK
)
sw_name
=
str
(
nas
)
port
=
Port
.
objects
.
filter
(
switch
=
Switch
.
objects
.
filter
(
switch_interface
=
nas
),
port
=
port_number
)
#Si le port est inconnu, on place sur le vlan defaut
if
not
port
:
return
(
sw_name
,
u
'Port inconnu'
,
VLAN_OK
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment