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