summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/misc/twemoji-base.ts2
-rw-r--r--src/server/web/index.ts16
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`, {