infrastructure/machines/nixos/vault01/k-radius/packages/02-request-dgsi-vlan.patch
catvayor d149c4e323
All checks were successful
Check meta / check_meta (pull_request) Successful in 16s
Check meta / check_dns (pull_request) Successful in 17s
Check workflows / check_workflows (pull_request) Successful in 18s
Run pre-commit on all files / pre-commit (push) Successful in 27s
Build all the nodes / ap01 (pull_request) Successful in 34s
Build all the nodes / netaccess01 (pull_request) Successful in 21s
Build all the nodes / netcore01 (pull_request) Successful in 21s
Build all the nodes / netcore02 (pull_request) Successful in 23s
Build all the nodes / bridge01 (pull_request) Successful in 54s
Build all the nodes / build01 (pull_request) Successful in 56s
Build all the nodes / cof02 (pull_request) Successful in 59s
Build all the nodes / geo02 (pull_request) Successful in 57s
Build all the nodes / geo01 (pull_request) Successful in 58s
Build the shell / build-shell (pull_request) Successful in 31s
Build all the nodes / hypervisor01 (pull_request) Successful in 1m6s
Build all the nodes / hypervisor03 (pull_request) Successful in 1m3s
Build all the nodes / hypervisor02 (pull_request) Successful in 1m3s
Run pre-commit on all files / pre-commit (pull_request) Successful in 28s
Build all the nodes / rescue01 (pull_request) Successful in 1m8s
Build all the nodes / tower01 (pull_request) Successful in 1m0s
Build all the nodes / storage01 (pull_request) Successful in 1m6s
Build all the nodes / compute01 (pull_request) Successful in 1m38s
Build all the nodes / web02 (pull_request) Successful in 1m6s
Build all the nodes / web03 (pull_request) Successful in 1m4s
Build all the nodes / vault01 (pull_request) Successful in 1m32s
Build all the nodes / web01 (pull_request) Successful in 1m37s
feat(vault01/radius): ask dgsi for vlan id
2025-03-25 13:22:30 +01:00

44 lines
1.4 KiB
Diff

diff --git a/kanidm/radius/__init__.py b/kanidm/radius/__init__.py
index b44a6ff50..60c7efe7c 100644
--- a/kanidm/radius/__init__.py
+++ b/kanidm/radius/__init__.py
@@ -1,12 +1,14 @@
""" kanidm RADIUS module """
import asyncio
from aiohttp.client_exceptions import ClientConnectorError
+import base64
from functools import reduce
import json
import logging
import os
from pathlib import Path
import sys
+import requests
from typing import Any, Dict, Optional, Union
from kanidm.exceptions import NoMatchingEntries
@@ -146,13 +148,14 @@ def authorize(
logging.info("User %s doesn't have a group from the required list.", name)
return radiusd.RLM_MODULE_REJECT
- # look up them in config for group vlan if possible.
- # TODO: work out the typing on this, WTF.
- uservlan: int = reduce(
- check_vlan,
- tok.groups,
- kanidm_client.config.radius_default_vlan,
- )
+ dgsi_info = requests.get(kanidm_client.config.dgsi_endpoint + "/" + name, headers={
+ "Authorization": "Basic " + kanidm_client.config.dgsi_token
+ })
+ if dgsi_info.status != 200:
+ logging.error("dgsi: error getting vlan of %s : %s.", name, dgsi_info.status)
+ return radiusd.RLM_MODULE_FAIL
+ else:
+ uservlan: int = int(dgsi_info.text)
if uservlan == int(0):
logging.info("Invalid uservlan of 0")
--
2.48.1