diff --git a/main/managementinterface.go b/main/managementinterface.go index 6aab6cba..0e71e7eb 100644 --- a/main/managementinterface.go +++ b/main/managementinterface.go @@ -10,6 +10,7 @@ import ( "log" "net/http" "time" + "syscall" ) type SettingMessage struct { @@ -218,7 +219,7 @@ func handleSettingsSetRequest(w http.ResponseWriter, r *http.Request) { log.Printf("handleSettingsSetRequest:json: unrecognized key:%s\n", key) } } - saveSettings() + saveSettings() } } @@ -228,6 +229,18 @@ func handleSettingsSetRequest(w http.ResponseWriter, r *http.Request) { } } +func handleShutdownRequest(w http.ResponseWriter, r *http.Request) { + syscall.Sync() + syscall.Reboot(syscall.LINUX_REBOOT_CMD_POWER_OFF) +} + + +func handleRebootRequest(w http.ResponseWriter, r *http.Request) { + syscall.Sync() + syscall.Reboot(syscall.LINUX_REBOOT_CMD_RESTART) +} + + func managementInterface() { weatherUpdate = NewUIBroadcaster() trafficUpdate = NewUIBroadcaster() @@ -264,6 +277,8 @@ func managementInterface() { http.HandleFunc("/getTowers", handleTowersRequest) http.HandleFunc("/getSettings", handleSettingsGetRequest) http.HandleFunc("/setSettings", handleSettingsSetRequest) + http.HandleFunc("/shutdown", handleShutdownRequest) + http.HandleFunc("/reboot", handleRebootRequest) err := http.ListenAndServe(managementAddr, nil) diff --git a/web/plates/status.html b/web/plates/status.html index e16f42ed..d1a03c07 100755 --- a/web/plates/status.html +++ b/web/plates/status.html @@ -85,4 +85,6 @@ + REBOOT + SHUTDOWN