fix stupid xml crap

This commit is contained in:
Evert Prants 2020-09-13 20:24:36 +03:00
parent 3c617239e2
commit 16c8cc6cee
Signed by: evert
GPG Key ID: 1688DA83D222D0B5

View File

@ -10,15 +10,15 @@ const cfgLoader = require(path.join('..', '..', 'config-loader'))(path.join(__di
index: 'index.html' index: 'index.html'
}) })
function encodeSpecial (string) { function encodeSpecial (string) {
let i = string.length let i = string.length
let a = [] const a = []
while (i--) { while (i--) {
var iC = string[i].charCodeAt() var iC = string[i].charCodeAt()
if (iC < 65 || iC > 127 || (iC > 90 && iC < 97)) { if (iC < 65 || iC > 127 || (iC > 90 && iC < 97)) {
a[i] = '&#' + iC + ';' a[i] = '&#' + iC + ';'
} else { } else {
a[i] = string[i] a[i] = string[i]
} }
} }
@ -26,16 +26,16 @@ function encodeSpecial (string) {
} }
async function init () { async function init () {
let config = await cfgLoader const config = await cfgLoader
let root = path.resolve(config.root) const root = path.resolve(config.root)
await fsp.access(root, fs.constants.F_OK) await fsp.access(root, fs.constants.F_OK)
router.get('/:name', async (req, res, next) => { router.get('/:name', async (req, res, next) => {
let name = req.params.name const name = req.params.name
if (name.length > 5) { if (name.length > 5) {
try { try {
let text = await fsp.readFile(path.join(root, 'index.html')) const text = await fsp.readFile(path.join(root, 'index.html'))
res.send(text) res.send(text)
} catch (e) { } catch (e) {
res.status(403) res.status(403)
@ -43,15 +43,15 @@ async function init () {
return res.end() return res.end()
} }
let fichePath = path.join(root, name, 'index.txt') const fichePath = path.join(root, name, 'index.txt')
const ua = req.get('User-Agent')
let reqRaw = req.query.raw != null let reqRaw = req.query.raw != null
let ua = req.get('User-Agent')
if (!reqRaw && ua && (ua.match(/curl\//i) != null || ua.match(/wget\//i) != null)) reqRaw = true if (!reqRaw && ua && (ua.match(/curl\//i) != null || ua.match(/wget\//i) != null)) reqRaw = true
let text let text
try { try {
text = await fsp.readFile(fichePath, {encoding: 'utf8'}) text = await fsp.readFile(fichePath, { encoding: 'utf8' })
} catch (e) { } catch (e) {
return res.status(404).end() return res.status(404).end()
} }
@ -62,22 +62,22 @@ async function init () {
return res.set('Content-Type', 'text/plain').send(text) return res.set('Content-Type', 'text/plain').send(text)
} }
let etext = encodeSpecial(text) const etext = encodeSpecial(text)
let payload = const payload = `
'<?xml version="1.0" encoding="UTF-8"?>' + <!DOCTYPE html>
'<html xmlns="http://www.w3.org/1999/xhtml" class="hljs">' + <html class="hljs">
'<head>' + <head>
'<link rel="stylesheet" href="/assets/css/t.css" />' + <link rel="stylesheet" href="/assets/css/t.css" />
'<link rel="stylesheet" href="/assets/css/t-styles/' + config.style + '.css" />' + <link rel="stylesheet" href="/assets/css/t-styles/${config.style}.css" />
'<script src="/assets/js/highlight.min.js"></script>' + <script src="/assets/js/highlight.min.js"></script>
'</head>' + </head>
'<body>' + <body>
'<pre><code>' + etext + '</code></pre>' + <pre><code>${etext}</code></pre>
'<script>hljs.initHighlightingOnLoad();</script>' + <script>hljs.initHighlightingOnLoad();</script>
'</body>' + </body>
'</html>' </html>
`
res.set('Content-Type', 'application/xhtml+xml').send(payload) res.set('Content-Type', 'text/html; charset=UTF-8').send(payload)
}) })
router.get('/', (req, res, next) => { router.get('/', (req, res, next) => {