From edcac833a8b1ccb9fd166e4e8bb3faaedaddbc9e 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 e461ec5fe..c5da5fc9e 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 76c41d905aaa7a371f217e6c2f5e16b687ae9088 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 000000000..b4f2de5e9 --- /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 bb695969fe176b005249c14af81486bd1545a3fc 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 b4f2de5e9..c6a3de50e 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) }