From 16f8a1c7ac4eb1dafd571b5b3082f0df129fd39f Mon Sep 17 00:00:00 2001
From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com>
Date: Fri, 28 Jun 2024 10:17:24 +0200
Subject: Add config value for cache duration
---
src/util/config/types/CdnConfiguration.ts | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
(limited to 'src/util')
diff --git a/src/util/config/types/CdnConfiguration.ts b/src/util/config/types/CdnConfiguration.ts
index 033190813..842cb87c4 100644
--- a/src/util/config/types/CdnConfiguration.ts
+++ b/src/util/config/types/CdnConfiguration.ts
@@ -1,17 +1,17 @@
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2023 Spacebar and Spacebar Contributors
-
+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
-
+
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
@@ -25,4 +25,6 @@ export class CdnConfiguration extends EndpointConfiguration {
endpointPublic: string | null = null;
endpointPrivate: string | null = null;
+
+ proxyCacheHeaderSeconds: number = 60 * 60 * 24;
}
--
cgit 1.5.1
From 628b0948651b75918262c4262fda0a4fe58ade36 Mon Sep 17 00:00:00 2001
From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com>
Date: Fri, 28 Jun 2024 10:21:32 +0200
Subject: running prettier for others
---
src/util/entities/UserSettings.ts | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
(limited to 'src/util')
diff --git a/src/util/entities/UserSettings.ts b/src/util/entities/UserSettings.ts
index 0d4b6a7b7..6f09c9b3a 100644
--- a/src/util/entities/UserSettings.ts
+++ b/src/util/entities/UserSettings.ts
@@ -1,17 +1,17 @@
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2023 Spacebar and Spacebar Contributors
-
+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
-
+
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
@@ -122,7 +122,6 @@ export class UserSettings extends BaseClassWithoutId {
@Column({ nullable: true })
view_nsfw_guilds: boolean = true;
-
}
interface CustomStatus {
--
cgit 1.5.1
From a987671e4a1249ae23914165c1b3edd0f29d9ffd Mon Sep 17 00:00:00 2001
From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com>
Date: Fri, 28 Jun 2024 12:43:53 +0200
Subject: "Fix" jimp import typings
---
src/api/middlewares/ImageProxy.ts | 21 +++++++++++++++------
src/util/imports/Jimp.ts | 23 +++++++++++++++++++++++
src/util/imports/index.ts | 1 +
3 files changed, 39 insertions(+), 6 deletions(-)
create mode 100644 src/util/imports/Jimp.ts
(limited to 'src/util')
diff --git a/src/api/middlewares/ImageProxy.ts b/src/api/middlewares/ImageProxy.ts
index 4c324afd8..27c69ae2a 100644
--- a/src/api/middlewares/ImageProxy.ts
+++ b/src/api/middlewares/ImageProxy.ts
@@ -16,14 +16,22 @@
along with this program. If not, see .
*/
-import { Config } from "@spacebar/util";
+import { Config, JimpType } from "@spacebar/util";
import { Request, Response } from "express";
import { yellow } from "picocolors";
import crypto from "crypto";
import fetch from "node-fetch";
let sharp: undefined | false | { default: typeof import("sharp") } = undefined;
-let Jimp: undefined | false | typeof import("jimp") = undefined;
+
+let Jimp: JimpType | undefined = undefined;
+try {
+ Jimp = require("jimp") as JimpType;
+} catch {
+ // empty
+}
+
+let sentImageProxyWarning = false;
const sharpSupported = new Set([
"image/jpeg",
@@ -112,20 +120,21 @@ export async function ImageProxy(req: Request, res: Response) {
const arrayBuffer = await request.arrayBuffer();
let resultBuffer = Buffer.from(arrayBuffer);
- if (/^\d+x\d+$/.test(path[1]) && resizeSupported.has(contentType)) {
+ if (!sentImageProxyWarning && resizeSupported.has(contentType) && /^\d+x\d+$/.test(path[1])) {
if (sharp !== false) {
try {
sharp = await import("sharp");
- } catch (e) {
+ } catch {
sharp = false;
}
}
- if (sharp === false && Jimp !== false) {
+
+ if (sharp === false && !Jimp) {
try {
// @ts-expect-error Typings don't fit
Jimp = await import("jimp");
} catch {
- Jimp = false;
+ sentImageProxyWarning = true;
console.log(
`[ImageProxy] ${yellow(
'Neither "sharp" or "jimp" NPM packages are installed, image resizing will be disabled',
diff --git a/src/util/imports/Jimp.ts b/src/util/imports/Jimp.ts
new file mode 100644
index 000000000..c1389e031
--- /dev/null
+++ b/src/util/imports/Jimp.ts
@@ -0,0 +1,23 @@
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2023 Spacebar and Spacebar Contributors
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
+/* eslint-disable @typescript-eslint/no-explicit-any */
+
+export type JimpType = {
+ read: (data: Buffer) => Promise;
+};
diff --git a/src/util/imports/index.ts b/src/util/imports/index.ts
index 08b870bc1..4bc5a6c5f 100644
--- a/src/util/imports/index.ts
+++ b/src/util/imports/index.ts
@@ -18,3 +18,4 @@
export * from "./OrmUtils";
export * from "./Erlpack";
+export * from "./Jimp";
--
cgit 1.5.1