summary refs log tree commit diff
path: root/api/src
diff options
context:
space:
mode:
authorThesourtimes <cckhmck@gmail.com>2021-12-18 19:17:04 +0300
committerThesourtimes <cckhmck@gmail.com>2021-12-18 19:17:04 +0300
commit442879e80a8de8d97c47f5b80f6844b0dad0028f (patch)
tree71b644185d715950f40207fbc2108aa02d06680f /api/src
parentImprovements + dummy API configs (diff)
downloadserver-442879e80a8de8d97c47f5b80f6844b0dad0028f.tar.xz
General work on API
Diffstat (limited to 'api/src')
-rw-r--r--api/src/Server.ts27
-rw-r--r--api/src/middlewares/Authentication.ts16
-rw-r--r--api/src/routes/downloads.ts19
-rw-r--r--api/src/routes/updates.ts20
4 files changed, 57 insertions, 25 deletions
diff --git a/api/src/Server.ts b/api/src/Server.ts

index c16bac5c..259c2a6b 100644 --- a/api/src/Server.ts +++ b/api/src/Server.ts
@@ -12,6 +12,7 @@ import { initTranslation } from "./middlewares/Translation"; import morgan from "morgan"; import { initInstance } from "./util/Instance"; import { registerRoutes } from "@fosscord/util"; +import { red } from "nanocolors" export interface FosscordServerOptions extends ServerOptions {} @@ -38,17 +39,6 @@ export class FosscordServer extends Server { await initEvent(); await initInstance(); - /* - DOCUMENTATION: uses LOG_REQUESTS environment variable - - # only log 200 and 204 - LOG_REQUESTS=200 204 - # log everything except 200 and 204 - LOG_REQUESTS=-200 204 - # log all requests - LOG_REQUESTS=- - */ - let logRequests = process.env["LOG_REQUESTS"] != undefined; if (logRequests) { this.app.use( @@ -60,7 +50,7 @@ export class FosscordServer extends Server { } }) ); - } + }; this.app.use(CORS); this.app.use(BodyParser({ inflate: true, limit: "10mb" })); @@ -85,19 +75,20 @@ export class FosscordServer extends Server { }); this.app = app; + + //app.use("/__development", ) + //app.use("/__internals", ) app.use("/api/v6", api); app.use("/api/v7", api); app.use("/api/v8", api); app.use("/api/v9", api); app.use("/api", api); // allow unversioned requests + this.app.use(ErrorHandler); TestClient(this.app); - if (logRequests) { - console.log( - "Warning: Request logging is enabled! This will spam your console!\nTo disable this, unset the 'LOG_REQUESTS' environment variable!" - ); - } + if (logRequests) console.log(red(`Warning: Request logging is enabled! This will spam your console!\nTo disable this, unset the 'LOG_REQUESTS' environment variable!`)); + return super.start(); } -} +}; \ No newline at end of file diff --git a/api/src/middlewares/Authentication.ts b/api/src/middlewares/Authentication.ts
index 20ba42d8..429cf11e 100644 --- a/api/src/middlewares/Authentication.ts +++ b/api/src/middlewares/Authentication.ts
@@ -3,25 +3,27 @@ import { HTTPError } from "lambert-server"; import { checkToken, Config, Rights } from "@fosscord/util"; export const NO_AUTHORIZATION_ROUTES = [ - //Authentication routes + // Authentication routes "/auth/login", "/auth/register", "/auth/location-metadata", - //Routes with a seperate auth system + // Routes with a seperate auth system "/webhooks/", - //Public information endpoints + // Public information endpoints "/ping", "/gateway", "/experiments", - //Public kubernetes integration + "/updates", + "/downloads/", + // Public kubernetes integration "/-/readyz", "/-/healthz", - //Client nalytics + // Client analytics "/science", "/track", - //Public policy pages + // Public policy pages "/policies/instance", - //Asset delivery + // Asset delivery /\/guilds\/\d+\/widget\.(json|png)/ ]; diff --git a/api/src/routes/downloads.ts b/api/src/routes/downloads.ts new file mode 100644
index 00000000..de261702 --- /dev/null +++ b/api/src/routes/downloads.ts
@@ -0,0 +1,19 @@ +import { Router, Response, Request } from "express"; +import { route } from "@fosscord/api"; +import { Relase, Config } from "@fosscord/util"; + +const router = Router(); + +router.get("/:branch", route({}), async (req: Request, res: Response) => { + const { client } = Config.get(); + const { branch } = req.params; + const { platform } = req.query; + + if(!platform || !["linux", "osx", "win"].includes(platform.toString())) return res.status(404) + + const relase = await Relase.findOneOrFail({ name: client.relases.upstreamVersion }); + + res.redirect(relase[`win_url`]); +}); + +export default router; diff --git a/api/src/routes/updates.ts b/api/src/routes/updates.ts new file mode 100644
index 00000000..4682ce7c --- /dev/null +++ b/api/src/routes/updates.ts
@@ -0,0 +1,20 @@ +import { Router, Response, Request } from "express"; +import { route } from "@fosscord/api"; +import { Config, Relase } from "@fosscord/util"; + +const router = Router(); + +router.get("/", route({}), async (req: Request, res: Response) => { + const { client } = Config.get(); + + const relase = await Relase.findOneOrFail({ name: client.relases.upstreamVersion}) + + res.json({ + name: relase.name, + pub_date: relase.pub_date, + url: relase.url, + notes: relase.notes + }); +}); + +export default router;