summary refs log tree commit diff
diff options
context:
space:
mode:
authorMathium05 <73901602+MathMan05@users.noreply.github.com>2025-12-23 16:34:38 -0600
committerGitHub <noreply@github.com>2025-12-23 16:34:38 -0600
commit27b8b55595bbc005d2c404d41b8db86bafd65920 (patch)
treeac33ee3b1d3a39e45f82f206d9584b162f44db02
parentfeild error fixes (diff)
parentAdd server name config option for use in client redirects (diff)
downloadserver-ts-27b8b55595bbc005d2c404d41b8db86bafd65920.tar.xz
Merge branch 'spacebarchat:master' into errorFix
-rw-r--r--extra/admin-api/outputs.nix4
-rw-r--r--src/api/Server.ts17
-rw-r--r--src/api/routes/invites/index.ts2
-rw-r--r--src/util/config/types/GeneralConfiguration.ts1
-rw-r--r--src/util/entities/Invite.ts6
-rw-r--r--src/util/util/Config.ts13
6 files changed, 33 insertions, 10 deletions
diff --git a/extra/admin-api/outputs.nix b/extra/admin-api/outputs.nix

index 488dd3a6..9a397d5c 100644 --- a/extra/admin-api/outputs.nix +++ b/extra/admin-api/outputs.nix
@@ -102,7 +102,7 @@ flake-utils.lib.eachSystem flake-utils.lib.allSystems ( # }; }; - containers.admin-api = pkgs.dockerTools.buildLayeredImage { + containers.docker.admin-api = pkgs.dockerTools.buildLayeredImage { name = "spacebar-server-ts-admin-api"; tag = builtins.replaceStrings [ "+" ] [ "_" ] self.packages.${system}.Spacebar-AdminApi.version; contents = [ self.packages.${system}.Spacebar-AdminApi ]; @@ -122,7 +122,7 @@ flake-utils.lib.eachSystem flake-utils.lib.allSystems ( pkgs.lib.recursiveUpdate (pkgs.lib.attrsets.unionOfDisjoint { } self.packages) { x86_64-linux = { # spacebar-server-tests = self.packages.x86_64-linux.default.passthru.tests; - docker-admin-api = self.containers.x86_64-linux.admin-api; + docker-admin-api = self.containers.x86_64-linux.docker.admin-api; }; }; } diff --git a/src/api/Server.ts b/src/api/Server.ts
index 9cc1820f..d371ed9c 100644 --- a/src/api/Server.ts +++ b/src/api/Server.ts
@@ -114,9 +114,20 @@ export class SpacebarServer extends Server { app.use("/imageproxy/:hash/:size/:url", ImageProxy); - app.get("/", (req, res) => res.sendFile(path.join(PUBLIC_ASSETS_FOLDER, "index.html"))); - app.get("/verify-email", (req, res) => res.sendFile(path.join(PUBLIC_ASSETS_FOLDER, "verify.html"))); - app.get("/widget", (req, res) => res.sendFile(path.join(PUBLIC_ASSETS_FOLDER, "widget.html"))); + app.get("/", (req, res) => { + res.set("Cache-Control", "public, max-age=21600"); + return res.sendFile(path.join(PUBLIC_ASSETS_FOLDER, "index.html")); + }); + + app.get("/verify-email", (req, res) => { + res.set("Cache-Control", "public, max-age=21600"); + return res.sendFile(path.join(PUBLIC_ASSETS_FOLDER, "verify.html")); + }); + + app.get("/widget", (req, res) => { + res.set("Cache-Control", "public, max-age=21600"); + return res.sendFile(path.join(PUBLIC_ASSETS_FOLDER, "widget.html")); + }); app.get("/_spacebar/api/schemas.json", (req, res) => { res.sendFile(path.join(ASSETS_FOLDER, "schemas.json")); diff --git a/src/api/routes/invites/index.ts b/src/api/routes/invites/index.ts
index b4fa8a5d..7e43aa56 100644 --- a/src/api/routes/invites/index.ts +++ b/src/api/routes/invites/index.ts
@@ -44,7 +44,7 @@ router.get( relations: PublicInviteRelation, }); - res.status(200).send(invite); + res.status(200).send(invite.toPublicJSON()); }, ); diff --git a/src/util/config/types/GeneralConfiguration.ts b/src/util/config/types/GeneralConfiguration.ts
index beafe01c..f4f76441 100644 --- a/src/util/config/types/GeneralConfiguration.ts +++ b/src/util/config/types/GeneralConfiguration.ts
@@ -20,6 +20,7 @@ import { Snowflake } from "@spacebar/util"; export class GeneralConfiguration { instanceName: string = "Spacebar Instance"; + serverName: string | null = null; instanceDescription: string | null = "This is a Spacebar instance made in the pre-release days"; frontPage: string | null = null; tosPage: string | null = null; diff --git a/src/util/entities/Invite.ts b/src/util/entities/Invite.ts
index b7066819..20346883 100644 --- a/src/util/entities/Invite.ts +++ b/src/util/entities/Invite.ts
@@ -104,6 +104,12 @@ export class Invite extends BaseClassWithoutId { if (this.max_uses !== 0 && this.uses >= this.max_uses) return true; return false; } + toPublicJSON() { + return { + ...this, + inviter: this.inviter.toPublicUser(), + }; + } static async joinGuild(user_id: string, code: string) { const invite = await Invite.findOneOrFail({ where: { code } }); diff --git a/src/util/util/Config.ts b/src/util/util/Config.ts
index 1ca455ff..e31b541f 100644 --- a/src/util/util/Config.ts +++ b/src/util/util/Config.ts
@@ -184,10 +184,15 @@ function validateFinalConfig(config: ConfigValue) { } } - assertConfig("api_endpointPublic", (v) => v != null, 'A valid public API endpoint URL, ex. "http://localhost:3001/api/v9"'); - assertConfig("cdn_endpointPublic", (v) => v != null, 'A valid public CDN endpoint URL, ex. "http://localhost:3003/"'); - assertConfig("cdn_endpointPrivate", (v) => v != null, 'A valid private CDN endpoint URL, ex. "http://localhost:3003/" - must be routable from the API server!'); - assertConfig("gateway_endpointPublic", (v) => v != null, 'A valid public gateway endpoint URL, ex. "ws://localhost:3002/"'); + assertConfig( + "general_serverName", + (v) => v != null, + 'A valid domain hosting your .well-known (defaulting to https at port 443), eg. "spacebar.chat" or "http://localhost:3001"', + ); + assertConfig("api_endpointPublic", (v) => v != null, 'A valid public API endpoint URL, eg. "http://localhost:3001/api/v9"'); + assertConfig("cdn_endpointPublic", (v) => v != null, 'A valid public CDN endpoint URL, eg. "http://localhost:3003/"'); + assertConfig("cdn_endpointPrivate", (v) => v != null, 'A valid private CDN endpoint URL, eg. "http://localhost:3003/" - must be routable from the API server!'); + assertConfig("gateway_endpointPublic", (v) => v != null, 'A valid public gateway endpoint URL, eg. "ws://localhost:3002/"'); if (hasErrors) { console.error("[Config] Your config has invalid values. Fix them first https://docs.spacebar.chat/setup/server/configuration");