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
98 lines
2.6 KiB
5 months ago
|
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;
|