diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-10-25 02:34:58 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-10-25 02:34:58 +0900 |
| commit | 6d557269c13f023d80aeeb28ddceb7337aca134c (patch) | |
| tree | f69595ca45dd0d05dc3af4404dd8205dc828ddc1 /src/server | |
| parent | Merge branch 'develop' (diff) | |
| parent | 12.94.0 (diff) | |
| download | misskey-6d557269c13f023d80aeeb28ddceb7337aca134c.tar.gz misskey-6d557269c13f023d80aeeb28ddceb7337aca134c.tar.bz2 misskey-6d557269c13f023d80aeeb28ddceb7337aca134c.zip | |
Merge branch 'develop'
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/index.ts | 18 | ||||
| -rw-r--r-- | src/server/web/index.ts | 16 |
2 files changed, 33 insertions, 1 deletions
diff --git a/src/server/index.ts b/src/server/index.ts index c891596140..5e1a12e4d3 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -26,6 +26,7 @@ import { networkChart } from '@/services/chart/index'; import { genAvatar } from '@/misc/gen-avatar'; import { createTemp } from '@/misc/create-temp'; import { publishMainStream } from '@/services/stream'; +import { parseAcct } from '@/misc/acct'; export const serverLogger = new Logger('server', 'gray', false); @@ -68,7 +69,22 @@ router.use(activityPub.routes()); router.use(nodeinfo.routes()); router.use(wellKnown.routes()); -router.get('/avatar/:x', async ctx => { +router.get('/avatar/@:acct', async ctx => { + const { username, host } = parseAcct(ctx.params.acct); + const user = await Users.findOne({ + usernameLower: username.toLowerCase(), + host: host === config.host ? null : host, + isSuspended: false + }); + + if (user) { + ctx.redirect(Users.getAvatarUrl(user)); + } else { + ctx.redirect('/static-assets/user-unknown.png'); + } +}); + +router.get('/random-avatar/:x', async ctx => { const [temp] = await createTemp(); await genAvatar(ctx.params.x, fs.createWriteStream(temp)); ctx.set('Content-Type', 'image/png'); 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`, { |