summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/MediaProxyServerService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-12-08 17:16:50 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-12-08 17:16:50 +0900
commit6d46e5cf7759e29abcfc63dea81e325c2870acea (patch)
treea34e59435eca29320c51452d2ebd0f6240351ef0 /packages/backend/src/server/MediaProxyServerService.ts
parentfix(client): use proxied image for instance icon (diff)
downloadsharkey-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.ts17
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);