refactor: remove uptime kuma integration
This commit is contained in:
parent
fa0f5119bd
commit
c92e8670c9
7 changed files with 0 additions and 124 deletions
|
|
@ -8,12 +8,6 @@ LASTFM_USERNAME="axolotlmaid"
|
||||||
# API key for last.fm
|
# API key for last.fm
|
||||||
LASTFM_API_KEY="API_KEY_GOES_HERE"
|
LASTFM_API_KEY="API_KEY_GOES_HERE"
|
||||||
|
|
||||||
# Toggle to enable Uptime Kuma
|
|
||||||
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"
|
|
||||||
|
|
||||||
# The password for the computer WebSocket
|
# The password for the computer WebSocket
|
||||||
WEBSOCKET_PASSWORD="PASSWORD_GOES_HERE"
|
WEBSOCKET_PASSWORD="PASSWORD_GOES_HERE"
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
package handler
|
|
||||||
|
|
||||||
import (
|
|
||||||
"backend/internal/worker"
|
|
||||||
"encoding/json"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func HandleGetStatus(w http.ResponseWriter, r *http.Request) {
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
json.NewEncoder(w).Encode(worker.StatusData)
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
package model
|
|
||||||
|
|
||||||
type StatusData struct {
|
|
||||||
Success bool `json:"success"`
|
|
||||||
Website uint8 `json:"website"`
|
|
||||||
Api uint8 `json:"api"`
|
|
||||||
Files uint8 `json:"files"`
|
|
||||||
}
|
|
||||||
|
|
@ -50,7 +50,6 @@ func NewRouter() {
|
||||||
r.With(httprate.LimitByRealIP(1, time.Hour)).Patch("/visit-counter", handler.HandlePatchVisitCounter)
|
r.With(httprate.LimitByRealIP(1, time.Hour)).Patch("/visit-counter", handler.HandlePatchVisitCounter)
|
||||||
|
|
||||||
r.Get("/currently-playing", handler.HandleGetCurrentlyPlaying)
|
r.Get("/currently-playing", handler.HandleGetCurrentlyPlaying)
|
||||||
r.Get("/status", handler.HandleGetStatus)
|
|
||||||
|
|
||||||
r.Get("/computer", handler.HandleComputerGraphData)
|
r.Get("/computer", handler.HandleComputerGraphData)
|
||||||
r.Get("/ws/computer", handler.HandleComputerWebSocket)
|
r.Get("/ws/computer", handler.HandleComputerWebSocket)
|
||||||
|
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
||||||
package service
|
|
||||||
|
|
||||||
import (
|
|
||||||
"backend/internal/model"
|
|
||||||
"bufio"
|
|
||||||
"log/slog"
|
|
||||||
"net/http"
|
|
||||||
"os"
|
|
||||||
"regexp"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetStatuses() model.StatusData {
|
|
||||||
data := model.StatusData{
|
|
||||||
Success: false,
|
|
||||||
Website: 0,
|
|
||||||
Api: 0,
|
|
||||||
Files: 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", os.Getenv("UPTIME_KUMA_URL"), nil)
|
|
||||||
if err != nil {
|
|
||||||
slog.Error("Error creating request for Uptime Kuma", slog.Any("error", err))
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
req.SetBasicAuth("", os.Getenv("UPTIME_KUMA_API_KEY"))
|
|
||||||
|
|
||||||
client := &http.Client{}
|
|
||||||
res, err := client.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
slog.Error("Error sending request for Uptime Kuma", slog.Any("error", err))
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
defer res.Body.Close()
|
|
||||||
|
|
||||||
regex := regexp.MustCompile(`monitor_name="([^"]+)"[^}]*} (\d+)`)
|
|
||||||
statusMap := map[string]*uint8{
|
|
||||||
"website": &data.Website,
|
|
||||||
"api": &data.Api,
|
|
||||||
"files": &data.Files,
|
|
||||||
}
|
|
||||||
|
|
||||||
scanner := bufio.NewScanner(res.Body)
|
|
||||||
for scanner.Scan() {
|
|
||||||
line := scanner.Text()
|
|
||||||
|
|
||||||
if strings.HasPrefix(line, "monitor_status{") {
|
|
||||||
matches := regex.FindStringSubmatch(line)
|
|
||||||
monitorName := matches[1]
|
|
||||||
status := matches[2]
|
|
||||||
|
|
||||||
statusCode, err := strconv.Atoi(status)
|
|
||||||
if err != nil {
|
|
||||||
slog.Error("Error parsing bool for Uptime Kuma", slog.Any("error", err))
|
|
||||||
statusCode = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
if field, exists := statusMap[monitorName]; exists {
|
|
||||||
*field = uint8(statusCode)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := scanner.Err(); err != nil {
|
|
||||||
slog.Error("Error reading metrics for Uptime Kuma", slog.Any("error", err))
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
|
|
||||||
data.Success = true
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
package worker
|
|
||||||
|
|
||||||
import (
|
|
||||||
"backend/internal/model"
|
|
||||||
"backend/internal/service"
|
|
||||||
"log/slog"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
var StatusData model.StatusData
|
|
||||||
|
|
||||||
func StartStatusWorker() {
|
|
||||||
slog.Info("Starting status worker...")
|
|
||||||
StatusData = service.GetStatuses()
|
|
||||||
|
|
||||||
for range time.Tick(5 * time.Minute) {
|
|
||||||
slog.Info("Requesting Uptime Kuma...")
|
|
||||||
StatusData = service.GetStatuses()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
package worker
|
package worker
|
||||||
|
|
||||||
import "os"
|
|
||||||
|
|
||||||
func StartWorkers() {
|
func StartWorkers() {
|
||||||
go StartLastFMWorker()
|
go StartLastFMWorker()
|
||||||
go StartComputerWorker()
|
go StartComputerWorker()
|
||||||
if os.Getenv("UPTIME_KUMA_ENABLED") == "true" {
|
|
||||||
go StartStatusWorker()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue