You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
module.exports = function() { |
|
|
|
var module={}; |
|
|
|
module.connection = function(socket) { |
|
|
|
var sys = require('sys'); |
|
var exec = require('child_process').exec; |
|
|
|
console.log("new client"); |
|
|
|
function emit(signal, data, info) { |
|
if (typeof data == 'string') { |
|
console.log("<- signal: "+signal+"("+data+")"); |
|
} else { |
|
console.log("<- signal: "+signal); |
|
} |
|
if (info) console.log(info); |
|
socket.emit(signal, data); |
|
} |
|
|
|
function broadcast(signal, data) { |
|
console.log("<= signal: "+signal); |
|
socket.broadcast.emit(signal, data); |
|
} |
|
|
|
function containerinspect(error, stdout, stderr) { |
|
console.log(error); |
|
if (!error && !stderr) { |
|
var res = {}; |
|
JSON.parse(stdout).forEach(function(c) { |
|
res[c.Id] = c; |
|
}); |
|
emit("containers", res); |
|
} |
|
} |
|
|
|
function containerlist(error, stdout, stderr) { |
|
console.log(error); |
|
console.log("docker inspect "+stdout.trim().replace(/\n/g, " ")); |
|
if (!error && !stderr) |
|
exec("docker inspect "+stdout.trim().replace(/\n/g, " "), |
|
containerinspect); |
|
} |
|
|
|
socket.on("containers", function() { |
|
console.log("-> containers"); |
|
exec("docker ps -aq", |
|
containerlist); |
|
}); |
|
|
|
} |
|
|
|
return module; |
|
}
|
|
|