import radius from 'radius' import { RadiusServer } from '@coreid/radius-server' import RadiusClient from '../../models/radius/Client.model.js' import CoreIDUserPasswordPacketHandler from './CoreIDUserPasswordPacketHandler.mjs' export default class CoreIDRadiusServer extends RadiusServer { // constructor(options) { // super(options) // this.packetHandler.packetHandlers.pop() // this.packetHandler.packetHandlers.push(new CoreIDUserPasswordPacketHandler(options.authentication, this.logger)) // console.log(this.packetHandler.packetHandlers) // } async decodeMessage(msg) { const clients = await RadiusClient.find({ active: true }) for ( const client of clients ) { try { const packet = radius.decode({ packet: msg, secret: client.secret }) packet.secret = client.secret return packet } catch (e) { console.error(e) } } throw new Error('Unable to determine client to decode RADIUS packet: is the client active?') } }