Initial push 0.2.0
This commit is contained in:
63
code/lib/handlers.js
Normal file
63
code/lib/handlers.js
Normal file
@@ -0,0 +1,63 @@
|
||||
const radius = require ('radius');
|
||||
const data = require ('./data.js');
|
||||
|
||||
module.exports = {
|
||||
radius: {
|
||||
authentication: (msg, info, callback) => {
|
||||
try {
|
||||
var decoded = radius.decode ({
|
||||
packet: msg,
|
||||
secret: config.client_secret
|
||||
});
|
||||
if (decoded.code == 'Access-Request') {
|
||||
var username = decoded.attributes['User-Name'];
|
||||
var password = decoded.attributes['User-Password'];
|
||||
var user = data.authUser (username, password);
|
||||
var vlan = false;
|
||||
if (user) {
|
||||
log.write (username + " access granted to VLAN " + user.vlan);
|
||||
code = 'Access-Accept';
|
||||
vlan = user.vlan;
|
||||
}
|
||||
else {
|
||||
if (config.default_vlan_enabled && config.default_vlan_id) {
|
||||
// Permit into default vlan if enabled
|
||||
log.write (username + " unknown. Placing into default VLAN.");
|
||||
code = 'Access-Accept';
|
||||
vlan = config.default_vlan_id;
|
||||
}
|
||||
else {
|
||||
log.write (username + " access denied.");
|
||||
code = 'Access-Reject';
|
||||
}
|
||||
}
|
||||
var response = radius.encode_response ({
|
||||
packet: decoded,
|
||||
code: code,
|
||||
secret: config.client_secret,
|
||||
attributes: {
|
||||
"Tunnel-Medium-Type": 6,
|
||||
"Tunnel-Type": 13,
|
||||
"Tunnel-Private-Group-Id": vlan
|
||||
}
|
||||
});
|
||||
callback (response, null);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
log.write ('Cannot read RADIUS packet');
|
||||
log.write (error);
|
||||
callback (null, "Error. Cannot read RADIUS packet.");
|
||||
}
|
||||
},
|
||||
accounting: (msg, info, callback) => {
|
||||
log.write ('Unsupported RADIUS packet');
|
||||
callback (null, "Error. Unsupported RADIUS packet.");
|
||||
}
|
||||
},
|
||||
user: {
|
||||
create: data.createUser,
|
||||
update: data.updateUser,
|
||||
delete: data.deleteUser
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user