require("dotenv").config(); const express = require("express"); const cors = require("cors"); const mariadb = require("mariadb"); const bodyParser = require("body-parser"); 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, createMessage, updateMessage, deleteMessage, } = require("./commands/messageData.cjs"); const { getApplications, getEnabledApplications, createApplication, updateApplication, deleteApplication, getAppCategories, updateApplicationOrder, } = require("./commands/applicationData.cjs"); const { getBookmarks, createBookmark, updateBookmark, deleteBookmark, updateBookmarkOrder, getBookmarkCategories, createBookmarkCategory, updateBookmarkCategory, deleteBookmarkCategory, updateBookmarkCategoryOrder, } = require("./commands/bookmarkData.cjs"); const { getProviders, getDefaultProvider, createProvider, updateProvider, deleteProvider, } = require("./commands/providerData.cjs"); const { getThemes, createTheme, updateTheme, deleteTheme, getThemePlaylists, createThemePlaylist, updateThemePlaylist, deleteThemePlaylist, getBackgrounds, addBackground, 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, createSearchHistoryItem, 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`, createMessage); app.patch(`/${process.env.API_URI}/api/messages`, updateMessage); 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`, createApplication); app.patch(`/${process.env.API_URI}/api/applications`, updateApplication); 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`, createBookmark); app.patch(`/${process.env.API_URI}/api/bookmarks`, updateBookmark); app.delete(`/${process.env.API_URI}/api/bookmarks`, deleteBookmark); app.patch(`/${process.env.API_URI}/api/bookmarkOrder`, updateBookmarkOrder); app.get( `/${process.env.API_URI}/api/bookmarkCategories`, getBookmarkCategories, ); app.post( `/${process.env.API_URI}/api/bookmarkCategories`, createBookmarkCategory, ); app.patch( `/${process.env.API_URI}/api/bookmarkCategories`, updateBookmarkCategory, ); app.delete( `/${process.env.API_URI}/api/bookmarkCategories`, deleteBookmarkCategory, ); app.patch( `/${process.env.API_URI}/api/bookmarkCategoryOrder`, updateBookmarkCategoryOrder, ); ////////////////////////////////////////////// // 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`, createProvider); app.patch(`/${process.env.API_URI}/api/providers`, updateProvider); 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`, createTheme); 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`, createThemePlaylist); 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"), addBackground, ); 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`, createSearchHistoryItem); app.delete( `/${process.env.API_URI}/api/searchHistory`, deleteSearchHistoryItem, ); app.listen(process.env.API_PORT, "0.0.0.0", () => {});