diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2023-01-22 12:07:38 +0000 |
|---|---|---|
| committer | tamaina <tamaina@hotmail.co.jp> | 2023-01-22 12:07:38 +0000 |
| commit | a8b19f4aa8ca014ee4f86f15279c1b9b0b592c65 (patch) | |
| tree | 779967d21452e8fab4d9ec872a1277ac68f95956 /packages/backend/src/server/ServerService.ts | |
| parent | refactor (diff) | |
| parent | 13.1.7 (diff) | |
| download | misskey-a8b19f4aa8ca014ee4f86f15279c1b9b0b592c65.tar.gz misskey-a8b19f4aa8ca014ee4f86f15279c1b9b0b592c65.tar.bz2 misskey-a8b19f4aa8ca014ee4f86f15279c1b9b0b592c65.zip | |
Merge branch 'develop' into emoji-re
Diffstat (limited to 'packages/backend/src/server/ServerService.ts')
| -rw-r--r-- | packages/backend/src/server/ServerService.ts | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/packages/backend/src/server/ServerService.ts b/packages/backend/src/server/ServerService.ts index fac8497b5e..eb6a3795eb 100644 --- a/packages/backend/src/server/ServerService.ts +++ b/packages/backend/src/server/ServerService.ts @@ -14,6 +14,7 @@ import { genIdenticon } from '@/misc/gen-identicon.js'; import { createTemp } from '@/misc/create-temp.js'; import { UserEntityService } from '@/core/entities/UserEntityService.js'; import { LoggerService } from '@/core/LoggerService.js'; +import { bindThis } from '@/decorators.js'; import { ActivityPubServerService } from './ActivityPubServerService.js'; import { NodeinfoServerService } from './NodeinfoServerService.js'; import { ApiServerService } from './api/ApiServerService.js'; @@ -22,7 +23,6 @@ import { WellKnownServerService } from './WellKnownServerService.js'; import { MediaProxyServerService } from './MediaProxyServerService.js'; import { FileServerService } from './FileServerService.js'; import { ClientServerService } from './web/ClientServerService.js'; -import { bindThis } from '@/decorators.js'; @Injectable() export class ServerService { @@ -82,13 +82,13 @@ export class ServerService { fastify.get<{ Params: { path: string }; Querystring: { static?: any; }; }>('/emoji/:path(.*)', async (request, reply) => { const path = request.params.path; + reply.header('Cache-Control', 'public, max-age=86400'); + if (!path.match(/^[a-zA-Z0-9\-_@\.]+?\.webp$/)) { reply.code(404); return; } - reply.header('Cache-Control', 'public, max-age=86400'); - const name = path.split('@')[0].replace('.webp', ''); const host = path.split('@')[1]?.replace('.webp', ''); @@ -101,7 +101,12 @@ export class ServerService { reply.header('Content-Security-Policy', 'default-src \'none\'; style-src \'unsafe-inline\''); if (emoji == null) { - return await reply.redirect('/static-assets/emoji-unknown.png'); + if ('fallback' in request.query) { + return await reply.redirect('/static-assets/emoji-unknown.png'); + } else { + reply.code(404); + return; + } } const url = new URL('/proxy/emoji.webp', this.config.url); @@ -127,6 +132,8 @@ export class ServerService { relations: ['avatar'], }); + reply.header('Cache-Control', 'public, max-age=86400'); + if (user) { reply.redirect(this.userEntityService.getAvatarUrlSync(user)); } else { @@ -138,6 +145,7 @@ export class ServerService { const [temp, cleanup] = await createTemp(); await genIdenticon(request.params.x, fs.createWriteStream(temp)); reply.header('Content-Type', 'image/png'); + reply.header('Cache-Control', 'public, max-age=86400'); return fs.createReadStream(temp).on('close', () => cleanup()); }); |