From a009841d5d2f3de1ab89cd14b06495c7fff5b6f3 Mon Sep 17 00:00:00 2001 From: Mikael Puittinen Date: Wed, 16 Dec 2015 19:17:36 +0200 Subject: [PATCH 1/2] Add support for https --- README.md | 9 +++++++++ gulpfile.js | 26 ++++++++++++++++++++------ package.json | 7 ++++--- server/index.js | 19 ++++++++++++++++--- 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index f42ee69..bcdf61b 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,15 @@ set 'NODE_ENV' to something else than 'production' or install the npm dependencies with a '--debug' flag. All the development dependencies are moved into devDependencies to avoid slow installs of the actual released software. +## Configuring + +The following options are configurable in the package.json file (in config): + + port: the port used to start the server + hostname: the interface listened by the server + bucket [optional] : the S3 bucket used to deploy the application + https : set to true to enable https on the server (default http) + ### Debug and Release builds > npm install --debug # to force development dependencies diff --git a/gulpfile.js b/gulpfile.js index 0bad704..1832845 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -29,11 +29,12 @@ var config = { hostname: process.env.HOSTNAME || pkg.config.hostname, debug: Boolean($.util.env.debug) || (process.env.NODE_ENV === 'development'), production: Boolean($.util.env.production) || (process.env.NODE_ENV === 'production'), - bucket: pkg.config.bucket + bucket: pkg.config.bucket, + protocol: (pkg.config.https === true) ? 'https' : 'http' }; // Test server URL (shared with server.js) -var url = ['http://', config.hostname + ':' + config.port, '/'].join(''); +var url = [config.protocol + '://', config.hostname + ':' + config.port, '/'].join(''); // Global vars used across the test tasks var testServerCmdAndArgs = pkg.scripts.start.split(/\s/); @@ -55,7 +56,10 @@ var testServer = exec({ checkHTTPResponse: false }, log: $.util.log, - stopSignal: 'SIGTERM' + stopSignal: 'SIGTERM', + httpOptions: { + rejectUnauthorized: false + } }); // The last test run result @@ -232,11 +236,21 @@ gulp.task('watch', ['build'], function() { gulp.watch(['dist/**/*.js', 'dist/**/*.css'], integrationTasks); $.util.log('Initialise BrowserSync on port 8081'); - browserSync.init({ + + var options = { files: 'dist/**/*', - proxy: [config.hostname, config.port].join(':'), + proxy: { + target: config.protocol + '://' + config.hostname + ':' + config.port + }, port: 8081 - }); + }; + if (config.protocol === 'https') { + options.https = { + key: 'server/key.pem', + cert: 'server/cert.pem' + }; + } + browserSync.init(options); }); }); diff --git a/package.json b/package.json index cbc70b6..8b1fbd5 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "git", "url": "https://github.com/SC5/gulp-bobrsass-boilerplate.git" }, - "version": "0.5.0", + "version": "0.5.1", "engines": { "node": ">=0.10.10", "npm": ">=1.2.15" @@ -19,7 +19,7 @@ "browser-sync": "^2.7.13", "del": "^1.1.1", "event-stream": "^3.2.1", - "exec-wait": "^0.0.3", + "exec-wait": "^0.0.5", "git-hooks": "1.0.0-rc.1", "gulp": "^3.8.10", "gulp-awspublish": "^3.0.0", @@ -53,7 +53,8 @@ "config": { "port": 8080, "hostname": "localhost", - "bucket": "" + "bucket": "", + "https": true }, "scripts": { "build": "gulp build", diff --git a/server/index.js b/server/index.js index 45fdecb..d4c6d81 100644 --- a/server/index.js +++ b/server/index.js @@ -1,11 +1,14 @@ var express = require('express'), app = express(), + https = require('https'), + fs = require('fs'), url = require('url'), pkg = require('../package.json'), config = { version: pkg.version, port: process.env.PORT || pkg.config.port, - hostname: process.env.HOSTNAME || pkg.config.hostname + hostname: process.env.HOSTNAME || pkg.config.hostname, + https: pkg.config.https || false }; // Poor man's rewrite @@ -24,6 +27,16 @@ app.use(function(req, res, next) { next(); }); app.use(express.static(__dirname + '/../dist')); -app.listen(config.port); -console.log('Stub server running on port ' + config.port); +var proto = 'http'; +if (config.https) { + https.createServer({ + key: fs.readFileSync('server/key.pem'), + cert: fs.readFileSync('server/cert.pem') + }, app).listen(config.port); + proto='https'; +} else { + app.listen(config.port); +} + +console.log('Stub server (' + proto + ') running on port ' + config.port); From 3f8b716d1dd7009e93bf2d56d4d04eb37fa9ae38 Mon Sep 17 00:00:00 2001 From: Mikael Puittinen Date: Wed, 16 Dec 2015 19:18:10 +0200 Subject: [PATCH 2/2] Add support for https --- server/cert.pem | 24 ++++++++++++++++++++++++ server/key.pem | 27 +++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 server/cert.pem create mode 100644 server/key.pem diff --git a/server/cert.pem b/server/cert.pem new file mode 100644 index 0000000..d82f4ce --- /dev/null +++ b/server/cert.pem @@ -0,0 +1,24 @@ +-----BEGIN CERTIFICATE----- +MIIEGzCCAwOgAwIBAgIJAJrso4p7QpGnMA0GCSqGSIb3DQEBBQUAMGYxCzAJBgNV +BAYTAkZJMQowCAYDVQQIEwEtMREwDwYDVQQHEwhIZWxzaW5raTEWMBQGA1UEChMN +U0M1IE9ubGluZSBPeTEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxCjAIBgNVBAMUASow +HhcNMTUxMjA0MTI0MDA0WhcNMjUxMjAxMTI0MDA0WjBmMQswCQYDVQQGEwJGSTEK +MAgGA1UECBMBLTERMA8GA1UEBxMISGVsc2lua2kxFjAUBgNVBAoTDVNDNSBPbmxp +bmUgT3kxFDASBgNVBAsTC0RldmVsb3BtZW50MQowCAYDVQQDFAEqMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4cpP9zSyGZzK81Bw5V347thaKTBu1lbc +vE7k8A2N5GYJkOLjJ1r1iLB9z91Y8zeH0o1FIilDkqaqIKtXdJOIhubSPPVVetnK +PuIXYXQTrsubxcYj7Iv02foFpg6BCW0/yUqiryVwMQTEn1mNnDWtLDlO4ANPqxcd +f9T/+VmX1Gri1NLqtsCLEZF+BtaQhuOmU+mzSV6cIV86F5p1NXsnmEe699LTBW4Y +pTWdjmO6jW0SjyQZ28D/JP4fzIpt7bcp6qFmeI+bt7SzVpiQfYOBjN4jpO32Ohj3 +ugS0Xt+JPN4o8vtRzXlpIaMtZUvMmUadifiiJrha2Y9+u/hMQdBsGwIDAQABo4HL +MIHIMB0GA1UdDgQWBBTUGqumEdzUfGdpl9+roGIYMP+t3DCBmAYDVR0jBIGQMIGN +gBTUGqumEdzUfGdpl9+roGIYMP+t3KFqpGgwZjELMAkGA1UEBhMCRkkxCjAIBgNV +BAgTAS0xETAPBgNVBAcTCEhlbHNpbmtpMRYwFAYDVQQKEw1TQzUgT25saW5lIE95 +MRQwEgYDVQQLEwtEZXZlbG9wbWVudDEKMAgGA1UEAxQBKoIJAJrso4p7QpGnMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBABnLhz4t0clBJvBXkILegsTE +V4dmBaqvO9OcFS5X+KsB57/WL/NmYh2ojAlJ39YTHnw0QcdFBKZrWNfC21OEfkfb +hGtPDzWXY6H1yc73xxLsuwiDobrk1tMHhCeC9qQwHYDMhc8BY0RgYsOGKqlegIlE +nNojkh6QWm9pCy5WJYkOTDvDBg6qkZOnJ1IkyjRrKYiVxNMZeFy/yRa8A2VXZYBe +ldR6oWDxdVlCa2A6G04kj3LgaU6P1B08/a+WZBqIDxLGcCge54uaC4s0P8Uc7LzO +aCS9/HdcYn9+YYT5Hf10buyuOIt8DJkWn841l3i9FJGeiuYt6TlZ0/Xcfp6QAbA= +-----END CERTIFICATE----- diff --git a/server/key.pem b/server/key.pem new file mode 100644 index 0000000..92e4ad0 --- /dev/null +++ b/server/key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA4cpP9zSyGZzK81Bw5V347thaKTBu1lbcvE7k8A2N5GYJkOLj +J1r1iLB9z91Y8zeH0o1FIilDkqaqIKtXdJOIhubSPPVVetnKPuIXYXQTrsubxcYj +7Iv02foFpg6BCW0/yUqiryVwMQTEn1mNnDWtLDlO4ANPqxcdf9T/+VmX1Gri1NLq +tsCLEZF+BtaQhuOmU+mzSV6cIV86F5p1NXsnmEe699LTBW4YpTWdjmO6jW0SjyQZ +28D/JP4fzIpt7bcp6qFmeI+bt7SzVpiQfYOBjN4jpO32Ohj3ugS0Xt+JPN4o8vtR +zXlpIaMtZUvMmUadifiiJrha2Y9+u/hMQdBsGwIDAQABAoIBAFUR2JcXL5Me1Ahg +YmjIwyWaNj4WlWwERh5cyzz2nmNTXn9MPLFzP9dER+KtTvo0DeRyfX2ldmQmjyrH +46d0fpf1F3kIJjCnJeATZyO8jD3rUMFvKdHR2WrXHJG4HT3j/4hjqm+6905AsaQo +JYaZYqmq3eDg3n9jsiWbpuXXr7DD74hmhWKbUmRTeWvbv6NyaD4yhFkX/5oPtFSo +wtTtHC9oijt96fMAfgEHD1dFwQZenR6rYfATLHGBm4XfgEsTvLy4ave0njfm3aYr +ta8eSOXcDIzZcM0pfLWz/flY+i8s1Ma2fJlf2J79s188WYEac8SWYRmhUXWmq+p9 +sB/vziECgYEA9MowYpoDaBSuia19mzhRnD+TAGt/In+AnT6ZpkP7V/AXp8sQxPWc +qyyWzMNt76M5lTdDgpjZOpOfYyKd/srTGo5ntWlCeKYunES6f2Byx3GAKmo7raeo +o7pV5Hgiq6eJW5hsGZVF41w6tm8uEYRkbMYn8ldkV622vzJ+i/zVW3cCgYEA7CFh +kdii4A6zHtJ40ChFh1tZiKdAjSTM69iTvsCQbfI0s9/T9JbSdDcV1VSXPGDFLqjd +ZCy/k7/hEcR5nsJ4fIHJOcnCRbuVtWUggTi6DXZC83ScVAhRH2FsK/Pvtrk2vHrU +2z5AW5t09uO0t/9m7gxTWBlJh5k+3/SJcQBuFX0CgYEAsssrZBmR+2d/xFfPspwE +H9ffiyL5DT2Lt06N838cCjL3VDth2Dp9YBmFW7IyjiHuYSqoSK9TmxFQDZyvQfbr +Ei6JWVu0jWL0EHeysG7F5x7juhc117Tp3Ayxx9pnmHEaRqih7F23WkV3LOEwCONm +ZnylmMB0LgZXwHclLyJQxCkCgYAMkTpAKOeCRUYDPfBwI7SPn60EOOKWoH7Hjp9O +Z7FIKLvlVuRRADXzOXtP/1CNRhk4goRF8JvBoVS5PVu7t13yQnYTPUm5rGIrZVZ1 +ii9cyA6IJoyrbEXlBapcLH91miXvohnyET4bogp3mWbk5BL2WHGXHsFrFhzijoFC +ImO5gQKBgQDW5M/t4PtcLQLDLxfEqWPJOShhxheEe2WMJrh4ZesrFNu1jHLAnYuf +b/y8JzJDu63+pg9oC2bK6lyRqc76zWrVAEDPFfCwXYlYGivkP7mVwhcZFk+q9K0W +7if+TzhJGpvZlksmV6I4yPCUr0qb5ClPE7o9LI6Iw4G4zZV/PYPTmg== +-----END RSA PRIVATE KEY-----