diff options
author | Erkin Alp Güney <erkinalp9035@gmail.com> | 2021-12-26 17:49:15 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-26 17:49:15 +0300 |
commit | 28f25c3593f4a2ceb39c1d28a5c09dba316a96c1 (patch) | |
tree | 25d4709a3882fd322cec173b6afa7e2209e88ee7 | |
parent | Merge pull request #556 from Thesourtimes/master (diff) | |
parent | Update api/src/routes/stop.ts (diff) | |
download | server-28f25c3593f4a2ceb39c1d28a5c09dba316a96c1.tar.xz |
Initial implementation of the remote server shutdown route
-rw-r--r-- | api/src/routes/stop.ts | 25 | ||||
-rw-r--r-- | bundle/src/Server.ts | 8 |
2 files changed, 33 insertions, 0 deletions
diff --git a/api/src/routes/stop.ts b/api/src/routes/stop.ts new file mode 100644 index 00000000..c6a3de50 --- /dev/null +++ b/api/src/routes/stop.ts @@ -0,0 +1,25 @@ +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') + } + else { + console.log("operation failed"); + 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' 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(); |