#!/usr/bin/env node /** * Module dependencies. */ var app = require('../app') var debug = require('debug')('bas:server') // var http = require('http') var https = require('https') const syswidecas = require('syswide-cas') /* Load DFN certificates */ syswidecas.addCAs('/etc/ssl/certs/DFN_Verein_Certification_Authority_2.pem') syswidecas.addCAs('/etc/ssl/certs/DFN_Verein_Global_Issuing_CA.pem') var fs = require('fs') /* global __appdir */ var path = require('path') var config = require(path.join(__appdir, 'config', 'config')).https /** * Get port from environment and store in Express. */ var port = normalizePort(process.env.BAS_PORT || config.port || '8000') app.set('port', port) /** * Create HTTP server. */ var options = { key: fs.readFileSync('./bin/privkey.pem'), cert: fs.readFileSync('./bin/fullchain.pem') } var server = https.createServer(options, app) /** * Setup socket.io. */ var io = require(path.join(__appdir, 'lib', 'socketio')) io.attach(server) /** * Listen on provided port, on all network interfaces. */ server.listen(port) server.on('error', onError) server.on('listening', onListening) /** * Normalize a port into a number, string, or false. */ function normalizePort (val) { var port = parseInt(val, 10) if (isNaN(port)) { // named pipe return val } if (port >= 0) { // port number return port } return false } /** * Event listener for HTTP server 'error' event. */ function onError (error) { if (error.syscall !== 'listen') { throw error } var bind = typeof port === 'string' ? 'Pipe ' + 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 case 'EADDRINUSE': console.error(bind + ' is already in use') process.exit(1) // break default: throw error } } /** * Event listener for HTTP server 'listening' event. */ function onListening () { var addr = server.address() var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port debug('Listening on ' + bind) }