296 lines
8.9 KiB
JavaScript
296 lines
8.9 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: 'triggeradmin',
|
|
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 {
|
|
console.log(notification);
|
|
}
|
|
};
|
|
|
|
// 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) => {
|
|
let conn = await pool.getConnection();
|
|
const query = 'SELECT * FROM trigger_database.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_database.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_database.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_database.messages (message) VALUES ('${req.body.message}');`;
|
|
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_database.messages SET message = '${req.body.message}' 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_database.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_database.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_database.apps (name, url, icon, baseUrl, category) VALUES ('${req.body.name}', '${req.body.url}', '${req.body.icon}', '${req.body.baseUrl}', '${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_database.apps SET name = '${req.body.name}', url = '${req.body.url}', icon = '${req.body.icon}', baseUrl = '${req.body.baseUrl}', 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_database.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 filterName FROM trigger_database.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_database.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_database.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_database.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_database.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_database.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_database.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_database.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_database.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_database.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_database.themes (name, backgroundImage, backgroundColor, searchColor, primary, accent, border) VALUES ('${req.body.name}','${req.body.backgroundImage}','${req.body.backgroundColor}','${req.body.searchColor}','${req.body.primary}','${req.body.accent}','${req.body.border}')`;
|
|
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_database.themes SET name = '${req.body.name}', backgroundImage = '${req.body.backgroundImage}', backgroundColor = '${req.body.backgroundColor}', searchColor = '${req.body.searchColor}', primary = '${req.body.primary}', accent = '${req.body.accent}', border = '${req.body.border}' 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_database.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_database.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_database.linkCategories;';
|
|
let categoryIndex;
|
|
conn.query(query).then((rows) => {
|
|
categoryIndex = rows.length;
|
|
});
|
|
conn.end();
|
|
conn = await pool.getConnection();
|
|
query = `INSERT INTO trigger_database.linkCategories (categoryName, categoryIndex, filterName) VALUES ('${req.body.categoryName}','${categoryIndex}','${req.body.filterName}')`;
|
|
conn.query(query).then((rows) => {
|
|
categoryIndex = 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_database.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', () => {});
|