You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.6 KiB

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;