diff --git a/examples/forge-localdb-server.js b/examples/forge-localdb-server.js index 7280ef1..f5bdf4d 100644 --- a/examples/forge-localdb-server.js +++ b/examples/forge-localdb-server.js @@ -1,6 +1,6 @@ #!/usr/bin/env node -var forge = require('./lib/forge'); +var forge = require('../lib/forge'); var localdb = require('forge-localdb'); var store = new localdb({ @@ -27,4 +27,3 @@ var server = new forge({ store.remove_lease(mac_addr, cb); }, host: '192.168.119.1' }); - diff --git a/lib/dhcpd.js b/lib/dhcpd.js index 669c6c1..52a6ed9 100644 --- a/lib/dhcpd.js +++ b/lib/dhcpd.js @@ -303,8 +303,8 @@ dhcpd.prototype.release = function release (pkt) { // without a lease, but lets double check if(cur_request && cur_request.offer){ _clean_request(pkt.chaddr); + this.remove_lease(pkt.chaddr, function(){}); } - self.remove_lease(pkt.chaddr, function(){}); }; dhcpd.prototype.inform = function inform (pkt) { diff --git a/lib/forge.js b/lib/forge.js index 93c84a5..eaab074 100644 --- a/lib/forge.js +++ b/lib/forge.js @@ -1,8 +1,9 @@ var dhcpd = require('./dhcpd'); -var tftpd = require('tftp'); +var tftp = require('tftp'); var http = require('http'); var router = require('./routes'); var url = require('url'); +var fs = require('fs'); function Forge (opts) { var self = this; self.initialize_tftpd(); @@ -11,12 +12,21 @@ function Forge (opts) { } Forge.prototype.initialize_tftpd = function initialize_tftpd (opts) { - var self = this; - self.tftpd = tftpd.createServer({ + this.tftpd = tftp.createServer({ host: '0.0.0.0', port: 69, root: './static/', denyPUT: true + }, function (req, res){ + if (req.method === "GET") { + var self = this; + fs.stat(this.root + req.file, function(err, stats) { + if (err) + req.abort(tftp.ENOENT); + else + self.requestListener(req, res); + }); + } }).listen(); };