diff --git a/src/RequestType.ts b/src/RequestType.ts index ab170f8..977fb66 100644 --- a/src/RequestType.ts +++ b/src/RequestType.ts @@ -10,5 +10,6 @@ export enum RequestType { CHECK = "CHECK", UPDATE = "UPDATE", INFO = "INFO", - CLEAR_DB = "CLEAR_DB" + CLEAR_DB = "CLEAR_DB", + SHUTDOWN = "SHUTDOWN", } \ No newline at end of file diff --git a/src/routes/ws/websocketRoute.ts b/src/routes/ws/websocketRoute.ts index 453db9e..6cd9a15 100644 --- a/src/routes/ws/websocketRoute.ts +++ b/src/routes/ws/websocketRoute.ts @@ -376,6 +376,10 @@ router.ws('/', async (ws, req, next) => { WebSocketHandler.answerRequest(msg.data["type"] as RequestType, true); break; } + + case RequestType.SHUTDOWN: { + await exec('sudo shutdown now'); + } } break; } diff --git a/src/web/Settings.ts b/src/web/Settings.ts index b5845b6..ea3ecc4 100644 --- a/src/web/Settings.ts +++ b/src/web/Settings.ts @@ -22,6 +22,11 @@ export class Settings { const update = document.getElementById("settings_update") as HTMLButtonElement; update.onclick = () => this.update(); + + const shutdown = document.getElementById("settings_shutdown") as HTMLButtonElement; + shutdown.onclick = () => { + WebWebSocketHandler.request(RequestType.SHUTDOWN).then(); + } } private static onClickRefreshDrinks() { diff --git a/views/index.pug b/views/index.pug index df3a523..e51e87e 100644 --- a/views/index.pug +++ b/views/index.pug @@ -60,7 +60,7 @@ block settings button.btn.btn-primary#settings_getInfo Systeminformationen button.btn.btn-primary#settings_update System aktualisieren button.btn.btn-primary#settings_restart(disabled="disabled") iTender neu starten - button.btn.btn-primary#settings_shutdown(disabled="disabled") iTender herunterfahren + button.btn.btn-primary#settings_shutdown() iTender herunterfahren block main