137 lines
2.8 KiB
JavaScript
137 lines
2.8 KiB
JavaScript
const express = require("express");
|
|
const fs = require("fs");
|
|
const Database = require("./db");
|
|
|
|
const app = express();
|
|
const db = new Database();
|
|
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: false }));
|
|
|
|
function gimmeToken() {
|
|
var result = ""
|
|
var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
|
var charactersLength = characters.length
|
|
for ( var i = 0; i < 32; i++ ) {
|
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
}
|
|
return result;
|
|
}
|
|
|
|
let TOKEN = gimmeToken();
|
|
const PASS = fs.readFileSync("pass", "utf-8")
|
|
|
|
/*
|
|
* error: 0 -> no error
|
|
* error: 1 -> parameter error
|
|
* error: 2 -> auth error
|
|
*
|
|
*/
|
|
|
|
// PATH: /api/login
|
|
// METHOD: GET
|
|
// PARAMETERS: pass
|
|
app.get("/login", (req,res)=>{
|
|
let pass = req.query.pass;
|
|
|
|
if (pass === undefined)
|
|
return res.json({error: 1})
|
|
|
|
if (pass !== PASS)
|
|
return res.json({error: 2})
|
|
|
|
res.json({error: 0, token:TOKEN})
|
|
})
|
|
|
|
// PATH: /api/logout
|
|
// METHOD: GET
|
|
// PARAMETERS: token
|
|
app.get("/logout", (req,res)=>{
|
|
let token = req.query.token;
|
|
|
|
if (token === undefined)
|
|
return res.json({error: 1})
|
|
|
|
if (token !== TOKEN)
|
|
return res.json({error: 2})
|
|
|
|
TOKEN = gimmeToken()
|
|
res.json({error: 0})
|
|
})
|
|
|
|
// PATH: /api/add_project
|
|
// METHOD: GET
|
|
// PARAMETERS: token, name, desc, url
|
|
app.get("/add_project", (req, res) => {
|
|
let token = req.query.token;
|
|
let name = req.query.name;
|
|
let desc = req.query.desc;
|
|
let url = req.query.url;
|
|
|
|
if (
|
|
token === undefined ||
|
|
name === undefined ||
|
|
desc === undefined ||
|
|
url === undefined
|
|
)
|
|
return res.json({error: 1})
|
|
|
|
if (token !== TOKEN)
|
|
return res.json({error: 2})
|
|
|
|
db.push("projects", {"name":name, "desc":desc, "url":url})
|
|
res.json({error: 0})
|
|
});
|
|
|
|
// PATH: /api/add_resource
|
|
// METHOD: GET
|
|
// PARAMETERS: token, name, tags, url
|
|
app.get("/add_resource", (req, res) => {
|
|
let token = req.query.token;
|
|
let name = req.query.name;
|
|
let tags = req.query.tags;
|
|
let url = req.query.url;
|
|
|
|
if (
|
|
token === undefined ||
|
|
name === undefined ||
|
|
tags === undefined ||
|
|
url === undefined
|
|
)
|
|
return res.json({error: 1})
|
|
|
|
if (token !== TOKEN)
|
|
return res.json({error: 2})
|
|
|
|
db.push("resources", {"name":name, "tags":tags.split(","), "url":url})
|
|
res.json({error: 0})
|
|
});
|
|
|
|
// PATH: /api/get_projects
|
|
// METHOD: GET
|
|
// PARAMETERS: NONE
|
|
app.get("/get_projects", (req, res) => {
|
|
let projects = db.get("projects")
|
|
res.json({error: 0, projects:projects})
|
|
});
|
|
|
|
// PATH: /api/get_resources
|
|
// METHOD: GET
|
|
// PARAMETERS: NONE
|
|
app.get("/get_resources", (req, res) => {
|
|
let resources = db.get("resources")
|
|
res.json({error: 0, resources:resources})
|
|
});
|
|
|
|
// PATH: /api/ping
|
|
// METHOD: GET
|
|
// PARAMETERS: NONE
|
|
app.get("/ping", (req, res) => {
|
|
res.send({ error: 0 });
|
|
});
|
|
|
|
export default {
|
|
path: "/api",
|
|
handler: app,
|
|
};
|