From cf99b95c3d76d5a546949b9303a810b406241fd5 Mon Sep 17 00:00:00 2001 From: unknownPerson115 <69736850+unknownPerson115@users.noreply.github.com> Date: Sat, 25 Dec 2021 21:04:56 +0000 Subject: [PATCH 1/3] Updated Server.ts Added what to do if 'SIGTERM' is sent to the server for the `/stop` API route --- bundle/src/Server.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bundle/src/Server.ts b/bundle/src/Server.ts index e461ec5f..c5da5fc9 100644 --- a/bundle/src/Server.ts +++ b/bundle/src/Server.ts @@ -22,6 +22,14 @@ const cdn = new CDNServer({ server, port, production, app }); // @ts-ignore const gateway = new Gateway.Server({ server, port, production }); +//this is what has been added for the /stop API route +process.on('SIGTERM', () => { + server.close(() => { + console.log("Stop API has been successfully POSTed, SIGTERM sent") + }) +}) +//this is what has been added for the /stop API route + async function main() { server.listen(port); await initDatabase(); From 31c66d0f5ef19446e9e6d322fe3a1d8e830fdbcb Mon Sep 17 00:00:00 2001 From: unknownPerson115 <69736850+unknownPerson115@users.noreply.github.com> Date: Sat, 25 Dec 2021 21:09:46 +0000 Subject: [PATCH 2/3] Create stop.ts (for /stop API route) patched up the route and polished it note: THIS API IS ONLY FOR DEVELOPMENT PURPOSES --- api/src/routes/stop.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 api/src/routes/stop.ts diff --git a/api/src/routes/stop.ts b/api/src/routes/stop.ts new file mode 100644 index 00000000..b4f2de5e --- /dev/null +++ b/api/src/routes/stop.ts @@ -0,0 +1,30 @@ +import { Router, Request, Response } from "express"; +import { route } from "@fosscord/api"; +import { User } from "@fosscord/util"; + +const router: Router = Router(); + +router.post("/", route({}), async (req: Request, res: Response) => { + //TODO: have an "OPERATOR" platform permission implemented for this API route + const user = await User.findOneOrFail({ where: { id: req.user_id }, select: ["flags"] }); + if(user.flags == '4096') { + console.log("user that POSTed to the API was ALLOWED"); + console.log(user.flags); + res.sendStatus(200) + process.kill(process.pid, 'SIGTERM') + } + if(user.flags <= '4095') { + console.log("user that POSTed to the /stop API was DENIED"); + console.log(user.flags); + res.sendStatus(403) + } + if(user.flags >= '4097'){ + console.log("user that POSTed to the /stop API was DENIED"); + console.log(user.flags); + res.sendStatus(403) + } +}); + +export default router; + +//THIS API CAN ONLY BE USED BY USERS WITH THE 'SYSTEM' FLAG ONLY IF ANY OTHER FLAGS ARE ADDED THE REQUEST WILL RETURN 403 'FORBIDDEN' From 4cf4de805bff4ecb55f09d304ee2b451d0729cd6 Mon Sep 17 00:00:00 2001 From: unknownPerson115 <69736850+unknownPerson115@users.noreply.github.com> Date: Sat, 25 Dec 2021 15:33:55 -0600 Subject: [PATCH 3/3] Update api/src/routes/stop.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Erkin Alp Güney --- api/src/routes/stop.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/api/src/routes/stop.ts b/api/src/routes/stop.ts index b4f2de5e..c6a3de50 100644 --- a/api/src/routes/stop.ts +++ b/api/src/routes/stop.ts @@ -13,13 +13,8 @@ router.post("/", route({}), async (req: Request, res: Response) => { res.sendStatus(200) process.kill(process.pid, 'SIGTERM') } - if(user.flags <= '4095') { - console.log("user that POSTed to the /stop API was DENIED"); - console.log(user.flags); - res.sendStatus(403) - } - if(user.flags >= '4097'){ - console.log("user that POSTed to the /stop API was DENIED"); + else { + console.log("operation failed"); console.log(user.flags); res.sendStatus(403) }