reid 2 rokov pred
rodič
commit
9356ff992f
3 zmenil súbory, kde vykonal 47 pridanie a 1 odobranie
  1. 4 0
      broadcast/broadcast.go
  2. 1 1
      structs/structs.go
  3. 42 0
      system/system.go

+ 4 - 0
broadcast/broadcast.go

@@ -189,14 +189,18 @@ func constructSystemInfo() map[string]interface{} {
 	usedRam, totalRam := system.GetMemory()
 	ramObj = append(ramObj,usedRam,totalRam)
 	cpuUsage := system.GetCPU()
+	cpuTemp := system.GetTemp()
 	usedDisk, freeDisk := system.GetDisk()
 	diskObj = append(diskObj,usedDisk,freeDisk)
+	swapVal := system.HasSwap()
 	res = map[string]interface{}{
 		"System":map[string]interface{}{
 			"Usage":map[string]interface{}{
 				"RAM":ramObj,
 				"CPU":cpuUsage,
+				"CPUTemp":cpuTemp,
 				"Disk":diskObj,
+				"SwapFile":swapVal,
 			},
 		},
 	}

+ 1 - 1
structs/structs.go

@@ -102,7 +102,7 @@ type VersionDetails struct {
 type SystemUsage struct {
 	RAM      []uint64 `json:"ram"`
 	CPU      int     `json:"cpu"`
-	CPUTemp  int     `json:"cpu_temp"`
+	CPUTemp  float64     `json:"cpu_temp"`
 	Disk     []uint64 `json:"disk"`
 	SwapFile int     `json:"swap"`
 }

+ 42 - 0
system/system.go

@@ -1,12 +1,22 @@
 package system
 
 import (
+	"fmt"
 	"github.com/shirou/gopsutil/cpu"
 	"github.com/shirou/gopsutil/disk"
 	"github.com/shirou/gopsutil/mem"
+	"io/ioutil"
+	"log/slog"
+	"os"
+	"strconv"
+	"strings"
 	"time"
 )
 
+var (
+	logger  = slog.New(slog.NewJSONHandler(os.Stdout, nil))
+)
+
 func GetMemory() (uint64, uint64)  {
 	v, _ := mem.VirtualMemory()
 	return v.Used, v.Total
@@ -20,4 +30,36 @@ func GetCPU() int {
 func GetDisk() (uint64, uint64) {
 	d, _ := disk.Usage("/")
 	return d.Used, d.Free
+}
+
+func GetTemp() float64 {
+	data, err := ioutil.ReadFile("/sys/class/thermal/thermal_zone0/temp")
+	if err != nil {
+		errmsg := fmt.Sprintf("Error reading temperature:", err)
+		logger.Error(errmsg)
+		return 0
+	}
+	tempStr := strings.TrimSpace(string(data))
+	temp, err := strconv.Atoi(tempStr)
+	if err != nil {
+		errmsg := fmt.Sprintf("Error converting temperature to integer:", err)
+		logger.Error(errmsg)
+		return 0
+	}
+	return float64(temp) / 1000.0
+}
+
+func HasSwap() int {
+	data, err := ioutil.ReadFile("/proc/swaps")
+	if err != nil {
+		errmsg := fmt.Sprintf("Error reading swap status:", err)
+		logger.Error(errmsg)
+		return 0
+	}
+	lines := strings.Split(string(data), "\n")
+	if len(lines) > 1 {
+		return 1
+	} else {
+		return 0
+	}
 }