303 lines
7.9 KiB
JavaScript
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", () => {});
|