You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
43 lines
1.1 KiB
import { GoogleLDAPAuth } from './auth/google-ldap';
|
|
import { UDPServer } from './server/UDPServer';
|
|
import { RadiusService } from './radius/RadiusService';
|
|
|
|
import * as config from '../config';
|
|
|
|
console.log(`Listener Port: ${config.port || 1812}`);
|
|
console.log(`RADIUS Secret: ${config.secret}`);
|
|
console.log(`Auth Mode: ${config.authentication}`);
|
|
|
|
// const ldap = new LDAPAuth({url: 'ldap://ldap.google.com', base: 'dc=hokify,dc=com', uid: 'uid', tlsOptions});
|
|
|
|
const ldap = new GoogleLDAPAuth(
|
|
config.authenticationOptions.url,
|
|
config.authenticationOptions.base
|
|
);
|
|
|
|
const server = new UDPServer(config.port);
|
|
const radiusService = new RadiusService(config.secret, ldap);
|
|
|
|
(async () => {
|
|
server.on('message', async (msg, rinfo) => {
|
|
const response = await radiusService.handleMessage(msg);
|
|
|
|
if (response) {
|
|
server.sendToClient(
|
|
response.data,
|
|
rinfo.port,
|
|
rinfo.address,
|
|
(err, _bytes) => {
|
|
if (err) {
|
|
console.log('Error sending response to ', rinfo);
|
|
}
|
|
},
|
|
response.expectAcknowledgment
|
|
);
|
|
}
|
|
});
|
|
|
|
// start server
|
|
await server.start();
|
|
})();
|