1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-06 02:42:37 +01:00

Make /stop route not ugly as hell

This commit is contained in:
Madeline 2022-10-26 19:50:51 +11:00
parent 070b193987
commit 5f0d16d4bf
2 changed files with 8 additions and 27 deletions

View File

@ -1,28 +1,12 @@
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) => {
//EXPERIMENTAL: have an "OPERATOR" platform permission implemented for this API route
const user = await User.findOneOrFail({
where: { id: req.user_id },
select: ["rights"],
});
if ((Number(user.rights) << Number(0)) % Number(2) == Number(1)) {
console.log("user that POSTed to the API was ALLOWED");
console.log(user.rights);
res.sendStatus(200);
process.kill(process.pid, "SIGTERM");
} else {
console.log("operation failed");
console.log(user.rights);
res.sendStatus(403);
}
router.post("/", route({ right: "OPERATOR" }), async (req: Request, res: Response) => {
console.log(`/stop was called by ${req.user_id} at ${new Date()}`);
res.sendStatus(200);
process.kill(process.pid, "SIGTERM");
});
export default router;
//THIS API CAN ONLY BE USED BY USERS WITH THE 'OPERATOR' RIGHT (which is the value of 1) ONLY IF ANY OTHER RIGHTS ARE ADDED OR IF THE USER DOESNT HAVE PERMISSION,
//THE REQUEST WILL RETURN 403 'FORBIDDEN'
export default router;

View File

@ -21,13 +21,10 @@ const api = new Api.FosscordServer({ server, port, production, app });
const cdn = new CDNServer({ server, port, production, app });
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");
});
process.on("SIGTERM", async () => {
console.log("Shutting down due to SIGTERM");
server.close();
});
//this is what has been added for the /stop API route
async function main() {
await initDatabase();