Files
TriggerBackend/server.cjs
Sean Edmunds 5d7c4011b2 Initial commit
2024-05-14 14:11:37 -05:00

295 lines
8.8 KiB
JavaScript

const express = require('express');
const cors = require('cors');
const fs = require('fs');
const wol = require('wol');
const mariadb = require('mariadb');
const snmp = require('net-snmp');
const bodyParser = require('body-parser');
const pool = mariadb.createPool({
host: 'localhost',
user: 'trigger',
password: 'trigger',
connectionLimit: 5,
});
const options = {
port: 162,
disableAuthorization: true,
includeAuthentication: false,
accessControlModelType: snmp.AccessControlModelType.None,
address: null,
transport: 'udp4',
};
const callback = (error, notification) => {
if (error) {
console.error(error);
} else {
}
};
// receiver = snmp.createReceiver(options, callback);
// initializing app
const app = express();
// initializing cors middleware for all routes
const corsOptions = {
origin: '*',
credentials: true,
};
app.use(cors(corsOptions));
app.use(bodyParser.json());
app.get('/trigger/api/personaldata', async (req, res) => {
conn = await pool.getConnection();
const query = 'SELECT * FROM trigger.personaldata;';
conn.query(query).then((rows) => {
res.status(200).send(rows);
});
conn.end();
});
app.patch('/trigger/api/personaldata', async (req, res) => {
conn = await pool.getConnection();
const query = `UPDATE trigger.personaldata SET firstname = '${req.body.firstname}', lastname = '${req.body.lastname}', email = '${req.body.email}';`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.get('/trigger/api/messages', async (req, res) => {
conn = await pool.getConnection();
const query = 'SELECT * FROM trigger.messages;';
conn.query(query).then((rows) => {
res.status(200).send(rows);
});
conn.end();
});
app.post('/trigger/api/messages', async (req, res) => {
conn = await pool.getConnection();
const query = `INSERT INTO trigger.messages (message, easteregg) VALUES ('${req.body.message}', '${req.body.easteregg}');`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.patch('/trigger/api/messages', async (req, res) => {
conn = await pool.getConnection();
const query = `UPDATE trigger.messages SET message = '${req.body.message}', easteregg = '${req.body.easteregg}' WHERE id = '${req.body.id}';`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.delete('/trigger/api/messages', async (req, res) => {
conn = await pool.getConnection();
const query = `DELETE FROM trigger.messages WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.get('/trigger/api/apps', async (req, res) => {
conn = await pool.getConnection();
const query = 'SELECT * FROM trigger.apps;';
conn.query(query).then((rows) => {
res.status(200).send(rows);
});
conn.end();
});
app.post('/trigger/api/apps', async (req, res) => {
conn = await pool.getConnection();
const query = `INSERT INTO trigger.apps (name, url, icon, urlbase, category) VALUES ('${req.body.name}', '${req.body.url}', '${req.body.icon}', '${req.body.urlbase}', '${req.body.category}')`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.patch('/trigger/api/apps', async (req, res) => {
conn = await pool.getConnection();
const query = `UPDATE trigger.apps SET name = '${req.body.name}', url = '${req.body.url}', icon = '${req.body.icon}', urlbase = '${req.body.urlbase}', category = '${req.body.category}' WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.delete('/trigger/api/apps', async (req, res) => {
conn = await pool.getConnection();
const query = `DELETE FROM trigger.apps WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.get('/trigger/api/appCategories', async (req, res) => {
conn = await pool.getConnection();
const query = 'SELECT DISTINCT category FROM trigger.apps;';
conn.query(query).then((rows) => {
res.status(200).send(rows);
});
conn.end();
});
app.get('/trigger/api/links', async (req, res) => {
conn = await pool.getConnection();
const query = 'SELECT * FROM trigger.links;';
conn.query(query).then((rows) => {
res.status(200).send(rows);
});
conn.end();
});
app.post('/trigger/api/links', async (req, res) => {
conn = await pool.getConnection();
const query = `INSERT INTO trigger.links (name, url, category) VALUES ('${req.body.name}', '${req.body.url}', '${req.body.category}')`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.patch('/trigger/api/links', async (req, res) => {
conn = await pool.getConnection();
const query = `UPDATE trigger.links SET name = '${req.body.name}', url = '${req.body.url}', category = '${req.body.category}' WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.delete('/trigger/api/links', async (req, res) => {
conn = await pool.getConnection();
const query = `DELETE FROM trigger.links WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.get('/trigger/api/providers', async (req, res) => {
conn = await pool.getConnection();
const query = 'SELECT * FROM trigger.providers;';
conn.query(query).then((rows) => {
res.status(200).send(rows);
});
conn.end();
});
app.post('/trigger/api/providers', async (req, res) => {
conn = await pool.getConnection();
const query = `INSERT INTO trigger.providers (name, url, prefix) VALUES ('${req.body.name}', '${req.body.url}', '${req.body.prefix}')`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.patch('/trigger/api/providers', async (req, res) => {
conn = await pool.getConnection();
const query = `UPDATE trigger.providers SET name = '${req.body.name}', url = '${req.body.url}', prefix = '${req.body.prefix}' WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.delete('/trigger/api/providers', async (req, res) => {
conn = await pool.getConnection();
const query = `DELETE FROM trigger.providers WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.get('/trigger/api/themes', async (req, res) => {
conn = await pool.getConnection();
const query = 'SELECT * FROM trigger.themes;';
conn.query(query).then((rows) => {
res.status(200).send(rows);
});
conn.end();
});
app.post('/trigger/api/themes', async (req, res) => {
conn = await pool.getConnection();
const query = `INSERT INTO trigger.themes (name, imagebackground, colorbackground, colorsearchbackground, colortextpri, colortextacc, colorborder) VALUES ('${req.body.name}','${req.body.imagebackground}','${req.body.colorbackground}','${req.body.colorsearchbackground}','${req.body.colortextpri}','${req.body.colortextacc}','${req.body.colorborder}')`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.patch('/trigger/api/themes', async (req, res) => {
conn = await pool.getConnection();
const query = `UPDATE trigger.themes SET name = '${req.body.name}', imagebackground = '${req.body.imagebackground}', colorbackground = '${req.body.colorbackground}', colorsearchbackground = '${req.body.colorsearchbackground}', colortextpri = '${req.body.colortextpri}', colortextacc = '${req.body.colortextacc}', colorborder = '${req.body.colorborder}' WHERE id = '${req.body.id}';`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.delete('/trigger/api/themes', async (req, res) => {
conn = await pool.getConnection();
const query = `DELETE FROM trigger.themes WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.get('/trigger/api/categories', async (req, res) => {
conn = await pool.getConnection();
const query = 'SELECT * from trigger.linkcategories;';
conn.query(query).then((rows) => {
res.status(200).send(rows);
});
conn.end();
});
app.post('/trigger/api/categories', async (req, res) => {
conn = await pool.getConnection();
let query = 'SELECT * from trigger.linkcategories;';
let category_index;
conn.query(query).then((rows) => {
category_index = rows.length;
});
conn.end();
conn = await pool.getConnection();
query = `INSERT INTO trigger.linkcategories (category_name, category_index, column_filter) VALUES ('${req.body.category_name}','${category_index}','${req.body.column_filter}')`;
conn.query(query).then((rows) => {
category_index = rows.length;
});
conn.end();
});
// TODO: Add patch method
app.delete('/trigger/api/categories', async (req, res) => {
conn = await pool.getConnection();
const query = `DELETE FROM trigger.linkCategories WHERE id = '${req.body.id}'`;
conn.query(query).then((rows) => {
res.status(200);
});
conn.end();
});
app.get('/trigger/api/wakeDakota', (req, res) => {
wol.wake('18:C0:4D:81:57:68', (err, res) => {});
});
// app is listening on port 5000
app.listen(5000, 'localhost', () => {});