diff --git a/.env.example b/.env.example index 7961d53..1fc6a48 100644 --- a/.env.example +++ b/.env.example @@ -11,4 +11,7 @@ UPTIME_KUMA_ENABLED=false # URL for Uptime Kuma UPTIME_KUMA_URL="http://localhost:3001/metrics" # API key for Uptime Kuma -UPTIME_KUMA_API_KEY="API_KEY_GOES_HERE" \ No newline at end of file +UPTIME_KUMA_API_KEY="API_KEY_GOES_HERE" + +# The password for the computer WebSocket +WEBSOCKET_PASSWORD="PASSWORD_GOES_HERE" \ No newline at end of file diff --git a/internal/handler/computer.go b/internal/handler/computer.go index cf130c5..a958fb0 100644 --- a/internal/handler/computer.go +++ b/internal/handler/computer.go @@ -6,6 +6,7 @@ import ( "encoding/json" "log/slog" "net/http" + "os" "github.com/gorilla/websocket" ) @@ -18,6 +19,12 @@ var upgrader = websocket.Upgrader{ } func HandleComputerWebSocket(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Authorization") != os.Getenv("WEBSOCKET_PASSWORD") { + w.WriteHeader(http.StatusUnauthorized) + w.Write([]byte("Unauthorized")) + return + } + conn, err := upgrader.Upgrade(w, r, nil) if err != nil { slog.Error("Error when upgrading websocket connection", slog.Any("error", err)) @@ -25,7 +32,7 @@ func HandleComputerWebSocket(w http.ResponseWriter, r *http.Request) { } defer conn.Close() - slog.Info("Websocket connection established!") + slog.Info("WebSocket connection established!") service.ComputerData.Online = true // Read messages