diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/misc/twemoji-base.ts | 2 | ||||
| -rw-r--r-- | src/server/web/index.ts | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/misc/twemoji-base.ts b/src/misc/twemoji-base.ts index e08556bd49..cd50311b15 100644 --- a/src/misc/twemoji-base.ts +++ b/src/misc/twemoji-base.ts @@ -1 +1 @@ -export const twemojiSvgBase = 'https://twemoji.maxcdn.com/v/latest/svg'; +export const twemojiSvgBase = '/twemoji'; diff --git a/src/server/web/index.ts b/src/server/web/index.ts index 8f9b6add6e..35337868d9 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -101,6 +101,22 @@ router.get('/apple-touch-icon.png', async ctx => { }); }); +router.get('/twemoji/(.*)', async ctx => { + const path = ctx.path.replace('/twemoji/', ''); + + if (!path.match(/^[0-9a-f-]+\.svg$/)) { + ctx.status = 404; + return; + } + + ctx.set('Content-Security-Policy', `default-src 'none'; style-src 'unsafe-inline'`); + + await send(ctx as any, path, { + root: `${_dirname}/../../../node_modules/@discordapp/twemoji/dist/svg/`, + maxage: ms('30 days'), + }); +}); + // ServiceWorker router.get('/sw.js', async ctx => { await send(ctx as any, `/sw.${config.version}.js`, { |