//go:build linux package handlers import ( "bufio" "os" "strconv" "strings" ) func getSysMemMb() (total, free int64) { f, err := os.Open("/proc/meminfo") if err != nil { return 0, 0 } defer f.Close() scanner := bufio.NewScanner(f) for scanner.Scan() { line := scanner.Text() if strings.HasPrefix(line, "MemTotal:") { total = parseMemInfoKB(line) } else if strings.HasPrefix(line, "MemAvailable:") { free = parseMemInfoKB(line) } } return total / 1024, free / 1024 } func parseMemInfoKB(line string) int64 { fields := strings.Fields(line) if len(fields) < 2 { return 0 } v, _ := strconv.ParseInt(fields[1], 10, 64) return v } func getOSRelease() string { f, err := os.Open("/etc/os-release") if err != nil { return "" } defer f.Close() scanner := bufio.NewScanner(f) for scanner.Scan() { line := scanner.Text() if strings.HasPrefix(line, "PRETTY_NAME=") { return strings.Trim(strings.TrimPrefix(line, "PRETTY_NAME="), `"`) } } return "" }