Initial implementation of the remote server shutdown route
This commit is contained in:
		
						commit
						28f25c3593
					
				
							
								
								
									
										25
									
								
								api/src/routes/stop.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								api/src/routes/stop.ts
									
									
									
									
									
										Normal 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'
 | ||||
| @ -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(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Erkin Alp Güney
						Erkin Alp Güney