Adding modules
This commit is contained in:
46
commands/SearchData.cjs
Normal file
46
commands/SearchData.cjs
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
|
||||||
|
const getSearchHistory = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query =
|
||||||
|
"SELECT * FROM trigger_database.searchHistory ORDER BY dateTimeStamp DESC;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const addSearchHistoryItem = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.searchHistory (prefix, provider, searchTerm) VALUES (${escapeString(req.body.prefix)}, ${escapeString(req.body.provider)}, ${escapeString(req.body.searchTerm)})`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteSearchHistoryItem = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.searchHistory WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getSearchHistory,
|
||||||
|
addSearchHistoryItem,
|
||||||
|
deleteSearchHistoryItem,
|
||||||
|
};
|
||||||
99
commands/applicationData.cjs
Normal file
99
commands/applicationData.cjs
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
|
||||||
|
const getApplications = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * FROM trigger_database.applications;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getEnabledApplications = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query =
|
||||||
|
"SELECT * FROM trigger_database.applications WHERE enabled = 1;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const postApplication = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.applications (name, url, icon, baseUrl, filterName, enabled, \`index\`) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.icon)}, ${escapeString(req.body.baseUrl)}, ${escapeString(req.body.filterName)}, ${req.body.enabled}, ${req.body.index});`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const patchApplication = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.applications SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, icon = ${escapeString(req.body.icon)}, baseUrl = ${escapeString(req.body.baseUrl)}, filterName = ${escapeString(req.body.filterName)}, enabled = ${req.body.enabled} WHERE id = ${req.body.id};`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteApplication = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.applications WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getAppCategories = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query =
|
||||||
|
"SELECT filterName FROM trigger_database.applications UNION SELECT filterName FROM trigger_database.bookmarkCategories;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateApplicationOrder = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
req.body.map(async (link) => {
|
||||||
|
return conn
|
||||||
|
.query(
|
||||||
|
"UPDATE trigger_database.applications SET `index` = ? where id IN (?)",
|
||||||
|
[link.index, link.id],
|
||||||
|
)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
res.send({ status: "success" });
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getApplications,
|
||||||
|
getEnabledApplications,
|
||||||
|
postApplication,
|
||||||
|
patchApplication,
|
||||||
|
deleteApplication,
|
||||||
|
getAppCategories,
|
||||||
|
updateApplicationOrder,
|
||||||
|
};
|
||||||
157
commands/bookmarkData.cjs
Normal file
157
commands/bookmarkData.cjs
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
|
||||||
|
const getBookmarks = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * FROM trigger_database.bookmarks;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const postBookmark = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.bookmarks (name, url, category, \`index\`, enabled) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.category)}, ${req.body.index}, ${req.body.enabled});`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const patchBookmark = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.bookmarks SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, category = ${escapeString(req.body.category)}, \`index\` = ${req.body.index}, enabled = ${req.body.enabled} WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteBookmark = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
if (req.body.length > 1) {
|
||||||
|
req.body.map(async (link) => {
|
||||||
|
return conn
|
||||||
|
.query("DELETE FROM trigger_database.bookmarks where id IN (?)", [
|
||||||
|
link.id,
|
||||||
|
])
|
||||||
|
.then(() => {
|
||||||
|
res.status(200);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
res.send({ status: "success" });
|
||||||
|
} else {
|
||||||
|
const query = `DELETE FROM trigger_database.bookmarks WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then(() => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const patchBookmarkOrder = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
req.body.map(async (link) => {
|
||||||
|
return conn
|
||||||
|
.query(
|
||||||
|
"UPDATE trigger_database.bookmarks SET `index` = ? where id IN (?)",
|
||||||
|
[link.index, link.id],
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
res.status(200);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
res.send({ status: "success" });
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getBookmarkCategories = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * from trigger_database.bookmarkCategories;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const postBookmarkCategory = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.bookmarkCategories (categoryName, categoryIndex, filterName) VALUES (${escapeString(req.body.categoryName)},${req.body.categoryIndex || 0},${escapeString(req.body.filterName)})`;
|
||||||
|
conn.query(query).then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const patchBookmarkCategory = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.bookmarkCategories SET categoryName = ${escapeString(req.body.categoryName)}, filterName = ${escapeString(req.body.filterName)}, enabled = ${req.body.enabled} WHERE id = ${req.body.id};`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteBookmarkCategory = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.bookmarkCategories WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const patchBookmarkCategoryOrder = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
req.body.map(async (category) => {
|
||||||
|
return conn
|
||||||
|
.query(
|
||||||
|
"UPDATE trigger_database.bookmarkCategories SET categoryIndex = ? where id IN (?)",
|
||||||
|
[category.index, category.id],
|
||||||
|
)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
res.send({ status: "success" });
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getBookmarks,
|
||||||
|
postBookmark,
|
||||||
|
patchBookmark,
|
||||||
|
deleteBookmark,
|
||||||
|
patchBookmarkOrder,
|
||||||
|
getBookmarkCategories,
|
||||||
|
postBookmarkCategory,
|
||||||
|
patchBookmarkCategory,
|
||||||
|
deleteBookmarkCategory,
|
||||||
|
patchBookmarkCategoryOrder,
|
||||||
|
};
|
||||||
60
commands/guacamoleData.cjs
Normal file
60
commands/guacamoleData.cjs
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
|
||||||
|
const getGuacamoleClients = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * from trigger_database.guacamoleClients;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const createGuacamoleClient = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.guacamoleClients (clientName, clientIdentifier, enabled, type) VALUES (${escapeString(req.body.clientName)}, ${escapeString(req.body.clientIdentifier)}, ${req.body.enabled}, ${escapeString(req.body.type)})`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateGuacamoleClient = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.guacamoleClients SET clientName = ${escapeString(req.body.clientName)}, clientIdentifier = ${escapeString(req.body.clientIdentifier)} , enabled = ${req.body.enabled}, type = ${escapeString(req.body.type)} WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteGuacamoleClient = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.guacamoleClients WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getGuacamoleClients,
|
||||||
|
createGuacamoleClient,
|
||||||
|
updateGuacamoleClient,
|
||||||
|
deleteGuacamoleClient,
|
||||||
|
};
|
||||||
71
commands/messageData.cjs
Normal file
71
commands/messageData.cjs
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
|
||||||
|
const getMessages = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * FROM trigger_database.messages;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getDisplayedGreeting = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query =
|
||||||
|
"SELECT * FROM trigger_database.messages WHERE customGreeting = 1 ORDER BY RAND() LIMIT 1;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const postMessage = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.messages (message) VALUES (${escapeString(req.body.message)});`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const patchMessage = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.messages SET message = ${escapeString(req.body.message)}, customGreeting = ${req.body.customGreeting} WHERE id = ${req.body.id};`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteMessage = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.messages WHERE id = ${req.body.id};`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getMessages,
|
||||||
|
getDisplayedGreeting,
|
||||||
|
postMessage,
|
||||||
|
patchMessage,
|
||||||
|
deleteMessage,
|
||||||
|
};
|
||||||
61
commands/personalData.cjs
Normal file
61
commands/personalData.cjs
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
|
||||||
|
const getPersonalData = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * FROM trigger_database.personalData;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getGuacamoleHost = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT guacamoleHost FROM trigger_database.personalData;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getGuacamoleEnabled = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT enableGuacamole FROM trigger_database.personalData;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getWolEnabled = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT enableWol FROM trigger_database.personalData;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const updatePersonalData = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.personalData SET firstName = ${escapeString(req.body.firstName)}, lastName = ${escapeString(req.body.lastName)}, email = ${escapeString(req.body.email)}, physicalAddress = ${escapeString(req.body.physicalAddress)}, enableWol = ${req.body.enableWol}, enableGuacamole = ${req.body.enableGuacamole}, guacamoleHost = ${escapeString(req.body.guacamoleHost ?? "")}, nickname = ${escapeString(req.body.nickname ?? "")}, defaultFont = ${escapeString(req.body.defaultFont)};`;
|
||||||
|
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getPersonalData,
|
||||||
|
updatePersonalData,
|
||||||
|
getGuacamoleHost,
|
||||||
|
getGuacamoleEnabled,
|
||||||
|
getWolEnabled,
|
||||||
|
};
|
||||||
78
commands/providerData.cjs
Normal file
78
commands/providerData.cjs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
|
||||||
|
const getProviders = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * FROM trigger_database.providers;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getDefaultProvider = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `SELECT * FROM trigger_database.providers WHERE \`default\` = 1;`;
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const postProvider = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
if (req.body.default === true || req.body.default === 1) {
|
||||||
|
const query = `UPDATE trigger_database.providers SET \`default\` = 0;`;
|
||||||
|
conn.query(query);
|
||||||
|
}
|
||||||
|
const query = `INSERT INTO trigger_database.providers (name, url, prefix, \`default\`, icon) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.prefix)}, ${req.body.default ? 1 : 0}, ${escapeString(req.body.icon)});`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const patchProvider = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
if (req.body.default === true || req.body.default === 1) {
|
||||||
|
const query = `UPDATE trigger_database.providers SET \`default\` = 0;`;
|
||||||
|
conn.query(query);
|
||||||
|
}
|
||||||
|
const query = `UPDATE trigger_database.providers SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, prefix = ${escapeString(req.body.prefix)}, \`default\` = ${req.body.default}, icon = ${escapeString(req.body.icon)} WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteProvider = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.providers WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getProviders,
|
||||||
|
getDefaultProvider,
|
||||||
|
postProvider,
|
||||||
|
patchProvider,
|
||||||
|
deleteProvider,
|
||||||
|
};
|
||||||
191
commands/themeData.cjs
Normal file
191
commands/themeData.cjs
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
const fs = require("node:fs");
|
||||||
|
|
||||||
|
const getThemes = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * FROM trigger_database.themes;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const addTheme = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.themes (name, backgroundImage, backgroundColor, searchColor, primaryColor, accentColor, borderColor, themeFont) VALUES (${escapeString(req.body.name)},${escapeString(req.body.backgroundImage)},${escapeString(req.body.backgroundColor)},${escapeString(req.body.searchColor)},${escapeString(req.body.primaryColor)},${escapeString(req.body.accentColor)},${escapeString(req.body.borderColor)},${escapeString(req.body.themeFont)})`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateTheme = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.themes SET name = ${escapeString(req.body.name)}, backgroundImage = ${escapeString(req.body.backgroundImage)}, backgroundColor = ${escapeString(req.body.backgroundColor)}, searchColor = ${escapeString(req.body.searchColor)}, primaryColor = ${escapeString(req.body.primaryColor)}, accentColor = ${escapeString(req.body.accentColor)}, borderColor = ${escapeString(req.body.borderColor)}, randomEnabled = ${req.body.randomEnabled ? 1 : 0}, textShadowsEnabled = ${req.body.textShadowsEnabled ? 1 : 0}, appShadowsEnabled = ${req.body.appShadowsEnabled ? 1 : 0}, themeFont = ${req.body.themeFont === null ? null : escapeString(req.body.themeFont)} WHERE id = ${req.body.id};`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteTheme = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.themes WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getThemePlaylists = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * FROM trigger_database.themePlaylists;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const addThemePlaylist = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.themePlaylists (name, themeList) VALUES (${escapeString(req.body.name)},${escapeString(req.body.themeList)});`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateThemePlaylist = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.themePlaylists SET name = ${escapeString(req.body.name)}, themeList = ${escapeString(req.body.themeList)} WHERE id = ${req.body.id};`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteThemePlaylist = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.themePlaylists WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getBackgrounds = async (_req, res) => {
|
||||||
|
fs.readdir(
|
||||||
|
"../TriggerFrontend/backgrounds",
|
||||||
|
{ withFileTypes: true },
|
||||||
|
(_err, files) => {
|
||||||
|
res
|
||||||
|
.status(200)
|
||||||
|
.send(files.filter((file) => file.isFile()).map((file) => file.name));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const uploadBackground = async (req, res) => {
|
||||||
|
const image = req.file.path;
|
||||||
|
const thumbnail = `${req.file.destination}thumbs/${req.file.filename}`;
|
||||||
|
exec(`convert ${image} -resize 'x1080' -define jpeg:extent=300kb ${image}`);
|
||||||
|
exec(`convert ${image} -resize 'x360' -define jpeg:extent=75kb ${thumbnail}`);
|
||||||
|
res.status(200).send({ status: "success", statusText: image });
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateBackground = async (req, res) => {
|
||||||
|
fs.rename(
|
||||||
|
`../TriggerFrontend/backgrounds/${req.body.fileName}`,
|
||||||
|
`../TriggerFrontend/backgrounds/${req.body.newFileName}`,
|
||||||
|
(err) => {
|
||||||
|
if (err) throw err;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
fs.rename(
|
||||||
|
`../TriggerFrontend/backgrounds/thumbs/${req.body.fileName}`,
|
||||||
|
`../TriggerFrontend/backgrounds/thumbs/${req.body.newFileName}`,
|
||||||
|
(err) => {
|
||||||
|
if (err) throw err;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.themes SET backgroundImage = ${escapeString(req.body.newFileName)} WHERE backgroundImage = ${escapeString(req.body.fileName)};`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteBackground = async (req, res) => {
|
||||||
|
fs.rm(`../TriggerFrontend/backgrounds/${req.body.fileName}`, (_err) => {
|
||||||
|
if (_err) throw _err;
|
||||||
|
});
|
||||||
|
fs.rm(
|
||||||
|
`../TriggerFrontend/backgrounds/thumbs/${req.body.fileName}`,
|
||||||
|
(_err) => {
|
||||||
|
if (_err) throw _err;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.themes SET backgroundImage = 'none' WHERE backgroundImage = ${escapeString(req.body.fileName)};`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getThemes,
|
||||||
|
addTheme,
|
||||||
|
updateTheme,
|
||||||
|
deleteTheme,
|
||||||
|
getThemePlaylists,
|
||||||
|
addThemePlaylist,
|
||||||
|
updateThemePlaylist,
|
||||||
|
deleteThemePlaylist,
|
||||||
|
getBackgrounds,
|
||||||
|
uploadBackground,
|
||||||
|
updateBackground,
|
||||||
|
deleteBackground,
|
||||||
|
};
|
||||||
67
commands/wolData.cjs
Normal file
67
commands/wolData.cjs
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
const { pool } = require("../triggerBackend.cjs");
|
||||||
|
const escapeString = require("sql-escape-string");
|
||||||
|
|
||||||
|
const getWolClients = async (_req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = "SELECT * from trigger_database.wolClients;";
|
||||||
|
conn.query(query).then((rows) => {
|
||||||
|
res.status(200).send(rows);
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const createWolClient = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `INSERT INTO trigger_database.wolClients (hostname, macAddress) VALUES (${escapeString(req.body.hostname)}, ${escapeString(req.body.macAddress)})`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateWolClient = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `UPDATE trigger_database.wolClients SET hostname = ${escapeString(req.body.hostname)}, macAddress = ${escapeString(req.body.macAddress)} WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteWolClient = async (req, res) => {
|
||||||
|
const conn = await pool.getConnection();
|
||||||
|
const query = `DELETE FROM trigger_database.wolClients WHERE id = ${req.body.id}`;
|
||||||
|
conn
|
||||||
|
.query(query)
|
||||||
|
.then((_rows) => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.status(500).send({ error: err });
|
||||||
|
});
|
||||||
|
conn.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
const wakeWolClient = async (req, res) => {
|
||||||
|
wol.wake(req.body.macAddress, () => {
|
||||||
|
res.status(200).send({ status: "success" });
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getWolClients,
|
||||||
|
createWolClient,
|
||||||
|
updateWolClient,
|
||||||
|
deleteWolClient,
|
||||||
|
wakeWolClient,
|
||||||
|
};
|
||||||
@@ -1,13 +1,11 @@
|
|||||||
require("dotenv").config();
|
require("dotenv").config();
|
||||||
const express = require("express");
|
const express = require("express");
|
||||||
const cors = require("cors");
|
const cors = require("cors");
|
||||||
const fs = require("node:fs");
|
const _wol = require("wol");
|
||||||
const wol = require("wol");
|
|
||||||
const mariadb = require("mariadb");
|
const mariadb = require("mariadb");
|
||||||
const bodyParser = require("body-parser");
|
const bodyParser = require("body-parser");
|
||||||
const escapeString = require("sql-escape-string");
|
const _escapeString = require("sql-escape-string");
|
||||||
const multer = require("multer");
|
const multer = require("multer");
|
||||||
const { exec } = require("node:child_process");
|
|
||||||
|
|
||||||
const pool = mariadb.createPool({
|
const pool = mariadb.createPool({
|
||||||
host: process.env.DB_HOST,
|
host: process.env.DB_HOST,
|
||||||
@@ -17,7 +15,86 @@ const pool = mariadb.createPool({
|
|||||||
connectionLimit: 5,
|
connectionLimit: 5,
|
||||||
});
|
});
|
||||||
|
|
||||||
const app = express();
|
module.exports = { pool };
|
||||||
|
|
||||||
|
const {
|
||||||
|
getPersonalData,
|
||||||
|
updatePersonalData,
|
||||||
|
getGuacamoleHost,
|
||||||
|
getGuacamoleEnabled,
|
||||||
|
getWolEnabled,
|
||||||
|
} = require("./commands/personalData.cjs");
|
||||||
|
const {
|
||||||
|
getMessages,
|
||||||
|
getDisplayedGreeting,
|
||||||
|
postMessage,
|
||||||
|
patchMessage,
|
||||||
|
deleteMessage,
|
||||||
|
} = require("./commands/messageData.cjs");
|
||||||
|
const {
|
||||||
|
getApplications,
|
||||||
|
getEnabledApplications,
|
||||||
|
postApplication,
|
||||||
|
patchApplication,
|
||||||
|
deleteApplication,
|
||||||
|
getAppCategories,
|
||||||
|
updateApplicationOrder,
|
||||||
|
} = require("./commands/applicationData.cjs");
|
||||||
|
const {
|
||||||
|
getBookmarks,
|
||||||
|
postBookmark,
|
||||||
|
patchBookmark,
|
||||||
|
deleteBookmark,
|
||||||
|
patchBookmarkOrder,
|
||||||
|
getBookmarkCategories,
|
||||||
|
postBookmarkCategory,
|
||||||
|
patchBookmarkCategory,
|
||||||
|
deleteBookmarkCategory,
|
||||||
|
patchBookmarkCategoryOrder,
|
||||||
|
} = require("./commands/bookmarkData.cjs");
|
||||||
|
const {
|
||||||
|
getProviders,
|
||||||
|
getDefaultProvider,
|
||||||
|
postProvider,
|
||||||
|
patchProvider,
|
||||||
|
deleteProvider,
|
||||||
|
} = require("./commands/providerData.cjs");
|
||||||
|
|
||||||
|
const {
|
||||||
|
getThemes,
|
||||||
|
addTheme,
|
||||||
|
updateTheme,
|
||||||
|
deleteTheme,
|
||||||
|
getThemePlaylists,
|
||||||
|
addThemePlaylist,
|
||||||
|
updateThemePlaylist,
|
||||||
|
deleteThemePlaylist,
|
||||||
|
getBackgrounds,
|
||||||
|
uploadBackground,
|
||||||
|
updateBackground,
|
||||||
|
deleteBackground,
|
||||||
|
} = require("./commands/themeData.cjs");
|
||||||
|
|
||||||
|
const {
|
||||||
|
getWolClients,
|
||||||
|
createWolClient,
|
||||||
|
updateWolClient,
|
||||||
|
deleteWolClient,
|
||||||
|
wakeWolClient,
|
||||||
|
} = require("./commands/wolData.cjs");
|
||||||
|
|
||||||
|
const {
|
||||||
|
getGuacamoleClients,
|
||||||
|
createGuacamoleClient,
|
||||||
|
updateGuacamoleClient,
|
||||||
|
deleteGuacamoleClient,
|
||||||
|
} = require("./commands/guacamoleData.cjs");
|
||||||
|
|
||||||
|
const {
|
||||||
|
getSearchHistory,
|
||||||
|
addSearchHistoryItem,
|
||||||
|
deleteSearchHistoryItem,
|
||||||
|
} = require("./commands/SearchData.cjs");
|
||||||
|
|
||||||
const storage = multer.diskStorage({
|
const storage = multer.diskStorage({
|
||||||
destination: (_req, _file, cb) => {
|
destination: (_req, _file, cb) => {
|
||||||
@@ -30,6 +107,9 @@ const storage = multer.diskStorage({
|
|||||||
|
|
||||||
const uploads = multer({ storage: storage });
|
const uploads = multer({ storage: storage });
|
||||||
|
|
||||||
|
const app = express();
|
||||||
|
|
||||||
|
app.use(cors());
|
||||||
app.use(bodyParser.json({ limit: "50mb" }));
|
app.use(bodyParser.json({ limit: "50mb" }));
|
||||||
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
|
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
|
||||||
app.use(
|
app.use(
|
||||||
@@ -41,770 +121,182 @@ app.use(
|
|||||||
// Personal Data //
|
// Personal Data //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/personalData`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/personalData`, getPersonalData);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT * FROM trigger_database.personalData;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/guacamoleHost`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/guacamoleHost`, getGuacamoleHost);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT guacamoleHost FROM trigger_database.personalData;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
})
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/guacamoleEnabled`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/guacamoleEnabled`, getGuacamoleEnabled);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT enableGuacamole FROM trigger_database.personalData;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
})
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/wolEnabled`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/wolEnabled`, getWolEnabled);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT enableWol FROM trigger_database.personalData;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
})
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/personalData`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/personalData`, updatePersonalData);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.personalData SET firstName = ${escapeString(req.body.firstName)}, lastName = ${escapeString(req.body.lastName)}, email = ${escapeString(req.body.email)}, physicalAddress = ${escapeString(req.body.physicalAddress)}, enableWol = ${req.body.enableWol}, enableGuacamole = ${req.body.enableGuacamole}, guacamoleHost = ${escapeString(req.body.guacamoleHost ?? "")}, nickname = ${escapeString(req.body.nickname ?? "")}, defaultFont = ${escapeString(req.body.defaultFont)};`;
|
|
||||||
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Messages //
|
// Messages //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/messages`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/messages`, getMessages);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT * FROM trigger_database.messages;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/displayedGreeting`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/displayedGreeting`, getDisplayedGreeting);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query =
|
|
||||||
"SELECT * FROM trigger_database.messages WHERE customGreeting = 1 ORDER BY RAND() LIMIT 1;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/messages`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/messages`, postMessage);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `INSERT INTO trigger_database.messages (message) VALUES (${escapeString(req.body.message)});`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/messages`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/messages`, patchMessage);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.messages SET message = ${escapeString(req.body.message)}, customGreeting = ${req.body.customGreeting} WHERE id = ${req.body.id};`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/messages`, async (req, res) => {
|
app.delete(`/${process.env.API_URI}/api/messages`, deleteMessage);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `DELETE FROM trigger_database.messages WHERE id = ${req.body.id};`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Application Data //
|
// Application Data //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/applications`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/applications`, getApplications);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT * FROM trigger_database.applications;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/enabledApplications`, async (_req, res) => {
|
app.get(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/enabledApplications`,
|
||||||
const query =
|
getEnabledApplications,
|
||||||
"SELECT * FROM trigger_database.applications WHERE enabled = 1;";
|
);
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/applications`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/applications`, postApplication);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `INSERT INTO trigger_database.applications (name, url, icon, baseUrl, filterName, enabled, \`index\`) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.icon)}, ${escapeString(req.body.baseUrl)}, ${escapeString(req.body.filterName)}, ${req.body.enabled}, ${req.body.index});`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/applications`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/applications`, patchApplication);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.applications SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, icon = ${escapeString(req.body.icon)}, baseUrl = ${escapeString(req.body.baseUrl)}, filterName = ${escapeString(req.body.filterName)}, enabled = ${req.body.enabled} WHERE id = ${req.body.id};`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/applications`, async (req, res) => {
|
app.delete(`/${process.env.API_URI}/api/applications`, deleteApplication);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `DELETE FROM trigger_database.applications WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/appCategories`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/appCategories`, getAppCategories);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query =
|
|
||||||
"SELECT filterName FROM trigger_database.applications UNION SELECT filterName FROM trigger_database.bookmarkCategories;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/applicationOrder`, async (req, res) => {
|
app.patch(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/applicationOrder`,
|
||||||
req.body.map((link) => {
|
updateApplicationOrder,
|
||||||
conn
|
);
|
||||||
.query(
|
|
||||||
"UPDATE trigger_database.applications SET `index` = ? where id IN (?)",
|
|
||||||
[link.index, link.id],
|
|
||||||
)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
res.send({ status: "success" });
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Bookmark Data //
|
// Bookmark Data //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/bookmarks`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/bookmarks`, getBookmarks);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT * FROM trigger_database.bookmarks;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/bookmarks`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/bookmarks`, postBookmark);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `INSERT INTO trigger_database.bookmarks (name, url, category, \`index\`, enabled) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.category)}, ${req.body.index}, ${req.body.enabled});`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/bookmarks`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/bookmarks`, patchBookmark);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.bookmarks SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, category = ${escapeString(req.body.category)}, \`index\` = ${req.body.index}, enabled = ${req.body.enabled} WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/bookmarks`, async (req, res) => {
|
app.delete(`/${process.env.API_URI}/api/bookmarks`, deleteBookmark);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
if (req.body.length > 1) {
|
|
||||||
req.body.map((link) => {
|
|
||||||
conn
|
|
||||||
.query("DELETE FROM trigger_database.bookmarks where id IN (?)", [
|
|
||||||
link.id,
|
|
||||||
])
|
|
||||||
.then(() => {
|
|
||||||
res.status(200);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
res.send({ status: "success" });
|
|
||||||
} else {
|
|
||||||
const query = `DELETE FROM trigger_database.bookmarks WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then(() => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
}
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/bookmarkOrder`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/bookmarkOrder`, patchBookmarkOrder);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
req.body.map((link) => {
|
|
||||||
conn
|
|
||||||
.query(
|
|
||||||
"UPDATE trigger_database.bookmarks SET `index` = ? where id IN (?)",
|
|
||||||
[link.index, link.id],
|
|
||||||
)
|
|
||||||
.then(() => {
|
|
||||||
res.status(200);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
res.send({ status: "success" });
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/bookmarkCategories`, async (_req, res) => {
|
app.get(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/bookmarkCategories`,
|
||||||
const query = "SELECT * from trigger_database.bookmarkCategories;";
|
getBookmarkCategories,
|
||||||
conn.query(query).then((rows) => {
|
);
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/bookmarkCategories`, async (req, res) => {
|
app.post(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/bookmarkCategories`,
|
||||||
const query = `INSERT INTO trigger_database.bookmarkCategories (categoryName, categoryIndex, filterName) VALUES (${escapeString(req.body.categoryName)},${req.body.categoryIndex || 0},${escapeString(req.body.filterName)})`;
|
postBookmarkCategory,
|
||||||
conn.query(query).then((_rows) => {
|
);
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/bookmarkCategories`, async (req, res) => {
|
app.patch(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/bookmarkCategories`,
|
||||||
const query = `UPDATE trigger_database.bookmarkCategories SET categoryName = ${escapeString(req.body.categoryName)}, filterName = ${escapeString(req.body.filterName)}, enabled = ${req.body.enabled} WHERE id = ${req.body.id};`;
|
patchBookmarkCategory,
|
||||||
conn
|
);
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/bookmarkCategories`, async (req, res) => {
|
app.delete(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/bookmarkCategories`,
|
||||||
const query = `DELETE FROM trigger_database.bookmarkCategories WHERE id = ${req.body.id}`;
|
deleteBookmarkCategory,
|
||||||
conn
|
);
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/bookmarkCategoryOrder`, async (req, res) => {
|
app.patch(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/bookmarkCategoryOrder`,
|
||||||
req.body.map((category) => {
|
patchBookmarkCategoryOrder,
|
||||||
conn
|
);
|
||||||
.query(
|
|
||||||
"UPDATE trigger_database.bookmarkCategories SET categoryIndex = ? where id IN (?)",
|
|
||||||
[category.index, category.id],
|
|
||||||
)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
res.send({ status: "success" });
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Provider Data //
|
// Provider Data //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/providers`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/providers`, getProviders);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT * FROM trigger_database.providers;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/providers/default`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/providers/default`, getDefaultProvider);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `SELECT * FROM trigger_database.providers WHERE \`default\` = 1;`;
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/providers`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/providers`, postProvider);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
if (req.body.default === true || req.body.default === 1) {
|
|
||||||
const query = `UPDATE trigger_database.providers SET \`default\` = 0;`;
|
|
||||||
conn.query(query);
|
|
||||||
}
|
|
||||||
const query = `INSERT INTO trigger_database.providers (name, url, prefix, \`default\`, icon) VALUES (${escapeString(req.body.name)}, ${escapeString(req.body.url)}, ${escapeString(req.body.prefix)}, ${req.body.default ? 1 : 0}, ${escapeString(req.body.icon)});`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/providers`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/providers`, patchProvider);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
if (req.body.default === true || req.body.default === 1) {
|
|
||||||
const query = `UPDATE trigger_database.providers SET \`default\` = 0;`;
|
|
||||||
conn.query(query);
|
|
||||||
}
|
|
||||||
const query = `UPDATE trigger_database.providers SET name = ${escapeString(req.body.name)}, url = ${escapeString(req.body.url)}, prefix = ${escapeString(req.body.prefix)}, \`default\` = ${req.body.default}, icon = ${escapeString(req.body.icon)} WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/providers`, async (req, res) => {
|
app.delete(`/${process.env.API_URI}/api/providers`, deleteProvider);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `DELETE FROM trigger_database.providers WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Theming //
|
// Theming //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/themes`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/themes`, getThemes);
|
||||||
const 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(`/${process.env.API_URI}/api/themes`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/themes`, addTheme);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `INSERT INTO trigger_database.themes (name, backgroundImage, backgroundColor, searchColor, primaryColor, accentColor, borderColor, themeFont) VALUES (${escapeString(req.body.name)},${escapeString(req.body.backgroundImage)},${escapeString(req.body.backgroundColor)},${escapeString(req.body.searchColor)},${escapeString(req.body.primaryColor)},${escapeString(req.body.accentColor)},${escapeString(req.body.borderColor)},${escapeString(req.body.themeFont)})`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/themes`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/themes`, updateTheme);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.themes SET name = ${escapeString(req.body.name)}, backgroundImage = ${escapeString(req.body.backgroundImage)}, backgroundColor = ${escapeString(req.body.backgroundColor)}, searchColor = ${escapeString(req.body.searchColor)}, primaryColor = ${escapeString(req.body.primaryColor)}, accentColor = ${escapeString(req.body.accentColor)}, borderColor = ${escapeString(req.body.borderColor)}, randomEnabled = ${req.body.randomEnabled ? 1 : 0}, textShadowsEnabled = ${req.body.textShadowsEnabled ? 1 : 0}, appShadowsEnabled = ${req.body.appShadowsEnabled ? 1 : 0}, themeFont = ${req.body.themeFont === null ? null : escapeString(req.body.themeFont)} WHERE id = ${req.body.id};`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/themes`, async (req, res) => {
|
app.delete(`/${process.env.API_URI}/api/themes`, deleteTheme);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `DELETE FROM trigger_database.themes WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/themePlaylists`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/themePlaylists`, getThemePlaylists);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT * FROM trigger_database.themePlaylists;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/themePlaylists`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/themePlaylists`, addThemePlaylist);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `INSERT INTO trigger_database.themePlaylists (name, themeList) VALUES (${escapeString(req.body.name)},${escapeString(req.body.themeList)});`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/themePlaylists`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/themePlaylists`, updateThemePlaylist);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.themePlaylists SET name = ${escapeString(req.body.name)}, themeList = ${escapeString(req.body.themeList)} WHERE id = ${req.body.id};`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/themePlaylists`, async (req, res) => {
|
app.delete(`/${process.env.API_URI}/api/themePlaylists`, deleteThemePlaylist);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `DELETE FROM trigger_database.themePlaylists WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/backgrounds`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/backgrounds`, getBackgrounds);
|
||||||
fs.readdir(
|
|
||||||
"../TriggerFrontend/backgrounds",
|
|
||||||
{ withFileTypes: true },
|
|
||||||
(_err, files) => {
|
|
||||||
res
|
|
||||||
.status(200)
|
|
||||||
.send(files.filter((file) => file.isFile()).map((file) => file.name));
|
|
||||||
},
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(
|
app.post(
|
||||||
`/${process.env.API_URI}/api/backgrounds`,
|
`/${process.env.API_URI}/api/backgrounds`,
|
||||||
uploads.single("background"),
|
uploads.single("background"),
|
||||||
async (req, res) => {
|
uploadBackground,
|
||||||
const image = req.file.path;
|
|
||||||
const thumbnail = `${req.file.destination}thumbs/${req.file.filename}`;
|
|
||||||
exec(`convert ${image} -resize 'x1080' -define jpeg:extent=300kb ${image}`);
|
|
||||||
exec(
|
|
||||||
`convert ${image} -resize 'x360' -define jpeg:extent=75kb ${thumbnail}`,
|
|
||||||
);
|
|
||||||
res.status(200).send({ status: "success", statusText: image });
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/backgrounds`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/backgrounds`, updateBackground);
|
||||||
fs.rename(
|
|
||||||
`../TriggerFrontend/backgrounds/${req.body.fileName}`,
|
|
||||||
`../TriggerFrontend/backgrounds/${req.body.newFileName}`,
|
|
||||||
(err) => {
|
|
||||||
if (err) throw err;
|
|
||||||
},
|
|
||||||
);
|
|
||||||
fs.rename(
|
|
||||||
`../TriggerFrontend/backgrounds/thumbs/${req.body.fileName}`,
|
|
||||||
`../TriggerFrontend/backgrounds/thumbs/${req.body.newFileName}`,
|
|
||||||
(err) => {
|
|
||||||
if (err) throw err;
|
|
||||||
},
|
|
||||||
);
|
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.themes SET backgroundImage = ${escapeString(req.body.newFileName)} WHERE backgroundImage = ${escapeString(req.body.fileName)};`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/backgrounds`, async (req, res) => {
|
app.delete(`/${process.env.API_URI}/api/backgrounds`, deleteBackground);
|
||||||
fs.rm(`../TriggerFrontend/backgrounds/${req.body.fileName}`, (_err) => {
|
|
||||||
if (_err) throw _err;
|
|
||||||
});
|
|
||||||
fs.rm(
|
|
||||||
`../TriggerFrontend/backgrounds/thumbs/${req.body.fileName}`,
|
|
||||||
(_err) => {
|
|
||||||
if (_err) throw _err;
|
|
||||||
},
|
|
||||||
);
|
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.themes SET backgroundImage = 'none' WHERE backgroundImage = ${escapeString(req.body.fileName)};`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Wake on LAN Clients //
|
// Wake on LAN Clients //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/wolClients`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/wolClients`, getWolClients);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT * from trigger_database.wolClients;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/wolClients`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/wolClients`, createWolClient);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `INSERT INTO trigger_database.wolClients (hostname, macAddress) VALUES (${escapeString(req.body.hostname)}, ${escapeString(req.body.macAddress)})`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/wolClients`, async (req, res) => {
|
app.patch(`/${process.env.API_URI}/api/wolClients`, updateWolClient);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `UPDATE trigger_database.wolClients SET hostname = ${escapeString(req.body.hostname)}, macAddress = ${escapeString(req.body.macAddress)} WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/wolClients`, async (req, res) => {
|
app.delete(`/${process.env.API_URI}/api/wolClients`, deleteWolClient);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `DELETE FROM trigger_database.wolClients WHERE id = ${req.body.id}`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/wakeClient`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/wakeClient`, wakeWolClient);
|
||||||
wol.wake(req.body.macAddress, () => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Guacamole Clients //
|
// Guacamole Clients //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/guacamoleClients`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/guacamoleClients`, getGuacamoleClients);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = "SELECT * from trigger_database.guacamoleClients;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/guacamoleClients`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/guacamoleClients`, createGuacamoleClient);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `INSERT INTO trigger_database.guacamoleClients (clientName, clientIdentifier, enabled, type) VALUES (${escapeString(req.body.clientName)}, ${escapeString(req.body.clientIdentifier)}, ${req.body.enabled}, ${escapeString(req.body.type)})`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.patch(`/${process.env.API_URI}/api/guacamoleClients`, async (req, res) => {
|
app.patch(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/guacamoleClients`,
|
||||||
const query = `UPDATE trigger_database.guacamoleClients SET clientName = ${escapeString(req.body.clientName)}, clientIdentifier = ${escapeString(req.body.clientIdentifier)} , enabled = ${req.body.enabled}, type = ${escapeString(req.body.type)} WHERE id = ${req.body.id}`;
|
updateGuacamoleClient,
|
||||||
conn
|
);
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/guacamoleClients`, async (req, res) => {
|
app.delete(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/guacamoleClients`,
|
||||||
const query = `DELETE FROM trigger_database.guacamoleClients WHERE id = ${req.body.id}`;
|
deleteGuacamoleClient,
|
||||||
conn
|
);
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Search //
|
// Search //
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
app.get(`/${process.env.API_URI}/api/searchHistory`, async (_req, res) => {
|
app.get(`/${process.env.API_URI}/api/searchHistory`, getSearchHistory);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query =
|
|
||||||
"SELECT * FROM trigger_database.searchHistory ORDER BY dateTimeStamp DESC;";
|
|
||||||
conn.query(query).then((rows) => {
|
|
||||||
res.status(200).send(rows);
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post(`/${process.env.API_URI}/api/searchHistory`, async (req, res) => {
|
app.post(`/${process.env.API_URI}/api/searchHistory`, addSearchHistoryItem);
|
||||||
const conn = await pool.getConnection();
|
|
||||||
const query = `INSERT INTO trigger_database.searchHistory (prefix, provider, searchTerm) VALUES (${escapeString(req.body.prefix)}, ${escapeString(req.body.provider)}, ${escapeString(req.body.searchTerm)})`;
|
|
||||||
conn
|
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete(`/${process.env.API_URI}/api/searchHistory`, async (req, res) => {
|
app.delete(
|
||||||
const conn = await pool.getConnection();
|
`/${process.env.API_URI}/api/searchHistory`,
|
||||||
const query = `DELETE FROM trigger_database.searchHistory WHERE id = ${req.body.id}`;
|
deleteSearchHistoryItem,
|
||||||
conn
|
);
|
||||||
.query(query)
|
|
||||||
.then((_rows) => {
|
|
||||||
res.status(200).send({ status: "success" });
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
res.status(500).send({ error: err });
|
|
||||||
});
|
|
||||||
conn.end();
|
|
||||||
});
|
|
||||||
|
|
||||||
app.listen(process.env.API_PORT, "0.0.0.0", () => {});
|
app.listen(process.env.API_PORT, "0.0.0.0", () => {});
|
||||||
|
|||||||
Reference in New Issue
Block a user