diff --git a/software/app.js b/software/app.js index bd0d59f..600f9ca 100644 --- a/software/app.js +++ b/software/app.js @@ -5,6 +5,7 @@ var defines = require('./utils/defines'); var cardAuth = require('./auth/cardAuth'); var encoder = require('./utils/ProtocolBinarify'); +var local = require('./utils/LocalServer'); var server = net.createServer(function(c) { //'connection' listener var client = c.remoteAddress + ':' + c.remotePort; logger({ @@ -18,10 +19,27 @@ client: client, reason: 'System', }); + local.removeListener('command', commandListener); }).on('error', function(){ c.end(); + local.removeListener('command', commandListener); }); - + var commandListener = function(command){ + switch(command){ + case defines.commands.doDoorOpen: + case defines.commands.doAlarmOff: + logger({ + event: defines.commands.map[command], + reason: 'root', + }); + c.write(encoder.command(command)); + break; + default: + //Not Allow + break; + } + } + local.on('command', commandListener); c.pipe((new parser).on('packet', function(p){ switch(p.type){ case defines.event: @@ -81,6 +99,9 @@ }); server.listen(config.bindPort, function(){ //'listening' listener logger("Card9 server started"); + local.create(config.sockFile, function(){ + process.setuid("nobody"); + }) }).on('error', function(e){ if(e.code == 'EADDRINUSE'){ logger("Error: Address already in use, exiting...", function(){ diff --git a/software/utils/LocalServer.js b/software/utils/LocalServer.js new file mode 100644 index 0000000..7048ca5 --- /dev/null +++ b/software/utils/LocalServer.js @@ -0,0 +1,15 @@ +var net = require('net'); +var defines = require('./defines'); +var fs = require('fs'); +var server = net.createServer(function(c){ + c.on('data', function(chunk){ + server.emit('command', chunk[0]); + c.end(); + }); +}); +server.create = function(sockFile, callback){ + fs.unlink(sockFile, function(){ + server.listen(sockFile, callback); + }); +}; +module.exports = server; \ No newline at end of file