wake_on_lan
Advanced tools
Comparing version 0.0.2 to 0.0.3
{ "name" : "wake_on_lan" | ||
, "version" : "0.0.2" | ||
, "version" : "0.0.3" | ||
, "description" : "generate and send Wake-on-LAN magic packets" | ||
@@ -4,0 +4,0 @@ , "main": "./wake_on_lan.js" |
var dgram = require('dgram') | ||
, net = require('net') | ||
, Buffer = require('buffer').Buffer | ||
; | ||
var num_mac_octets = 6; | ||
var mac_bytes = 6; | ||
exports.createMagicPacket = function(mac) { | ||
var mac_buffer = new Buffer(num_mac_octets) | ||
var mac_buffer = new Buffer(mac_bytes) | ||
, i | ||
; | ||
if (mac.length == 2 * num_mac_octets + (num_mac_octets - 1)) { | ||
if (mac.length == 2 * mac_bytes + (mac_bytes - 1)) { | ||
mac = mac.replace(new RegExp(mac[2], 'g'), ''); | ||
} | ||
if (mac.length != 2 * num_mac_octets || mac.match(/[^a-fA-F0-9]/)) { | ||
if (mac.length != 2 * mac_bytes || mac.match(/[^a-fA-F0-9]/)) { | ||
throw new Error("malformed MAC address '" + mac + "'"); | ||
} | ||
for (i = 0; i < num_mac_octets; ++i) { | ||
for (i = 0; i < mac_bytes; ++i) { | ||
mac_buffer[i] = parseInt(mac.substr(2 * i, 2), 16); | ||
@@ -23,8 +24,8 @@ } | ||
var num_macs = 16 | ||
, buffer = new Buffer((1 + num_macs) * num_mac_octets); | ||
for (i = 0; i < num_mac_octets; ++i) { | ||
, buffer = new Buffer((1 + num_macs) * mac_bytes); | ||
for (i = 0; i < mac_bytes; ++i) { | ||
buffer[i] = 0xff; | ||
} | ||
for (i = 0; i < num_macs; ++i) { | ||
mac_buffer.copy(buffer, (i + 1) * num_mac_octets, 0, mac_buffer.length) | ||
mac_buffer.copy(buffer, (i + 1) * mac_bytes, 0, mac_buffer.length) | ||
} | ||
@@ -47,3 +48,3 @@ return buffer; | ||
, magic_packet = exports.createMagicPacket(mac) | ||
, socket = dgram.createSocket('udp4') | ||
, socket = dgram.createSocket(net.isIPv6(address) ? 'udp6' : 'udp4') | ||
, i = 0 | ||
@@ -53,4 +54,3 @@ , timer_id | ||
socket.setBroadcast(true); | ||
function handler(error) { | ||
function post_write(error) { | ||
if (error || i === num_packets) { | ||
@@ -68,3 +68,3 @@ socket.close(); | ||
i += 1; | ||
socket.send(magic_packet, 0, magic_packet.length, port, address, handler); | ||
socket.send(magic_packet, 0, magic_packet.length, port, address, post_write); | ||
if (i < num_packets) { | ||
@@ -76,4 +76,7 @@ timer_id = setTimeout(sendWoL, interval); | ||
} | ||
socket.once('listening', function() { | ||
socket.setBroadcast(true) | ||
}) | ||
sendWoL(); | ||
} | ||
Sorry, the diff of this file is not supported yet
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
6256
68
65
2