|
|
|
#!/usr/bin/env coffee
|
|
|
|
|
|
|
|
app = require('../app')
|
|
|
|
debug = require('debug')('pdfy:server')
|
|
|
|
http = require('http')
|
|
|
|
https = require("https")
|
|
|
|
config = require "../config.json"
|
|
|
|
fs = require "fs"
|
|
|
|
|
|
|
|
normalizePort = (val) ->
|
|
|
|
port = parseInt val, 10
|
|
|
|
|
|
|
|
if isNaN port
|
|
|
|
return val
|
|
|
|
|
|
|
|
if port >= 0
|
|
|
|
return port
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
|
|
|
onError = (error) ->
|
|
|
|
if error.syscall != "listen"
|
|
|
|
throw error
|
|
|
|
|
|
|
|
bind = if typeof port == "string"
|
|
|
|
"Pipe #{port}"
|
|
|
|
else
|
|
|
|
"Port #{port}"
|
|
|
|
|
|
|
|
switch error.code
|
|
|
|
when "EACCES"
|
|
|
|
console.error "#{bind} requires elevated privileges"
|
|
|
|
process.exit 1
|
|
|
|
when "EADDRINUSE"
|
|
|
|
console.error "#{bind} is already in use"
|
|
|
|
process.exit 1
|
|
|
|
else
|
|
|
|
throw error
|
|
|
|
|
|
|
|
|
|
|
|
onListening = ->
|
|
|
|
addr = httpServer.address()
|
|
|
|
|
|
|
|
bind = if typeof port == "string"
|
|
|
|
"pipe #{port}"
|
|
|
|
else
|
|
|
|
"port #{port}"
|
|
|
|
|
|
|
|
debug("Listening on #{bind}")
|
|
|
|
|
|
|
|
|
|
|
|
port = normalizePort(process.env.PORT || '3000')
|
|
|
|
app.set('port', port)
|
|
|
|
|
|
|
|
httpServer = http.createServer(app)
|
|
|
|
|
|
|
|
httpServer.listen(port)
|
|
|
|
httpServer.on('error', onError)
|
|
|
|
httpServer.on('listening', onListening)
|
|
|
|
|
|
|
|
if config.ssl?.key?
|
|
|
|
credentials = {key: fs.readFileSync(config.ssl.key)}
|
|
|
|
|
|
|
|
if config.ssl.cert?
|
|
|
|
credentials.cert = fs.readFileSync(config.ssl.cert)
|
|
|
|
|
|
|
|
if config.ssl.ca?
|
|
|
|
credentials.ca = fs.readFileSync(config.ssl.ca)
|
|
|
|
|
|
|
|
if config.ssl.ciphers?
|
|
|
|
credentials.ciphers = config.ssl.ciphers
|
|
|
|
else
|
|
|
|
credentials.ciphers = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA"
|
|
|
|
|
|
|
|
httpsServer = https.createServer(credentials, app)
|
|
|
|
|
|
|
|
httpsServer.listen(443)
|
|
|
|
httpsServer.on('error', onError)
|
|
|
|
httpsServer.on('listening', onListening)
|