mirror of
https://framagit.org/les/gancio.git
synced 2025-02-01 09:02:01 +01:00
64 lines
2 KiB
JavaScript
64 lines
2 KiB
JavaScript
const settingsController = require('./api/controller/settings')
|
|
const acceptLanguage = require('accept-language')
|
|
const moment = require('moment-timezone')
|
|
const config = require('config')
|
|
const pkg = require('../package.json')
|
|
|
|
const DOMPurify = require('dompurify')
|
|
const { JSDOM } = require('jsdom')
|
|
const { window } = new JSDOM('<!DOCTYPE html>')
|
|
const domPurify = DOMPurify(window)
|
|
const URL = require('url')
|
|
|
|
domPurify.addHook('beforeSanitizeElements', node => {
|
|
if (node.hasAttribute && node.hasAttribute('href')) {
|
|
const href = node.getAttribute('href')
|
|
const text = node.textContent
|
|
if (href.includes('fbclid=')) {
|
|
try {
|
|
const url = new URL.URL(href)
|
|
url.searchParams.delete('fbclid')
|
|
node.setAttribute('href', url.href)
|
|
if (text.includes('fbclid=')) {
|
|
node.textContent = url.href
|
|
}
|
|
} catch (e) {
|
|
return node
|
|
}
|
|
}
|
|
}
|
|
return node
|
|
})
|
|
|
|
module.exports = {
|
|
sanitizeHTML (html) {
|
|
return domPurify.sanitize(html, {
|
|
ALLOWED_TAGS: ['p', 'h1', 'h2', 'h3', 'h4', 'h5',
|
|
'h6', 'b', 'a', 'li', 'ul', 'ol', 'code', 'blockquote', 'u', 's', 'strong'],
|
|
ALLOWED_ATTR: ['href']
|
|
})
|
|
},
|
|
|
|
async initSettings (req, res, next) {
|
|
await settingsController.load()
|
|
// initialize settings
|
|
req.settings = settingsController.settings
|
|
req.secretSettings = settingsController.secretSettings
|
|
|
|
req.settings.baseurl = config.baseurl
|
|
req.settings.title = req.settings.title || config.title
|
|
req.settings.description = req.settings.description || config.description
|
|
req.settings.version = pkg.version
|
|
|
|
// set locale and user locale
|
|
const acceptedLanguages = req.headers['accept-language']
|
|
const supportedLanguages = ['en', 'it', 'es', 'ca']
|
|
acceptLanguage.languages(supportedLanguages)
|
|
req.settings.locale = acceptLanguage.get(acceptedLanguages)
|
|
req.settings.user_locale = settingsController.user_locale[req.settings.locale]
|
|
moment.locale(req.settings.locale)
|
|
moment.tz.setDefault(req.settings.instance_timezone)
|
|
next()
|
|
}
|
|
|
|
}
|