UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.

246 lines (245 loc) 10.9 kB
import { __exportAll } from "../_virtual/_rolldown/runtime.js"; import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.129.0/helpers/decorateMetadata.js"; import { __decorate } from "../_virtual/_@oxc-project_runtime@0.129.0/helpers/decorate.js"; import "../services/printer-api.interface.js"; import { validateInput } from "../handlers/validators.js"; import { AppConstants } from "../server.constants.js"; import { SettingsStore } from "../state/settings.store.js"; import { ROLES } from "../constants/authorization.constants.js"; import { authenticate, authorizeRoles } from "../middleware/authenticate.js"; import { demoUserNotAllowed } from "../middleware/demo.middleware.js"; import { loginRequiredSchema, registrationEnabledSchema } from "./validation/setting.validation.js"; import { PrinterCache } from "../state/printer.cache.js"; import { PrinterThumbnailCache } from "../state/printer-thumbnail.cache.js"; import { bambuSupportSchema, credentialCoreSettingUpdateSchema, frontendSettingsUpdateSchema, moonrakerSupportSchema, prusaLinkSupportSchema, sentryDiagnosticsEnabledSchema, timeoutSettingsUpdateSchema } from "../services/validators/settings-service.validation.js"; import { DELETE, GET, PATCH, POST, PUT, before, route } from "awilix-express"; //#region src/controllers/settings.controller.ts var settings_controller_exports = /* @__PURE__ */ __exportAll({ SettingsController: () => SettingsController }); var _ref, _ref2, _ref3, _SettingsController; let SettingsController = _SettingsController = class SettingsController { logger; constructor(loggerFactory, serverVersion, printerCache, printerService, settingsStore, printerThumbnailCache) { this.serverVersion = serverVersion; this.printerCache = printerCache; this.printerService = printerService; this.settingsStore = settingsStore; this.printerThumbnailCache = printerThumbnailCache; this.logger = loggerFactory(_SettingsController.name); } async getSettings(req, res) { let connection; try { connection = { clientIp: req.socket?.remoteAddress, version: this.serverVersion }; } catch (e) { this.logger.warn("Could not fetch server IP address"); } const settings = this.settingsStore.getSettings(); res.send({ ...settings, connection }); } async getSettingsSensitive(req, res) { const settings = this.settingsStore.getSettingsSensitive(); res.send(settings); } async updateSentryDiagnosticsEnabled(req, res) { const { enabled } = await validateInput(req.body, sentryDiagnosticsEnabledSchema); const result = this.settingsStore.setSentryDiagnosticsEnabled(enabled); res.send(result); } async updateMoonrakerSupport(req, res) { const { enabled } = await validateInput(req.body, moonrakerSupportSchema); const result = await this.settingsStore.setExperimentalMoonrakerSupport(enabled); if (!enabled) { const klipperPrinters = (await this.printerCache.listCachedPrinters(false)).filter((p) => p.printerType === 1); for (const printer of klipperPrinters) await this.printerService.updateEnabled(printer.id, false); } res.send(result); } async updatePrusaLinkSupport(req, res) { const { enabled } = await validateInput(req.body, prusaLinkSupportSchema); const result = await this.settingsStore.setExperimentalPrusaLinkSupport(enabled); if (!enabled) { const prusaLinkPrinters = (await this.printerCache.listCachedPrinters(false)).filter((p) => p.printerType === 2); for (const printer of prusaLinkPrinters) await this.printerService.updateEnabled(printer.id, false); } res.send(result); } async updateBambuSupport(req, res) { const { enabled } = await validateInput(req.body, bambuSupportSchema); const result = await this.settingsStore.setExperimentalBambuSupport(enabled); if (!enabled) { const bambuPrinters = (await this.printerCache.listCachedPrinters(false)).filter((p) => p.printerType === 3); for (const printer of bambuPrinters) await this.printerService.updateEnabled(printer.id, false); } res.send(result); } async updateFrontendSettings(req, res) { const validatedInput = await validateInput(req.body, frontendSettingsUpdateSchema); const result = await this.settingsStore.updateFrontendSettings(validatedInput); res.send(result); } async updateLoginRequiredSettings(req, res) { const { loginRequired } = await validateInput(req.body, loginRequiredSchema); const result = await this.settingsStore.setLoginRequired(loginRequired); res.send(result); } async updateRegistrationEnabledSettings(req, res) { const { registrationEnabled } = await validateInput(req.body, registrationEnabledSchema); const result = await this.settingsStore.setRegistrationEnabled(registrationEnabled); res.send(result); } async updateCredentialSettings(req, res) { const validatedInput = await validateInput(req.body, credentialCoreSettingUpdateSchema); await this.settingsStore.updateCoreCredentialSettings(validatedInput); res.send(); } async updateTimeoutSettings(req, res) { const validatedInput = await validateInput(req.body, timeoutSettingsUpdateSchema); const result = await this.settingsStore.updateTimeoutSettings(validatedInput); res.send(result); } async getSlicerApiKey(req, res) { const apiKey = this.settingsStore.getSlicerApiKey(); res.send({ slicerApiKey: apiKey }); } async regenerateSlicerApiKey(req, res) { const newApiKey = await this.settingsStore.generateSlicerApiKey(); this.logger.log("Slicer API key regenerated"); res.send({ slicerApiKey: newApiKey }); } async deleteSlicerApiKey(req, res) { await this.settingsStore.deleteSlicerApiKey(); this.logger.log("Slicer API key deleted"); res.send({ slicerApiKey: null }); } }; __decorate([ GET(), route("/"), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "getSettings", null); __decorate([ GET(), route("/sensitive"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "getSettingsSensitive", null); __decorate([ PATCH(), route("/sentry-diagnostics"), before([demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updateSentryDiagnosticsEnabled", null); __decorate([ PUT(), route("/experimental-moonraker-support"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updateMoonrakerSupport", null); __decorate([ PUT(), route("/experimental-prusa-link-support"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updatePrusaLinkSupport", null); __decorate([ PUT(), route("/experimental-bambu-support"), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updateBambuSupport", null); __decorate([ PUT(), route("/frontend"), before([authorizeRoles([ROLES.ADMIN])]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updateFrontendSettings", null); __decorate([ PUT(), route("/login-required"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updateLoginRequiredSettings", null); __decorate([ PUT(), route("/registration-enabled"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updateRegistrationEnabledSettings", null); __decorate([ PUT(), route("/credential"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updateCredentialSettings", null); __decorate([ PUT(), route("/timeout"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "updateTimeoutSettings", null); __decorate([ GET(), route("/slicer-api-key"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "getSlicerApiKey", null); __decorate([ POST(), route("/slicer-api-key/regenerate"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "regenerateSlicerApiKey", null); __decorate([ DELETE(), route("/slicer-api-key"), before([authorizeRoles([ROLES.ADMIN]), demoUserNotAllowed]), __decorateMetadata("design:type", Function), __decorateMetadata("design:paramtypes", [Object, Object]), __decorateMetadata("design:returntype", Promise) ], SettingsController.prototype, "deleteSlicerApiKey", null); SettingsController = _SettingsController = __decorate([ route(AppConstants.apiRoute + "/settings"), before([authenticate()]), __decorateMetadata("design:paramtypes", [ Object, String, typeof (_ref = typeof PrinterCache !== "undefined" && PrinterCache) === "function" ? _ref : Object, Object, typeof (_ref2 = typeof SettingsStore !== "undefined" && SettingsStore) === "function" ? _ref2 : Object, typeof (_ref3 = typeof PrinterThumbnailCache !== "undefined" && PrinterThumbnailCache) === "function" ? _ref3 : Object ]) ], SettingsController); //#endregion export { SettingsController, settings_controller_exports }; //# sourceMappingURL=settings.controller.js.map