123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- 'use strict';
- // @ts-check
- // ==================================================================================
- // dockerSockets.js
- // ----------------------------------------------------------------------------------
- // Description: System Information - library
- // for Node.js
- // Copyright: (c) 2014 - 2020
- // Author: Sebastian Hildebrandt
- // ----------------------------------------------------------------------------------
- // License: MIT
- // ==================================================================================
- // 13. DockerSockets
- // ----------------------------------------------------------------------------------
-
- const net = require('net');
- const isWin = require('os').type() === 'Windows_NT';
- const socketPath = isWin ? '//./pipe/docker_engine' : '/var/run/docker.sock';
-
- class DockerSocket {
-
- getInfo(callback) {
- try {
-
- let socket = net.createConnection({ path: socketPath });
- let alldata = '';
- let data;
-
- socket.on('connect', () => {
- socket.write('GET http:/info 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 + 4);
- socket = false;
- try {
- data = JSON.parse(alldata);
- callback(data);
- } catch (err) {
- callback({});
- }
- });
- } catch (err) {
- callback({});
- }
- }
-
- listContainers(all, callback) {
- try {
-
- let socket = net.createConnection({ path: socketPath });
- let alldata = '';
- let data;
-
- 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 + 4);
- socket = false;
- try {
- data = JSON.parse(alldata);
- callback(data);
- } catch (err) {
- callback({});
- }
- });
- } catch (err) {
- callback({});
- }
- }
-
- getStats(id, callback) {
- id = id || '';
- if (id) {
- try {
- let socket = net.createConnection({ path: socketPath });
- let alldata = '';
- let data;
-
- 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 + 4);
- socket = false;
- try {
- data = JSON.parse(alldata);
- callback(data);
- } catch (err) {
- callback({});
- }
- });
- } catch (err) {
- callback({});
- }
- } else {
- callback({});
- }
- }
-
- getInspect(id, callback) {
- id = id || '';
- if (id) {
- try {
- let socket = net.createConnection({ path: socketPath });
- let alldata = '';
- let data;
-
- socket.on('connect', () => {
- socket.write('GET http:/containers/' + id + '/json?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 + 4);
- socket = false;
- try {
- data = JSON.parse(alldata);
- callback(data);
- } catch (err) {
- callback({});
- }
- });
- } catch (err) {
- callback({});
- }
- } else {
- callback({});
- }
- }
-
- getProcesses(id, callback) {
- id = id || '';
- if (id) {
- try {
- let socket = net.createConnection({ path: socketPath });
- let alldata = '';
- let data;
-
- 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 + 4);
- socket = false;
- try {
- data = JSON.parse(alldata);
- callback(data);
- } catch (err) {
- callback({});
- }
- });
- } catch (err) {
- callback({});
- }
- } else {
- callback({});
- }
- }
- }
-
- module.exports = DockerSocket;
|