Skip to content

Commit

Permalink
Adds support for connecting to TLS secured swarm manager
Browse files Browse the repository at this point in the history
  • Loading branch information
sjtw committed Jul 4, 2016
1 parent 6f3b0e7 commit 48b70a2
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 9 deletions.
32 changes: 24 additions & 8 deletions lib/dockerswarm.js
@@ -1,39 +1,55 @@
'use strict';

var request = require('request');

module.exports = function(app){
var DOCKER_HOST=app.get('DOCKER_HOST');
var DOCKER_TLS=app.get('DOCKER_TLS');
var API="http://unix:///var/run/docker.sock:";

if (DOCKER_HOST.indexOf('tcp://') === 0){
DOCKER_HOST=DOCKER_HOST.replace('tcp://','');
API="http://"+DOCKER_HOST;
var requestOptions = {};

if (DOCKER_HOST.indexOf('tcp://') === 0) {
DOCKER_HOST = DOCKER_HOST.replace('tcp://','');
var requestProtocol = DOCKER_TLS ? 'https://' : 'http://';
API = requestProtocol + DOCKER_HOST;
}

if (DOCKER_TLS) {
console.log('Using TLS for communication with swarm manager');
requestOptions.cert=app.get('DOCKER_TLS_CERT');
requestOptions.key=app.get('DOCKER_TLS_KEY');
requestOptions.ca=app.get('DOCKER_TLS_CACERT');
}

//GET INFO
app.get('/api/v1/info',function(req,res){
request.get(API+'/info',function (error, response, body){
app.get('/api/v1/info',function(req,res) {
requestOptions.url = API+'/info';
request.get(requestOptions, function (error, response, body){
res.send(body);
});
});

//GET Version
app.get('/api/v1/version',function(req,res){
request.get(API+'/version',function (error, response, body){
requestOptions.url = API+'/version';
request.get(requestOptions, function (error, response, body){
res.send(body);
});
});

//GET Images
app.get('/api/v1/images',function(req,res){
request.get(API+'/images/json',function (error, response, body){
requestOptions.url = API+'/images/json';
request.get(requestOptions, function (error, response, body){
res.send(body);
});
});

// //GET Containers
app.get('/api/v1/containers',function(req,res){
request.get(API+'/containers/json',function (error, response, body){
requestOptions.url = API+'/containers/json?all=1';
request.get(requestOptions,function (error, response, body){
res.send(body);
});
});
Expand Down
19 changes: 18 additions & 1 deletion server.js
@@ -1,13 +1,30 @@
'use strict';

var express=require('express'),
banner=require('./lib/banner'),
dockerswarm=require('./lib/dockerswarm'),
logger=require('morgan'),
path=require('path'),
fs=require('fs'),
app=express();


app.set('DOCKER_HOST',process.env.DOCKER_HOST);

if (process.env.DOCKER_TLS) {
if (!process.env.DOCKER_TLS_CERT || !process.env.DOCKER_TLS_KEY || !process.env.DOCKER_TLS_CACERT) {
console.log('To connect to a TLS sercured swarm manager ensure the following environment variables are set:');
console.log('DOCKER_TLS_CERT');
console.log('DOCKER_TLS_KEY');
console.log('DOCKER_TLS_CACERT');
process.exit(1);
}
app.set('DOCKER_TLS', true);
let options = {encoding: 'utf-8'};
app.set('DOCKER_TLS_CERT', fs.readFileSync(process.env.DOCKER_TLS_CERT, options));
app.set('DOCKER_TLS_KEY', fs.readFileSync(process.env.DOCKER_TLS_KEY, options));
app.set('DOCKER_TLS_CACERT', fs.readFileSync(process.env.DOCKER_TLS_CACERT, options));
}

app.use(logger('dev'));
app.use(express.static(path.join(__dirname,'app')));

Expand Down

0 comments on commit 48b70a2

Please sign in to comment.