Files
TriggerBackend/triggerBackend.cjs
Sean Edmunds 0417497457 Adding modules
2026-07-09 16:55:54 -05:00

303 lines
7.9 KiB
JavaScript

require("dotenv").config();
const express = require("express");
const cors = require("cors");
const _wol = require("wol");
const mariadb = require("mariadb");
const bodyParser = require("body-parser");
const _escapeString = require("sql-escape-string");
const multer = require("multer");
const pool = mariadb.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
port: process.env.DB_PORT,
connectionLimit: 5,
});
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({
destination: (_req, _file, cb) => {
cb(null, "../TriggerFrontend/backgrounds/");
},
filename: (_req, file, cb) => {
cb(null, file.originalname);
},
});
const uploads = multer({ storage: storage });
const app = express();
app.use(cors());
app.use(bodyParser.json({ limit: "50mb" }));
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
app.use(
`/${process.env.API_URI}/api/backgroundImages`,
express.static("../TriggerFrontend/backgrounds"),
);
//////////////////////////////////////////////
// Personal Data //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/personalData`, getPersonalData);
app.get(`/${process.env.API_URI}/api/guacamoleHost`, getGuacamoleHost);
app.get(`/${process.env.API_URI}/api/guacamoleEnabled`, getGuacamoleEnabled);
app.get(`/${process.env.API_URI}/api/wolEnabled`, getWolEnabled);
app.patch(`/${process.env.API_URI}/api/personalData`, updatePersonalData);
//////////////////////////////////////////////
// Messages //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/messages`, getMessages);
app.get(`/${process.env.API_URI}/api/displayedGreeting`, getDisplayedGreeting);
app.post(`/${process.env.API_URI}/api/messages`, postMessage);
app.patch(`/${process.env.API_URI}/api/messages`, patchMessage);
app.delete(`/${process.env.API_URI}/api/messages`, deleteMessage);
//////////////////////////////////////////////
// Application Data //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/applications`, getApplications);
app.get(
`/${process.env.API_URI}/api/enabledApplications`,
getEnabledApplications,
);
app.post(`/${process.env.API_URI}/api/applications`, postApplication);
app.patch(`/${process.env.API_URI}/api/applications`, patchApplication);
app.delete(`/${process.env.API_URI}/api/applications`, deleteApplication);
app.get(`/${process.env.API_URI}/api/appCategories`, getAppCategories);
app.patch(
`/${process.env.API_URI}/api/applicationOrder`,
updateApplicationOrder,
);
//////////////////////////////////////////////
// Bookmark Data //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/bookmarks`, getBookmarks);
app.post(`/${process.env.API_URI}/api/bookmarks`, postBookmark);
app.patch(`/${process.env.API_URI}/api/bookmarks`, patchBookmark);
app.delete(`/${process.env.API_URI}/api/bookmarks`, deleteBookmark);
app.patch(`/${process.env.API_URI}/api/bookmarkOrder`, patchBookmarkOrder);
app.get(
`/${process.env.API_URI}/api/bookmarkCategories`,
getBookmarkCategories,
);
app.post(
`/${process.env.API_URI}/api/bookmarkCategories`,
postBookmarkCategory,
);
app.patch(
`/${process.env.API_URI}/api/bookmarkCategories`,
patchBookmarkCategory,
);
app.delete(
`/${process.env.API_URI}/api/bookmarkCategories`,
deleteBookmarkCategory,
);
app.patch(
`/${process.env.API_URI}/api/bookmarkCategoryOrder`,
patchBookmarkCategoryOrder,
);
//////////////////////////////////////////////
// Provider Data //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/providers`, getProviders);
app.get(`/${process.env.API_URI}/api/providers/default`, getDefaultProvider);
app.post(`/${process.env.API_URI}/api/providers`, postProvider);
app.patch(`/${process.env.API_URI}/api/providers`, patchProvider);
app.delete(`/${process.env.API_URI}/api/providers`, deleteProvider);
//////////////////////////////////////////////
// Theming //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/themes`, getThemes);
app.post(`/${process.env.API_URI}/api/themes`, addTheme);
app.patch(`/${process.env.API_URI}/api/themes`, updateTheme);
app.delete(`/${process.env.API_URI}/api/themes`, deleteTheme);
app.get(`/${process.env.API_URI}/api/themePlaylists`, getThemePlaylists);
app.post(`/${process.env.API_URI}/api/themePlaylists`, addThemePlaylist);
app.patch(`/${process.env.API_URI}/api/themePlaylists`, updateThemePlaylist);
app.delete(`/${process.env.API_URI}/api/themePlaylists`, deleteThemePlaylist);
app.get(`/${process.env.API_URI}/api/backgrounds`, getBackgrounds);
app.post(
`/${process.env.API_URI}/api/backgrounds`,
uploads.single("background"),
uploadBackground,
);
app.patch(`/${process.env.API_URI}/api/backgrounds`, updateBackground);
app.delete(`/${process.env.API_URI}/api/backgrounds`, deleteBackground);
//////////////////////////////////////////////
// Wake on LAN Clients //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/wolClients`, getWolClients);
app.post(`/${process.env.API_URI}/api/wolClients`, createWolClient);
app.patch(`/${process.env.API_URI}/api/wolClients`, updateWolClient);
app.delete(`/${process.env.API_URI}/api/wolClients`, deleteWolClient);
app.post(`/${process.env.API_URI}/api/wakeClient`, wakeWolClient);
//////////////////////////////////////////////
// Guacamole Clients //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/guacamoleClients`, getGuacamoleClients);
app.post(`/${process.env.API_URI}/api/guacamoleClients`, createGuacamoleClient);
app.patch(
`/${process.env.API_URI}/api/guacamoleClients`,
updateGuacamoleClient,
);
app.delete(
`/${process.env.API_URI}/api/guacamoleClients`,
deleteGuacamoleClient,
);
//////////////////////////////////////////////
// Search //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/searchHistory`, getSearchHistory);
app.post(`/${process.env.API_URI}/api/searchHistory`, addSearchHistoryItem);
app.delete(
`/${process.env.API_URI}/api/searchHistory`,
deleteSearchHistoryItem,
);
app.listen(process.env.API_PORT, "0.0.0.0", () => {});