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) => { 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, 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_database.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_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, 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_database.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_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 category 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, 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_database.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_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 category_index; conn.query(query).then((rows) => { category_index = rows.length; }); conn.end(); conn = await pool.getConnection(); query = `INSERT INTO trigger_database.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_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', () => {});