feat: HTTPS support
This commit is contained in:
parent
a113d1199d
commit
3ede499732
@ -10,13 +10,6 @@
|
|||||||
|
|
||||||
port: 3000
|
port: 3000
|
||||||
|
|
||||||
# ---------------------------------------------------------------------
|
|
||||||
# IP address the server should listen to
|
|
||||||
# ---------------------------------------------------------------------
|
|
||||||
# Do not change unless you know what you are doing!
|
|
||||||
|
|
||||||
bindIP: 0.0.0.0
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
# Database
|
# Database
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
@ -49,6 +42,40 @@ redis:
|
|||||||
db: 0
|
db: 0
|
||||||
password: null
|
password: null
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# ADVANCED OPTIONS #
|
||||||
|
#######################################################################
|
||||||
|
# Do not change unless you know what you are doing!
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# SSL/TLS Settings
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Consider using a reverse proxy (e.g. nginx) if you require more
|
||||||
|
# advanced options than those provided below.
|
||||||
|
|
||||||
|
ssl:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# Certificate format, either 'pem' or 'pfx':
|
||||||
|
format: pem
|
||||||
|
# Using PEM format:
|
||||||
|
key: path/to/key.pem
|
||||||
|
cert: path/to/cert.pem
|
||||||
|
# Using PFX format:
|
||||||
|
pfx: path/to/cert.pfx
|
||||||
|
# Passphrase when using encrypted PEM / PFX keys (default: null):
|
||||||
|
passphrase: null
|
||||||
|
# Diffie Hellman parameters, with key length being greater or equal
|
||||||
|
# to 1024 bits (default: null):
|
||||||
|
dhparam: null
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# IP address the server should listen to
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Leave 0.0.0.0 for all interfaces
|
||||||
|
|
||||||
|
bindIP: 0.0.0.0
|
||||||
|
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
# Log Level
|
# Log Level
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
|
@ -21,6 +21,8 @@ defaults:
|
|||||||
port: 6379
|
port: 6379
|
||||||
db: 0
|
db: 0
|
||||||
password: null
|
password: null
|
||||||
|
ssl:
|
||||||
|
enabled: false
|
||||||
# DB defaults
|
# DB defaults
|
||||||
graphEndpoint: 'https://graph.requarks.io'
|
graphEndpoint: 'https://graph.requarks.io'
|
||||||
lang:
|
lang:
|
||||||
|
@ -6,6 +6,7 @@ const cors = require('cors')
|
|||||||
const express = require('express')
|
const express = require('express')
|
||||||
const favicon = require('serve-favicon')
|
const favicon = require('serve-favicon')
|
||||||
const http = require('http')
|
const http = require('http')
|
||||||
|
const https = require('https')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const { ApolloServer } = require('apollo-server-express')
|
const { ApolloServer } = require('apollo-server-express')
|
||||||
// const oauth2orize = require('oauth2orize')
|
// const oauth2orize = require('oauth2orize')
|
||||||
@ -166,10 +167,33 @@ module.exports = async () => {
|
|||||||
|
|
||||||
let srvConnections = {}
|
let srvConnections = {}
|
||||||
|
|
||||||
WIKI.logger.info(`HTTP Server on port: [ ${WIKI.config.port} ]`)
|
|
||||||
|
|
||||||
app.set('port', WIKI.config.port)
|
app.set('port', WIKI.config.port)
|
||||||
|
if (WIKI.config.ssl.enabled) {
|
||||||
|
WIKI.logger.info(`HTTPS Server on port: [ ${WIKI.config.port} ]`)
|
||||||
|
const tlsOpts = {}
|
||||||
|
try {
|
||||||
|
if (WIKI.config.ssl.format === 'pem') {
|
||||||
|
tlsOpts.key = fs.readFileSync(WIKI.config.ssl.key)
|
||||||
|
tlsOpts.cert = fs.readFileSync(WIKI.config.ssl.cert)
|
||||||
|
} else {
|
||||||
|
tlsOpts.pfx = fs.readFileSync(WIKI.config.ssl.pfx)
|
||||||
|
}
|
||||||
|
if (!_.isEmpty(WIKI.config.ssl.passphrase)) {
|
||||||
|
tlsOpts.passphrase = WIKI.config.ssl.passphrase
|
||||||
|
}
|
||||||
|
if (!_.isEmpty(WIKI.config.ssl.dhparam)) {
|
||||||
|
tlsOpts.dhparam = WIKI.config.ssl.dhparam
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
WIKI.logger.error('Failed to setup HTTPS server parameters:')
|
||||||
|
WIKI.logger.error(err)
|
||||||
|
return process.exit(1)
|
||||||
|
}
|
||||||
|
WIKI.server = https.createServer(tlsOpts, app)
|
||||||
|
} else {
|
||||||
|
WIKI.logger.info(`HTTP Server on port: [ ${WIKI.config.port} ]`)
|
||||||
WIKI.server = http.createServer(app)
|
WIKI.server = http.createServer(app)
|
||||||
|
}
|
||||||
apolloServer.installSubscriptionHandlers(WIKI.server)
|
apolloServer.installSubscriptionHandlers(WIKI.server)
|
||||||
|
|
||||||
WIKI.server.listen(WIKI.config.port, WIKI.config.bindIP)
|
WIKI.server.listen(WIKI.config.port, WIKI.config.bindIP)
|
||||||
@ -200,7 +224,11 @@ module.exports = async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
WIKI.server.on('listening', () => {
|
WIKI.server.on('listening', () => {
|
||||||
|
if (WIKI.config.ssl.enabled) {
|
||||||
|
WIKI.logger.info('HTTPS Server: [ RUNNING ]')
|
||||||
|
} else {
|
||||||
WIKI.logger.info('HTTP Server: [ RUNNING ]')
|
WIKI.logger.info('HTTP Server: [ RUNNING ]')
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
WIKI.server.destroy = (cb) => {
|
WIKI.server.destroy = (cb) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user