1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-06 10:52:31 +01:00

Initial implementation of the remote server shutdown route

This commit is contained in:
Erkin Alp Güney 2021-12-26 17:49:15 +03:00 committed by GitHub
commit 3e3c5de94e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

25
api/src/routes/stop.ts Normal file
View File

@ -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'

View File

@ -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();