diff --git a/assets/openapi.json b/assets/openapi.json
index df2e7d90..f7451189 100644
Binary files a/assets/openapi.json and b/assets/openapi.json differ
diff --git a/src/api/Server.ts b/src/api/Server.ts
index b4274969..0e4030de 100644
--- a/src/api/Server.ts
+++ b/src/api/Server.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 .
*/
@@ -98,6 +98,7 @@ export class SpacebarServer extends Server {
}
this.app.set("json replacer", JSONReplacer);
+ this.app.disable("x-powered-by");
const trustedProxies = Config.get().security.trustedProxies;
if (trustedProxies) this.app.set("trust proxy", trustedProxies);
diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts
index 9cd8bfda..3e7b9caa 100644
--- a/src/api/routes/users/@me/index.ts
+++ b/src/api/routes/users/@me/index.ts
@@ -152,7 +152,10 @@ router.patch(
}
const { maxUsername } = Config.get().limits.user;
- if (check_username.length > maxUsername) {
+ if (
+ check_username.length > maxUsername ||
+ check_username.length < 2
+ ) {
throw FieldErrors({
username: {
code: "BASE_TYPE_BAD_LENGTH",
diff --git a/src/cdn/Server.ts b/src/cdn/Server.ts
index 255452a0..a2cde7e0 100644
--- a/src/cdn/Server.ts
+++ b/src/cdn/Server.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 .
*/
@@ -22,7 +22,8 @@ import path from "path";
import avatarsRoute from "./routes/avatars";
import guildProfilesRoute from "./routes/guild-profiles";
import iconsRoute from "./routes/role-icons";
-import bodyParser from "body-parser";
+import { CORS } from "../api/middlewares/CORS";
+import { BodyParser } from "../api/middlewares/BodyParser";
export type CDNServerOptions = ServerOptions;
@@ -38,24 +39,10 @@ export class CDNServer extends Server {
await Config.init();
await Sentry.init(this.app);
- this.app.use((req, res, next) => {
- res.set("Access-Control-Allow-Origin", "*");
- // TODO: use better CSP policy
- res.set(
- "Content-security-policy",
- "default-src * data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval'; script-src * data: blob: 'unsafe-inline' 'unsafe-eval'; connect-src * data: blob: 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src * data: blob: ; style-src * data: blob: 'unsafe-inline'; font-src * data: blob: 'unsafe-inline';",
- );
- res.set(
- "Access-Control-Allow-Headers",
- req.header("Access-Control-Request-Headers") || "*",
- );
- res.set(
- "Access-Control-Allow-Methods",
- req.header("Access-Control-Request-Methods") || "*",
- );
- next();
- });
- this.app.use(bodyParser.json({ inflate: true, limit: "10mb" }));
+ this.app.disable("x-powered-by");
+
+ this.app.use(CORS);
+ this.app.use(BodyParser({ inflate: true, limit: "10mb" }));
await registerRoutes(this, path.join(__dirname, "routes/"));
diff --git a/src/util/schemas/MessageAcknowledgeSchema.ts b/src/util/schemas/MessageAcknowledgeSchema.ts
index 28cd9c79..3ba71649 100644
--- a/src/util/schemas/MessageAcknowledgeSchema.ts
+++ b/src/util/schemas/MessageAcknowledgeSchema.ts
@@ -19,4 +19,7 @@
export interface MessageAcknowledgeSchema {
manual?: boolean;
mention_count?: number;
+ flags?: number;
+ last_viewed?: number;
+ token?: string;
}