mirror of
https://github.com/Ylianst/MeshAgent
synced 2026-01-01 16:13:53 +00:00
First commit of MeshAgent for MeshCentral
This commit is contained in:
88
Debug/dgramtest.js
Normal file
88
Debug/dgramtest.js
Normal file
@@ -0,0 +1,88 @@
|
||||
var dgram = require('dgram');
|
||||
var os = require('os');
|
||||
var interfaces = os.networkInterfaces();
|
||||
var broadcastSockets = {};
|
||||
var multicastSockets = {};
|
||||
var httpHeaders = require('http-headers');
|
||||
|
||||
for (var adapter in interfaces)
|
||||
{
|
||||
if (interfaces.hasOwnProperty(adapter))
|
||||
{
|
||||
for (var i = 0 ; i < interfaces[adapter].length; ++i)
|
||||
{
|
||||
var addr = interfaces[adapter][i];
|
||||
|
||||
multicastSockets[i] = dgram.createSocket({ type: (addr.family == "IPv4" ? "udp4" : "udp6") });
|
||||
//multicastSockets[i].bind({ address: addr.address, port:1900, exclusive:false});
|
||||
multicastSockets[i].bind({ address: addr.address, exclusive: false });
|
||||
|
||||
if(addr.family == "IPv4")
|
||||
{
|
||||
//multicastSockets[i].addMembership("239.255.255.250");
|
||||
//multicastSockets[i].setMulticastLoopback(true);
|
||||
multicastSockets[i].once('message', OnMulticastMessage);
|
||||
|
||||
multicastSockets[i].send("M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nST: upnp:rootdevice\r\nMAN: \"ssdp:discover\"\r\nMX: 4\r\nContent-Length: 0\r\n\r\n", 1900, "239.255.255.250");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function OnMulticastMessage(msg, rinfo)
|
||||
{
|
||||
console.log("Received " + rinfo.size + " bytes from " + rinfo.address + ":" + rinfo.port);
|
||||
var packet = httpHeaders(msg);
|
||||
|
||||
if (packet.hasOwnProperty('statusCode'))
|
||||
{
|
||||
console.log("Status (" + packet.statusCode + ") " + packet.statusMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log(packet.method + " " + packet.url);
|
||||
}
|
||||
for (var header in packet.headers) {
|
||||
console.log(" " + header + ":" + packet.headers[header]);
|
||||
}
|
||||
}
|
||||
|
||||
function SendWakeOnLan()
|
||||
{
|
||||
var magic = new Buffer(102);
|
||||
for (var x = 0; x < 6; ++x)
|
||||
{
|
||||
magic[x] = 0xFF;
|
||||
}
|
||||
for (var x = 1; x <= 16; ++x) {
|
||||
magic[(x * 6)] = 0xB8;
|
||||
magic[(x * 6) + 1] = 0xAE;
|
||||
magic[(x * 6) + 2] = 0xED;
|
||||
magic[(x * 6) + 3] = 0x74;
|
||||
magic[(x * 6) + 4] = 0xAB;
|
||||
magic[(x * 6) + 5] = 0xC3;
|
||||
}
|
||||
|
||||
for (var adapter in interfaces) {
|
||||
if (interfaces.hasOwnProperty(adapter)) {
|
||||
console.log(adapter + " => ");
|
||||
for (var i = 0 ; i < interfaces[adapter].length; ++i) {
|
||||
var addr = interfaces[adapter][i];
|
||||
|
||||
console.log(" " + addr.family + " => " + addr.address + " [" + addr.mac + "]");
|
||||
if (addr.hasOwnProperty('netmask')) { console.log(" Netmask = " + addr.netmask); }
|
||||
|
||||
broadcastSockets[i] = dgram.createSocket({ type: (addr.family == "IPv4" ? "udp4" : "udp6") });
|
||||
broadcastSockets[i].bind({ address: addr.address });
|
||||
broadcastSockets[i].setBroadcast(true);
|
||||
|
||||
if (addr.family == "IPv4") {
|
||||
broadcastSockets[i].send(magic, 7, "255.255.255.255");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user