diff --git a/package.json b/package.json index 598161a..b1becda 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "morgan": "~1.6.1", "serve-favicon": "~2.3.0", "node.extend": "~1.1.5", - "redis": "~2.4.2" + "redis": "~2.4.2", + "request": "~2.69.0" } } diff --git a/routes/api.js b/routes/api.js index cc9b3b8..ece605d 100644 --- a/routes/api.js +++ b/routes/api.js @@ -5,6 +5,7 @@ var router = express.Router(); var extend = require('node.extend'); var redis = require("redis"); var client = redis.createClient(); +var request = require('request'); var lxc = require('../lxc'); router.get('/start/:name', function(req, res, next){ @@ -83,4 +84,26 @@ router.get('/list', function(req, res, next) { }); }); +router.get('/run/:ip?', function(req, res, next){ + var runner = function(res, req, ip){ + request.post({url:'http://'+ip, body:req.post}, function(error, response, body){ + body = JSON.parse(body); + body['ip'] = ip.replace('10.0.', '') + return res.json(body) + }) + }; + + + if(req.params.ip){ + var ip = '10.0.'+ req.params.ip; + return runner(res, req, ip); + }else{ + var name = 'u1-'+(Math.random()*100).toString().replace('.','') + lxc.startEphemeral(name, 'u1', function(data){ + return runner(res, req, data.ip); + }); + } + +}); + module.exports = router;