import con from '../db/db.js'; import { Router } from "express"; import { AdminorUser } from '../server.js'; const router = Router(); // get the active flag of a specific user router.post('/getActiveFlag', (req,res) => { const { email, contest } = req.body; return AdminorUser(email).then((table) => { const query = `SELECT ActiveFlag FROM ${table} WHERE Email = ?`; con.query(query, [email, contest], (err,rows) => { if (err) { console.log(err.message); return res.status(500).json({ error: 'GETTING ACTIVE FLAG' }); } if (rows.length > 0 && rows[0].ActiveFlag !== null) { const activeFlag = rows[0].ActiveFlag; const imageObject = { ActiveFlag: activeFlag}; return getFlagByImage(imageObject).then((flag) => { res.json(flag); }); } else return res.status(500).json({ error: 'GETTING ACTIVE FLAG' }); }); }); }); // get every flag for a specific contest router.post('/getAllFlagsFromContest', (req,res) => { const { contest } = req.body; const query = 'SELECT * FROM Flags WHERE ContestID = ?'; con.query(query, [contest], (err,rows) => { if (err) { console.error(err.message); return res.status(500).json({ error: 'GETTING ALL FLAGS FOR CONTEST' }); } res.json(rows); }); }); // get a flag by the image name export async function getFlagByImage(image) { //console.log("looking for your image: ", image.ActiveFlag); const flagImage = image.ActiveFlag; return new Promise((resolve, reject) => { const query = 'SELECT * FROM Flags WHERE Image = ?'; con.query(query, [flagImage], (err,rows) => { if (err) { console.error(err.message); reject(err); } if(rows.length === 0) return resolve('ubuntu'); resolve(rows[0]); }); }); } // get all of the flags export async function getAllFlags() { return new Promise((resolve, reject) => { const query = 'SELECT * FROM Flags'; con.query(query, [], (err,rows) => { if (err) { console.error(err.message); reject(err); } resolve(rows); }); }); }; // get every flag for a specific contest router.post('/getAllFlagsFromContest', (req,res) => { const { contest } = req.body; const query = 'SELECT * FROM Flags WHERE ContestID = ?'; con.query(query, [contest], (err,rows) => { if (err) { console.error(err.message); return res.status(500).json({ error: 'GETTING ALL FLAGS FOR CONTEST' }); } res.json(rows); }); }); // get every flag inside db router.get('/getAllFlags', (req,res) => { const query = 'SELECT * FROM Flags'; con.query(query, [], (err,rows) => { if (err) { console.error(err.message); return res.status(500).json({ error: 'GETTING ALL FLAGS FROM DB' }); } res.json(rows); }); }); export default router;