UNPKG

axiom

Version:

Environment setup/runtime standardization for Node.js applications.

43 lines (32 loc) 940 B
{join} = require 'path' fs = require 'fs' http = require 'http' https = require 'https' read = (file) -> fs.readFileSync file, 'utf8' config = port: 4000 ssl: false module.exports = (port, app, done) -> app ?= -> done ?= -> if config.ssl # read cert files ca = config.ssl.ca || [] options = key: read config.ssl.key cert: read config.ssl.cert ca: ca.map read # create server with ssl server = https.createServer(options, app).listen port, done #http server to redirect to https if (port is config.port) and config.ssl.redirectFrom? redirect = (req, res) -> redirectTarget = "https://#{req.headers.host}#{req.url}" res.writeHead 301, { "Location": redirectTarget } res.end() redirectServer = http.createServer(redirect).listen config.ssl.redirectFrom return server else http.createServer(app).listen port, done