From fffacdc63c15de845b2dc86fec183947205e824d Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 31 Aug 2021 21:43:57 +0800 Subject: [PATCH] ui: allow blockquote class --- .../ui-default/backendlib/markdown-it-xss.js | 160 +++++++++--------- packages/ui-default/package.json | 2 +- 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/packages/ui-default/backendlib/markdown-it-xss.js b/packages/ui-default/backendlib/markdown-it-xss.js index 6b4f7c36a..ed71dcb66 100644 --- a/packages/ui-default/backendlib/markdown-it-xss.js +++ b/packages/ui-default/backendlib/markdown-it-xss.js @@ -1,92 +1,92 @@ const Xss = require('xss'); const xss = new Xss.FilterXSS({ - whiteList: { - a: ['target', 'href', 'title'], - abbr: ['title'], - address: [], - area: ['shape', 'coords', 'href', 'alt'], - article: [], - aside: [], - audio: ['autoplay', 'controls', 'loop', 'preload', 'src'], - b: [], - bdi: ['dir'], - bdo: ['dir'], - big: [], - blockquote: ['cite'], - br: [], - caption: [], - center: [], - cite: [], - code: ['class'], - col: ['align', 'valign', 'span', 'width'], - colgroup: ['align', 'valign', 'span', 'width'], - dd: [], - del: ['datetime'], - details: ['open'], - div: ['class'], - dl: [], - dt: [], - em: [], - font: ['color', 'size', 'face'], - h1: [], - h2: ['class'], - h3: [], - h4: [], - h5: [], - h6: [], - header: [], - hr: [], - i: [], - img: ['src', 'alt', 'title', 'width', 'height'], - ins: ['datetime'], - li: [], - mark: [], - ol: [], - p: [], - pre: [], - s: [], - section: [], - small: [], - span: ['class'], - sub: [], - summary: [], - sup: [], - strong: [], - table: ['width', 'border', 'align', 'valign'], - tbody: ['align', 'valign'], - td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'bgcolor'], - tfoot: ['align', 'valign'], - th: ['width', 'rowspan', 'colspan', 'align', 'valign'], - thead: ['align', 'valign'], - tr: ['rowspan', 'align', 'valign'], - tt: [], - u: [], - ul: [], - var: [], - video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width'], - }, + whiteList: { + a: ['target', 'href', 'title'], + abbr: ['title'], + address: [], + area: ['shape', 'coords', 'href', 'alt'], + article: [], + aside: [], + audio: ['autoplay', 'controls', 'loop', 'preload', 'src'], + b: [], + bdi: ['dir'], + bdo: ['dir'], + big: [], + blockquote: ['cite', 'class'], + br: [], + caption: [], + center: [], + cite: [], + code: ['class'], + col: ['align', 'valign', 'span', 'width'], + colgroup: ['align', 'valign', 'span', 'width'], + dd: [], + del: ['datetime'], + details: ['open'], + div: ['class'], + dl: [], + dt: [], + em: [], + font: ['color', 'size', 'face'], + h1: [], + h2: ['class'], + h3: [], + h4: [], + h5: [], + h6: [], + header: [], + hr: [], + i: [], + img: ['src', 'alt', 'title', 'width', 'height'], + ins: ['datetime'], + li: [], + mark: [], + ol: [], + p: [], + pre: [], + s: [], + section: [], + small: [], + span: ['class'], + sub: [], + summary: [], + sup: [], + strong: [], + table: ['width', 'border', 'align', 'valign'], + tbody: ['align', 'valign'], + td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'bgcolor'], + tfoot: ['align', 'valign'], + th: ['width', 'rowspan', 'colspan', 'align', 'valign'], + thead: ['align', 'valign'], + tr: ['rowspan', 'align', 'valign'], + tt: [], + u: [], + ul: [], + var: [], + video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width'], + }, }); function xssProtector(md) { - function protector(state) { - for (let i = 0; i < state.tokens.length; i++) { - const cur = state.tokens[i]; - if (cur.type === 'html_block') { - cur.content = xss.process(cur.content); - } - if (cur.type === 'inline') { - const inlineTokens = cur.children; - for (let ii = 0; ii < inlineTokens.length; ii++) { - if (inlineTokens[ii].type === 'html_inline') { - inlineTokens[ii].content = xss.process(inlineTokens[ii].content); - } - } - } + function protector(state) { + for (let i = 0; i < state.tokens.length; i++) { + const cur = state.tokens[i]; + if (cur.type === 'html_block') { + cur.content = xss.process(cur.content); + } + if (cur.type === 'inline') { + const inlineTokens = cur.children; + for (let ii = 0; ii < inlineTokens.length; ii++) { + if (inlineTokens[ii].type === 'html_inline') { + inlineTokens[ii].content = xss.process(inlineTokens[ii].content); + } } + } } + } - md.core.ruler.after('linkify', 'xss', protector); + md.core.ruler.after('linkify', 'xss', protector); } module.exports = { xss, xssProtector }; diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 4b5264f63..8dd600838 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.18.14", + "version": "4.18.15", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",