refactor: remove uptime kuma integration

This commit is contained in:
trafficlunar 2025-01-16 22:05:44 +00:00
parent fa0f5119bd
commit c92e8670c9
7 changed files with 0 additions and 124 deletions

View file

@ -8,12 +8,6 @@ LASTFM_USERNAME="axolotlmaid"
# API key for last.fm
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
WEBSOCKET_PASSWORD="PASSWORD_GOES_HERE"

View file

@ -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)
}

View file

@ -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"`
}

View file

@ -50,7 +50,6 @@ func NewRouter() {
r.With(httprate.LimitByRealIP(1, time.Hour)).Patch("/visit-counter", handler.HandlePatchVisitCounter)
r.Get("/currently-playing", handler.HandleGetCurrentlyPlaying)
r.Get("/status", handler.HandleGetStatus)
r.Get("/computer", handler.HandleComputerGraphData)
r.Get("/ws/computer", handler.HandleComputerWebSocket)

View file

@ -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
}

View file

@ -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()
}
}

View file

@ -1,11 +1,6 @@
package worker
import "os"
func StartWorkers() {
go StartLastFMWorker()
go StartComputerWorker()
if os.Getenv("UPTIME_KUMA_ENABLED") == "true" {
go StartStatusWorker()
}
}