Skip to content

Commit eeef833

Browse files
committed
no message
1 parent 625b83d commit eeef833

File tree

12 files changed

+379
-122
lines changed

12 files changed

+379
-122
lines changed

dist/dhcp/index.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
var args, server, toHexArray;
2-
3-
args = require('../args');
1+
var path, server, toHexArray;
42

53
server = require('./server');
64

5+
path = require('path');
6+
77
toHexArray = function(str) {
88
return str.split('').map(function(d, i) {
99
return str.charCodeAt(i);

dist/dhcp/options.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var Tools, attr, conf, i, opts;
1+
var Tools, attr, conf, i, opts, v;
22

33
Tools = require('./tools');
44

@@ -507,10 +507,11 @@ conf = {};
507507
attr = {};
508508

509509
for (i in opts) {
510-
if (opts[i].config) {
511-
conf[opts[i].config] = parseInt(i, 10);
512-
} else if (opts[i].attr) {
513-
conf[opts[i].config] = parseInt(i, 10);
510+
v = opts[i];
511+
if (v.config) {
512+
conf[v.config] = parseInt(i, 10);
513+
} else if (v.attr) {
514+
conf[v.attr] = parseInt(i, 10);
514515
}
515516
}
516517

dist/dhcp/server.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ Server = (function(superClass) {
302302
};
303303

304304
Server.prototype.sendAck = function(req) {
305-
var ans;
305+
var ans, options;
306306
if (req.options[97] && req.options[55].indexOf(97) === -1) {
307307
req.options[55].push(97);
308308
}
@@ -313,6 +313,9 @@ Server = (function(superClass) {
313313
}
314314
});
315315
}
316+
options = this._getOptions({
317+
53: DHCPACK
318+
}, [1, 3, 51, 54, 6], req.options[55]);
316319
ans = {
317320
op: BOOTREPLY,
318321
htype: 1,
@@ -327,10 +330,8 @@ Server = (function(superClass) {
327330
giaddr: req.giaddr,
328331
chaddr: req.chaddr,
329332
sname: '',
330-
file: '',
331-
options: this._getOptions({
332-
53: DHCPACK
333-
}, [1, 3, 51, 54, 6], req.options[55])
333+
file: req.file,
334+
options: options
334335
};
335336
return this._send(this.config('broadcast'), ans, (function(_this) {
336337
return function() {

dist/index.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var args, ask, dhcpd, httpd, ip, pkg, port;
1+
var args, ask, dhcpd, httpd, ip, pkg, port, tftp;
22

33
pkg = require('../package.json');
44

@@ -16,7 +16,11 @@ httpd = require('./http');
1616

1717
port = require('./get-port');
1818

19-
if (args.dhcponly) {
19+
tftp = require('./tftp');
20+
21+
if (args.tftp) {
22+
tftp(args);
23+
} else if (args.dhcponly) {
2024
dhcpd(ip, args.acsurl, args.acspass);
2125
} else {
2226
ask(ip).then(port).then(function(p) {

dist/ips.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var networkInterfaces;
33
networkInterfaces = require('os').networkInterfaces;
44

55
module.exports = function() {
6-
var addr, address, details, family, i, internal, k, len, name, obj, ref, ref1, s, t, v;
6+
var addr, address, base, details, family, i, internal, k, len, name, obj, ref, ref1, s, t, v;
77
addr = [];
88
obj = {};
99
ref = networkInterfaces();
@@ -16,11 +16,14 @@ module.exports = function() {
1616
ref1 = details[i], family = ref1.family, internal = ref1.internal, address = ref1.address;
1717
if (!internal) {
1818
if (!address.startsWith('2001')) {
19-
obj[name][family] = {
19+
if ((base = obj[name])[family] == null) {
20+
base[family] = [];
21+
}
22+
obj[name][family].push({
2023
name: name,
2124
address: address,
2225
family: family
23-
};
26+
});
2427
}
2528
}
2629
}
@@ -30,7 +33,7 @@ module.exports = function() {
3033
if (v.IPv4 != null) {
3134
for (s in v) {
3235
t = v[s];
33-
addr.push(t);
36+
addr.push.apply(addr, t);
3437
}
3538
}
3639
}

dist/ntp/client.js

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
'use strict';
2+
var EventEmitter, NTP, Packet, createSocket,
3+
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
4+
hasProp = {}.hasOwnProperty;
5+
6+
Packet = require('./packet');
7+
8+
createSocket = require('dgram').createSocket;
9+
10+
EventEmitter = require('events').EventEmitter;
11+
12+
NTP = (function(superClass) {
13+
extend(NTP, superClass);
14+
15+
function NTP(options, callback) {
16+
if (typeof options === 'function') {
17+
callback = options;
18+
options = {};
19+
}
20+
Object.assign(this, {
21+
server: '127.0.0.1',
22+
port: 123
23+
}, options);
24+
this.socket = new createSocket('udp4');
25+
if (typeof callback === 'function') {
26+
this.time(callback);
27+
}
28+
}
29+
30+
NTP.prototype.time = function(callback) {
31+
var packet, port, ref, server, timeout;
32+
ref = this, server = ref.server, port = ref.port, timeout = ref.timeout;
33+
packet = NTP.createPacket();
34+
this.socket.send(packet, 0, packet.length, port, server, (function(_this) {
35+
return function(err) {
36+
if (err) {
37+
return callback(err);
38+
}
39+
return _this.socket.once('message', function(data) {
40+
var message;
41+
message = NTP.parse(data);
42+
return callback(err, message);
43+
});
44+
};
45+
})(this));
46+
return this;
47+
};
48+
49+
NTP.time = function(options, callback) {
50+
return new NTP(options, callback);
51+
};
52+
53+
NTP.createPacket = function() {
54+
var packet;
55+
packet = new Packet;
56+
packet.mode = Packet.MODES.CLIENT;
57+
return packet.toBuffer();
58+
};
59+
60+
NTP.parse = function(buffer) {
61+
var T1, T2, T3, T4, message;
62+
message = Packet.parse(buffer);
63+
T1 = message.originateTimestamp;
64+
T2 = message.receiveTimestamp;
65+
T3 = message.transmitTimestamp;
66+
T4 = message.destinationTimestamp;
67+
message.d = T4 - T1 - (T3 - T2);
68+
message.t = (T2 - T1 + T3 - T4) / 2;
69+
return message;
70+
};
71+
72+
return NTP;
73+
74+
})(EventEmitter);
75+
76+
module.exports = NTP;

dist/ntp/index.js

+10-83
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,15 @@
11
'use strict';
2-
var EventEmitter, NTP, Packet, createSocket,
3-
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
4-
hasProp = {}.hasOwnProperty;
2+
var createServer, ntp;
53

6-
Packet = require('./packet');
4+
createServer = require('./server').createServer;
75

8-
createSocket = require('dgram').createSocket;
6+
ntp = createServer(function(message, response) {
7+
console.log('server message:', message);
8+
return response(message);
9+
});
910

10-
EventEmitter = require('events').EventEmitter;
11+
ntp.listen(123, function(err) {
12+
return console.log('ntp server is running at %s', ntp.address().port);
13+
});
1114

12-
NTP = (function(superClass) {
13-
extend(NTP, superClass);
14-
15-
function NTP(options, callback) {
16-
if (typeof options === 'function') {
17-
callback = options;
18-
options = {};
19-
}
20-
Object.assign(this, {
21-
server: 'pool.ntp.org',
22-
port: 123
23-
}, options);
24-
this.socket = new createSocket('udp4');
25-
if (typeof callback === 'function') {
26-
this.time(callback);
27-
}
28-
}
29-
30-
NTP.prototype.time = function(callback) {
31-
var packet, port, ref, server, timeout;
32-
ref = this, server = ref.server, port = ref.port, timeout = ref.timeout;
33-
packet = NTP.createPacket();
34-
this.socket.send(packet, 0, packet.length, port, server, (function(_this) {
35-
return function(err) {
36-
if (err) {
37-
return callback(err);
38-
}
39-
return _this.socket.once('message', function(data) {
40-
var message;
41-
this.socket.close();
42-
message = NTP.parse(data);
43-
return callback(err, message);
44-
});
45-
};
46-
})(this));
47-
return this;
48-
};
49-
50-
NTP.time = function(options, callback) {
51-
return new NTP(options, callback);
52-
};
53-
54-
NTP.createPacket = function() {
55-
var packet;
56-
packet = new Packet;
57-
packet.mode = Packet.MODES.CLIENT;
58-
packet.originateTimestamp = Date.now();
59-
return packet.toBuffer();
60-
};
61-
62-
NTP.parse = function(buffer) {
63-
var T1, T2, T3, T4, message;
64-
message = Packet.parse(buffer);
65-
message.destinationTimestamp = Date.now();
66-
message.time = new Date(message.transmitTimestamp);
67-
T1 = message.originateTimestamp;
68-
T2 = message.receiveTimestamp;
69-
T3 = message.transmitTimestamp;
70-
T4 = message.destinationTimestamp;
71-
message.d = T4 - T1 - (T3 - T2);
72-
message.t = (T2 - T1 + T3 - T4) / 2;
73-
return message;
74-
};
75-
76-
return NTP;
77-
78-
})(EventEmitter);
79-
80-
exports.Client = NTP;
81-
82-
exports.Server = require('./server');
83-
84-
exports.createServer = function(options) {
85-
return new exports.Server(options);
86-
};
87-
88-
module.exports = NTP;
15+
module.exports = ntp;

dist/ntp/packet.js

+22-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var Packet, SEVENTY_YEARS, assert, toMsecs, writeMsecs;
1+
var Packet, SEVENTY_YEARS, after, assert, before, toMsecs, writeMsecs;
22

33
assert = require('assert');
44

@@ -23,7 +23,7 @@ toMsecs = function(buffer, offset) {
2323

2424
writeMsecs = function(buffer, offset, ts) {
2525
var fraction, seconds;
26-
seconds = Math.floor(ts / 1000) + SEVENTY_YEARS;
26+
seconds = Math.floor(ts / 1000) + SEVENTY_YEARS - SEVENTY_YEARS;
2727
fraction = Math.round(ts % 1000 / 1000 * Math.pow(2, 32));
2828
buffer[offset + 0] = (seconds & 0xFF000000) >> 24;
2929
buffer[offset + 1] = (seconds & 0x00FF0000) >> 16;
@@ -36,6 +36,26 @@ writeMsecs = function(buffer, offset, ts) {
3636
return buffer;
3737
};
3838

39+
before = function(val) {
40+
var value;
41+
value = parseInt(val.toString().split('.')[0], 10);
42+
if (value) {
43+
return value;
44+
} else {
45+
return 0;
46+
}
47+
};
48+
49+
after = function(val) {
50+
var value;
51+
value = parseInt(val.toString().split('.')[1], 10);
52+
if (value) {
53+
return value;
54+
} else {
55+
return 0;
56+
}
57+
};
58+
3959
Packet = (function() {
4060
Packet.MODES = {
4161
CLIENT: 3,

dist/ntp/server.js

+14-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ Packet = require('./packet');
1212
NTPServer = (function(superClass) {
1313
extend(NTPServer, superClass);
1414

15+
NTPServer.createServer = function(options) {
16+
return new NTPServer(options);
17+
};
18+
1519
function NTPServer(options, onRequest) {
1620
NTPServer.__super__.constructor.call(this);
1721
if (typeof options === 'function') {
@@ -39,19 +43,27 @@ NTPServer = (function(superClass) {
3943
};
4044

4145
NTPServer.prototype.send = function(rinfo, message, callback) {
46+
if (callback == null) {
47+
callback = function() {};
48+
}
4249
if (message instanceof Packet) {
4350
message.mode = Packet.MODES.SERVER;
4451
message = message.toBuffer();
4552
}
53+
console.log('response', message, 0, message.length, rinfo.port, rinfo.address);
54+
this.socket.send(message, 0, message.length, rinfo.port, rinfo.address);
4655
this.socket.send(message, rinfo.port, rinfo.server, callback);
4756
return this;
4857
};
4958

5059
NTPServer.prototype.parse = function(message, rinfo) {
5160
var packet;
5261
packet = Packet.parse(message);
53-
packet.receiveTimestamp = Date.now();
54-
this.emit('request', packet, this.send.bind(this, rinfo));
62+
this.send(rinfo, packet, function(err) {
63+
if (err) {
64+
return console.error(err);
65+
}
66+
});
5567
return this;
5668
};
5769

0 commit comments

Comments
 (0)