aboutsummaryrefslogtreecommitdiff
path: root/bin/www
diff options
context:
space:
mode:
Diffstat (limited to 'bin/www')
-rwxr-xr-xbin/www84
1 files changed, 56 insertions, 28 deletions
diff --git a/bin/www b/bin/www
index b5f7653..b508396 100755
--- a/bin/www
+++ b/bin/www
@@ -4,76 +4,104 @@
* Module dependencies.
*/
-var app = require('../app');
-var debug = require('debug')('rooster:server');
-var http = require('http');
+var fs = require('fs')
+var app = require('../app')
+var debug = require('debug')('rooster:server')
+var http = require('http')
+var https = require('https')
+
+var shouldUseHTTPS = true
+try {
+ fs.accessSync('/etc/letsencrypt/live/rooster.hetmml.nl/privkey.pem')
+} catch (e) {
+ shouldUseHTTPS = false
+}
+
+var privateKey = ''
+var certificate = ''
+var credentials = {}
+
+if (shouldUseHTTPS) {
+ privateKey = fs.readFileSync('/etc/letsencrypt/live/rooster.hetmml.nl/privkey.pem', 'utf8')
+ certificate = fs.readFileSync('/etc/letsencrypt/live/rooster.hetmml.nl/cert.pem', 'utf8')
+ credentials = {key: privateKey, cert: certificate}
+}
/**
* Get port from environment and store in Express.
*/
-var port = normalizePort(process.env.PORT || '3000');
-app.set('port', port);
+var port = normalizePort(process.env.PORT || '3000')
+var httpsPort
+if (shouldUseHTTPS) httpsPort = normalizePort(process.env.PORT_HTTPS || '3001')
+app.set('port', port)
/**
* Create HTTP server.
*/
-var server = http.createServer(app);
+var server = http.createServer(app)
+var httpsServer
+if (shouldUseHTTPS) httpsServer = https.createServer(credentials, app)
/**
* Listen on provided port, on all network interfaces.
*/
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
+server.listen(port)
+server.on('error', onError)
+server.on('listening', onListening)
+if (shouldUseHTTPS) {
+ httpsServer.listen(httpsPort)
+ httpsServer.on('error', onError)
+ httpsServer.on('listening', onListening)
+}
/**
* Normalize a port into a number, string, or false.
*/
-function normalizePort(val) {
- var port = parseInt(val, 10);
+function normalizePort (val) {
+ var port = parseInt(val, 10)
if (isNaN(port)) {
// named pipe
- return val;
+ return val
}
if (port >= 0) {
// port number
- return port;
+ return port
}
- return false;
+ return false
}
/**
* Event listener for HTTP server "error" event.
*/
-function onError(error) {
+function onError (error) {
if (error.syscall !== 'listen') {
- throw error;
+ throw error
}
var bind = typeof port === 'string'
? 'Pipe ' + port
- : 'Port ' + port;
+ : 'Port ' + port
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
+ console.error(bind + ' requires elevated privileges')
+ process.exit(1)
+ break
case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
+ console.error(bind + ' is already in use')
+ process.exit(1)
+ break
default:
- throw error;
+ throw error
}
}
@@ -81,10 +109,10 @@ function onError(error) {
* Event listener for HTTP server "listening" event.
*/
-function onListening() {
- var addr = server.address();
+function onListening () {
+ var addr = server.address()
var bind = typeof addr === 'string'
? 'pipe ' + addr
- : 'port ' + addr.port;
- debug('Listening on ' + bind);
+ : 'port ' + addr.port
+ debug('Listening on ' + bind)
}