systeminformation/lib/dockerSocket.js
2016-11-02 12:25:06 +01:00

107 lines
2.6 KiB
JavaScript

'use strict';
const net = require('net');
class DockerSocket {
listContainers(all, callback) {
try {
let socket = net.createConnection({path: '/var/run/docker.sock'});
let alldata = '';
socket.on("connect", () => {
socket.write('GET http:/containers/json' + (all ? "?all=1" : "") + ' HTTP/1.0\r\n\r\n');
});
socket.on("data", data => {
alldata = alldata + data.toString();
});
socket.on("error", () => {
socket = false;
callback({});
});
socket.on('end', () => {
let startbody = alldata.indexOf("\r\n\r\n");
alldata = alldata.substring(startbody, 100000).replace(/[\n\r]/g, '');
socket = false;
callback(JSON.parse(alldata));
});
} catch (err) {
callback({});
}
}
getStats(id, callback) {
id = id || '';
if (id) {
try {
let socket = net.createConnection({path: '/var/run/docker.sock'});
let alldata = '';
socket.on("connect", () => {
socket.write('GET http:/containers/' + id + '/stats?stream=0 HTTP/1.0\r\n\r\n');
});
socket.on("data", data => {
alldata = alldata + data.toString();
});
socket.on("error", () => {
socket = false;
callback({});
});
socket.on('end', () => {
let startbody = alldata.indexOf("\r\n\r\n");
alldata = alldata.substring(startbody, 100000).replace(/[\n\r]/g, '');
socket = false;
callback(JSON.parse(alldata));
});
} catch (err) {
callback({});
}
} else {
callback({});
}
}
getProcesses(id, callback) {
id = id || '';
if (id) {
try {
let socket = net.createConnection({path: '/var/run/docker.sock'});
let alldata = '';
socket.on("connect", () => {
socket.write('GET http:/containers/' + id + '/top?ps_args=-opid,ppid,pgid,vsz,time,etime,nice,ruser,user,rgroup,group,stat,rss,args HTTP/1.0\r\n\r\n');
});
socket.on("data", data => {
alldata = alldata + data.toString();
});
socket.on("error", () => {
socket = false;
callback({});
});
socket.on('end', () => {
let startbody = alldata.indexOf("\r\n\r\n");
alldata = alldata.substring(startbody, 100000).replace(/[\n\r]/g, '');
socket = false;
callback(JSON.parse(alldata));
});
} catch (err) {
callback({});
}
} else {
callback({});
}
}
}
module.exports = DockerSocket;