ssl.js 1.05 KB
Newer Older
NGPixel's avatar
NGPixel committed
1 2 3
const express = require('express')
const router = express.Router()
const _ = require('lodash')
4
const qs = require('querystring')
NGPixel's avatar
NGPixel committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

/* global WIKI */

/**
 * Let's Encrypt Challenge
 */
router.get('/.well-known/acme-challenge/:token', (req, res, next) => {
  res.type('text/plain')
  if (_.get(WIKI.config, 'letsencrypt.challenge', false)) {
    if (WIKI.config.letsencrypt.challenge.token === req.params.token) {
      res.send(WIKI.config.letsencrypt.challenge.keyAuthorization)
      WIKI.logger.info(`(LETSENCRYPT) Received valid challenge request. [ ACCEPTED ]`)
    } else {
      res.status(406).send('Invalid Challenge Token!')
      WIKI.logger.warn(`(LETSENCRYPT) Received invalid challenge request. [ REJECTED ]`)
    }
  } else {
    res.status(418).end()
  }
})

26 27 28 29 30
/**
 * Redirect to HTTPS if HTTP Redirection is enabled
 */
router.all('/*', (req, res, next) => {
  if (WIKI.config.server.sslRedir && !req.secure && WIKI.servers.servers.https) {
31
    return res.redirect(`https://${req.hostname}${req.originalUrl}`)
32 33 34 35 36
  } else {
    next()
  }
})

NGPixel's avatar
NGPixel committed
37
module.exports = router