Initial push 0.2.0

This commit is contained in:
Alex Rennie-Lis
2024-04-05 22:57:26 +01:00
parent 93472ae250
commit 1d8bd0c989
55 changed files with 3515 additions and 0 deletions

81
code/node_modules/radius/examples/auth_client.js generated vendored Normal file
View File

@@ -0,0 +1,81 @@
// Example radius client sending auth packets.
var radius = require('../lib/radius');
var dgram = require('dgram');
var util = require('util');
var secret = 'radius_secret';
var packet_accepted = {
code: "Access-Request",
secret: secret,
identifier: 0,
attributes: [
['NAS-IP-Address', '10.5.5.5'],
['User-Name', 'jlpicard'],
['User-Password', 'beverly123']
]
};
var packet_rejected = {
code: "Access-Request",
secret: secret,
identifier: 1,
attributes: [
['NAS-IP-Address', '10.5.5.5'],
['User-Name', 'egarak'],
['User-Password', 'tailoredfit']
]
};
var packet_wrong_secret = {
code: "Access-Request",
secret: "wrong_secret",
identifier: 2,
attributes: [
['NAS-IP-Address', '10.5.5.5'],
['User-Name', 'riker'],
['User-Password', 'Riker-Omega-3']
]
};
var client = dgram.createSocket("udp4");
client.bind(49001);
var response_count = 0;
client.on('message', function(msg, rinfo) {
var response = radius.decode({packet: msg, secret: secret});
var request = sent_packets[response.identifier];
// although it's a slight hassle to keep track of packets, it's a good idea to verify
// responses to make sure you are talking to a server with the same shared secret
var valid_response = radius.verify_response({
response: msg,
request: request.raw_packet,
secret: request.secret
});
if (valid_response) {
console.log('Got valid response ' + response.code + ' for packet id ' + response.identifier);
// take some action based on response.code
} else {
console.log('WARNING: Got invalid response ' + response.code + ' for packet id ' + response.identifier);
// don't take action since server cannot be trusted (but maybe alert user that shared secret may be incorrect)
}
if (++response_count == 3) {
client.close();
}
});
var sent_packets = {};
[packet_accepted, packet_rejected, packet_wrong_secret].forEach(function(packet) {
var encoded = radius.encode(packet);
sent_packets[packet.identifier] = {
raw_packet: encoded,
secret: packet.secret
};
client.send(encoded, 0, encoded.length, 1812, "localhost");
});

54
code/node_modules/radius/examples/auth_server.js generated vendored Normal file
View File

@@ -0,0 +1,54 @@
// Example radius server doing authentication
var radius = require('../lib/radius');
var dgram = require("dgram");
var secret = 'radius_secret';
var server = dgram.createSocket("udp4");
server.on("message", function (msg, rinfo) {
var code, username, password, packet;
try {
packet = radius.decode({packet: msg, secret: secret});
} catch (e) {
console.log("Failed to decode radius packet, silently dropping:", e);
return;
}
if (packet.code != 'Access-Request') {
console.log('unknown packet type: ', packet.code);
return;
}
username = packet.attributes['User-Name'];
password = packet.attributes['User-Password'];
console.log('Access-Request for ' + username);
if (username == 'jlpicard' && password == 'beverly123') {
code = 'Access-Accept';
} else {
code = 'Access-Reject';
}
var response = radius.encode_response({
packet: packet,
code: code,
secret: secret
});
console.log('Sending ' + code + ' for user ' + username);
server.send(response, 0, response.length, rinfo.port, rinfo.address, function(err, bytes) {
if (err) {
console.log('Error sending response to ', rinfo);
}
});
});
server.on("listening", function () {
var address = server.address();
console.log("radius server listening " +
address.address + ":" + address.port);
});
server.bind(1812);