diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2022-12-08 17:16:50 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2022-12-08 17:16:50 +0900 |
| commit | 6d46e5cf7759e29abcfc63dea81e325c2870acea (patch) | |
| tree | a34e59435eca29320c51452d2ebd0f6240351ef0 /packages/backend/src/server/MediaProxyServerService.ts | |
| parent | fix(client): use proxied image for instance icon (diff) | |
| download | sharkey-6d46e5cf7759e29abcfc63dea81e325c2870acea.tar.gz sharkey-6d46e5cf7759e29abcfc63dea81e325c2870acea.tar.bz2 sharkey-6d46e5cf7759e29abcfc63dea81e325c2870acea.zip | |
enhance: fallback option for media proxy
Diffstat (limited to 'packages/backend/src/server/MediaProxyServerService.ts')
| -rw-r--r-- | packages/backend/src/server/MediaProxyServerService.ts | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/backend/src/server/MediaProxyServerService.ts b/packages/backend/src/server/MediaProxyServerService.ts index 733a7feeb5..8ffcbe6bad 100644 --- a/packages/backend/src/server/MediaProxyServerService.ts +++ b/packages/backend/src/server/MediaProxyServerService.ts @@ -1,7 +1,10 @@ import * as fs from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; import { Inject, Injectable } from '@nestjs/common'; import { FastifyInstance, FastifyPluginOptions, FastifyReply, FastifyRequest } from 'fastify'; import sharp from 'sharp'; +import fastifyStatic from '@fastify/static'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; import { isMimeImage } from '@/misc/is-mime-image.js'; @@ -16,6 +19,11 @@ import { FileInfoService } from '@/core/FileInfoService.js'; import { LoggerService } from '@/core/LoggerService.js'; import { bindThis } from '@/decorators.js'; +const _filename = fileURLToPath(import.meta.url); +const _dirname = dirname(_filename); + +const assets = `${_dirname}/../../server/file/assets/`; + @Injectable() export class MediaProxyServerService { private logger: Logger; @@ -41,6 +49,11 @@ export class MediaProxyServerService { done(); }); + fastify.register(fastifyStatic, { + root: _dirname, + serve: false, + }); + fastify.get<{ Params: { url: string; }; Querystring: { url?: string; }; @@ -125,6 +138,10 @@ export class MediaProxyServerService { return image.data; } catch (err) { this.logger.error(`${err}`); + + if ('fallback' in request.query) { + return reply.sendFile('/dummy.png', assets); + } if (err instanceof StatusError && (err.statusCode === 302 || err.isClientError)) { reply.code(err.statusCode); |