Browse Source

Fixed sysinfo linux build bug

Toby Chui 2 năm trước cách đây
mục cha
commit
1d4f40a92b
1 tập tin đã thay đổi với 202 bổ sung200 xóa
  1. 202 200
      mod/info/hardwareinfo/sysinfo.go

+ 202 - 200
mod/info/hardwareinfo/sysinfo.go

@@ -1,200 +1,202 @@
-// +build linux
-
-package hardwareinfo
-
-import (
-	"encoding/json"
-	"log"
-	"net/http"
-	"os/exec"
-	"strconv"
-	"strings"
-)
-
-func Ifconfig(w http.ResponseWriter, r *http.Request) {
-	cmdin := `ip link show`
-	cmd := exec.Command("bash", "-c", cmdin)
-	networkInterfaces, err := cmd.CombinedOutput()
-	if err != nil {
-		networkInterfaces = []byte{}
-	}
-
-	nic := strings.Split(string(networkInterfaces), "\n")
-
-	var arr []string
-	for _, info := range nic {
-		thisInfo := string(info)
-		arr = append(arr, thisInfo)
-	}
-
-	var jsonData []byte
-	jsonData, err = json.Marshal(arr)
-	if err != nil {
-		log.Println(err)
-	}
-	sendTextResponse(w, string(jsonData))
-}
-
-func GetDriveStat(w http.ResponseWriter, r *http.Request) {
-	//Get drive status using df command
-	cmdin := `df -k | sed -e /Filesystem/d`
-	cmd := exec.Command("bash", "-c", cmdin)
-	dev, err := cmd.Output()
-	if err != nil {
-		dev = []byte{}
-	}
-
-	drives := strings.Split(string(dev), "\n")
-
-	if len(drives) == 0 {
-		sendErrorResponse(w, "Invalid disk information")
-		return
-	}
-
-	var arr []LogicalDisk
-	for _, driveInfo := range drives {
-		if driveInfo == "" {
-			continue
-		}
-		for strings.Contains(driveInfo, "  ") {
-			driveInfo = strings.Replace(driveInfo, "  ", " ", -1)
-		}
-		driveInfoChunk := strings.Split(driveInfo, " ")
-		tmp, _ := strconv.Atoi(driveInfoChunk[3])
-		freespaceInByte := int64(tmp)
-
-		LogicalDisk := LogicalDisk{
-			DriveLetter: driveInfoChunk[5],
-			FileSystem:  driveInfoChunk[0],
-			FreeSpace:   strconv.FormatInt(freespaceInByte*1024, 10), //df show disk space in 1KB blocks
-		}
-		arr = append(arr, LogicalDisk)
-	}
-
-	var jsonData []byte
-	jsonData, err = json.Marshal(arr)
-	if err != nil {
-		log.Println(err)
-	}
-	sendTextResponse(w, string(jsonData))
-
-}
-
-func GetUSB(w http.ResponseWriter, r *http.Request) {
-	cmdin := `lsusb`
-	cmd := exec.Command("bash", "-c", cmdin)
-	usbd, err := cmd.CombinedOutput()
-	if err != nil {
-		usbd = []byte{}
-	}
-
-	usbDrives := strings.Split(string(usbd), "\n")
-
-	var arr []string
-	for _, info := range usbDrives {
-		arr = append(arr, info)
-	}
-
-	var jsonData []byte
-	jsonData, err = json.Marshal(arr)
-	if err != nil {
-		log.Println(err)
-	}
-	sendTextResponse(w, string(jsonData))
-}
-
-func GetCPUInfo(w http.ResponseWriter, r *http.Request) {
-	cmdin := `cat /proc/cpuinfo | grep -m1 "model name"`
-	cmd := exec.Command("bash", "-c", cmdin)
-	hardware, err := cmd.CombinedOutput()
-	if err != nil {
-		hardware = []byte("??? ")
-	}
-
-	cmdin = `lscpu | grep -m1 "Model name"`
-	cmd = exec.Command("bash", "-c", cmdin)
-	cpuModel, err := cmd.CombinedOutput()
-	if err != nil {
-		cpuModel = []byte("Generic Processor")
-	}
-
-	cmdin = `lscpu | grep "CPU max MHz"`
-	cmd = exec.Command("bash", "-c", cmdin)
-	speed, err := cmd.CombinedOutput()
-	if err != nil {
-		cmdin = `cat /proc/cpuinfo | grep -m1 "cpu MHz"`
-		cmd = exec.Command("bash", "-c", cmdin)
-		intelSpeed, err := cmd.CombinedOutput()
-		if err != nil {
-			speed = []byte("??? ")
-		}
-		speed = intelSpeed
-	}
-
-	cmdin = `cat /proc/cpuinfo | grep -m1 "Hardware"`
-	cmd = exec.Command("bash", "-c", cmdin)
-	cpuhardware, err := cmd.CombinedOutput()
-	if err != nil {
-
-	} else {
-		hardware = cpuhardware
-	}
-
-	//On ARM
-	cmdin = `cat /proc/cpuinfo | grep -m1 "Revision"`
-	cmd = exec.Command("bash", "-c", cmdin)
-	revision, err := cmd.CombinedOutput()
-	if err != nil {
-		//On x64
-		cmdin = `cat /proc/cpuinfo | grep -m1 "family"`
-		cmd = exec.Command("bash", "-c", cmdin)
-		intelrev, err := cmd.CombinedOutput()
-		if err != nil {
-			revision = []byte("??? ")
-		} else {
-			revision = intelrev
-		}
-	}
-
-	//Get Arch
-	cmdin = `uname --m`
-	cmd = exec.Command("bash", "-c", cmdin)
-	arch, err := cmd.CombinedOutput()
-	if err != nil {
-		arch = []byte("??? ")
-	}
-
-	CPUInfo := CPUInfo{
-		Freq:        filterGrepResults(string(speed), ":"),
-		Hardware:    filterGrepResults(string(hardware), ":"),
-		Instruction: filterGrepResults(string(arch), ":"),
-		Model:       filterGrepResults(string(cpuModel), ":"),
-		Revision:    filterGrepResults(string(revision), ":"),
-	}
-
-	var jsonData []byte
-	jsonData, err = json.Marshal(CPUInfo)
-	if err != nil {
-		log.Println(err)
-	}
-	sendTextResponse(w, string(jsonData))
-}
-
-func GetRamInfo(w http.ResponseWriter, r *http.Request) {
-	cmd := exec.Command("grep", "MemTotal", "/proc/meminfo")
-	out, _ := cmd.CombinedOutput()
-	strOut := string(out)
-	strOut = strings.ReplaceAll(strOut, "MemTotal:", "")
-	strOut = strings.ReplaceAll(strOut, "kB", "")
-	strOut = strings.ReplaceAll(strOut, " ", "")
-	strOut = strings.ReplaceAll(strOut, "\n", "")
-	ramSize, _ := strconv.ParseInt(strOut, 10, 64)
-	ramSizeInt := ramSize * 1000
-
-	var jsonData []byte
-	jsonData, err := json.Marshal(ramSizeInt)
-	if err != nil {
-		log.Println(err)
-	}
-	sendTextResponse(w, string(jsonData))
-}
+//go:build linux
+// +build linux
+
+package hardwareinfo
+
+import (
+	"encoding/json"
+	"imuslab.com/arozos/mod/utils"
+	"log"
+	"net/http"
+	"os/exec"
+	"strconv"
+	"strings"
+)
+
+func Ifconfig(w http.ResponseWriter, r *http.Request) {
+	cmdin := `ip link show`
+	cmd := exec.Command("bash", "-c", cmdin)
+	networkInterfaces, err := cmd.CombinedOutput()
+	if err != nil {
+		networkInterfaces = []byte{}
+	}
+
+	nic := strings.Split(string(networkInterfaces), "\n")
+
+	var arr []string
+	for _, info := range nic {
+		thisInfo := string(info)
+		arr = append(arr, thisInfo)
+	}
+
+	var jsonData []byte
+	jsonData, err = json.Marshal(arr)
+	if err != nil {
+		log.Println(err)
+	}
+	utils.SendTextResponse(w, string(jsonData))
+}
+
+func GetDriveStat(w http.ResponseWriter, r *http.Request) {
+	//Get drive status using df command
+	cmdin := `df -k | sed -e /Filesystem/d`
+	cmd := exec.Command("bash", "-c", cmdin)
+	dev, err := cmd.Output()
+	if err != nil {
+		dev = []byte{}
+	}
+
+	drives := strings.Split(string(dev), "\n")
+
+	if len(drives) == 0 {
+		utils.SendErrorResponse(w, "Invalid disk information")
+		return
+	}
+
+	var arr []LogicalDisk
+	for _, driveInfo := range drives {
+		if driveInfo == "" {
+			continue
+		}
+		for strings.Contains(driveInfo, "  ") {
+			driveInfo = strings.Replace(driveInfo, "  ", " ", -1)
+		}
+		driveInfoChunk := strings.Split(driveInfo, " ")
+		tmp, _ := strconv.Atoi(driveInfoChunk[3])
+		freespaceInByte := int64(tmp)
+
+		LogicalDisk := LogicalDisk{
+			DriveLetter: driveInfoChunk[5],
+			FileSystem:  driveInfoChunk[0],
+			FreeSpace:   strconv.FormatInt(freespaceInByte*1024, 10), //df show disk space in 1KB blocks
+		}
+		arr = append(arr, LogicalDisk)
+	}
+
+	var jsonData []byte
+	jsonData, err = json.Marshal(arr)
+	if err != nil {
+		log.Println(err)
+	}
+	utils.SendTextResponse(w, string(jsonData))
+
+}
+
+func GetUSB(w http.ResponseWriter, r *http.Request) {
+	cmdin := `lsusb`
+	cmd := exec.Command("bash", "-c", cmdin)
+	usbd, err := cmd.CombinedOutput()
+	if err != nil {
+		usbd = []byte{}
+	}
+
+	usbDrives := strings.Split(string(usbd), "\n")
+
+	var arr []string
+	for _, info := range usbDrives {
+		arr = append(arr, info)
+	}
+
+	var jsonData []byte
+	jsonData, err = json.Marshal(arr)
+	if err != nil {
+		log.Println(err)
+	}
+	utils.SendTextResponse(w, string(jsonData))
+}
+
+func GetCPUInfo(w http.ResponseWriter, r *http.Request) {
+	cmdin := `cat /proc/cpuinfo | grep -m1 "model name"`
+	cmd := exec.Command("bash", "-c", cmdin)
+	hardware, err := cmd.CombinedOutput()
+	if err != nil {
+		hardware = []byte("??? ")
+	}
+
+	cmdin = `lscpu | grep -m1 "Model name"`
+	cmd = exec.Command("bash", "-c", cmdin)
+	cpuModel, err := cmd.CombinedOutput()
+	if err != nil {
+		cpuModel = []byte("Generic Processor")
+	}
+
+	cmdin = `lscpu | grep "CPU max MHz"`
+	cmd = exec.Command("bash", "-c", cmdin)
+	speed, err := cmd.CombinedOutput()
+	if err != nil {
+		cmdin = `cat /proc/cpuinfo | grep -m1 "cpu MHz"`
+		cmd = exec.Command("bash", "-c", cmdin)
+		intelSpeed, err := cmd.CombinedOutput()
+		if err != nil {
+			speed = []byte("??? ")
+		}
+		speed = intelSpeed
+	}
+
+	cmdin = `cat /proc/cpuinfo | grep -m1 "Hardware"`
+	cmd = exec.Command("bash", "-c", cmdin)
+	cpuhardware, err := cmd.CombinedOutput()
+	if err != nil {
+
+	} else {
+		hardware = cpuhardware
+	}
+
+	//On ARM
+	cmdin = `cat /proc/cpuinfo | grep -m1 "Revision"`
+	cmd = exec.Command("bash", "-c", cmdin)
+	revision, err := cmd.CombinedOutput()
+	if err != nil {
+		//On x64
+		cmdin = `cat /proc/cpuinfo | grep -m1 "family"`
+		cmd = exec.Command("bash", "-c", cmdin)
+		intelrev, err := cmd.CombinedOutput()
+		if err != nil {
+			revision = []byte("??? ")
+		} else {
+			revision = intelrev
+		}
+	}
+
+	//Get Arch
+	cmdin = `uname --m`
+	cmd = exec.Command("bash", "-c", cmdin)
+	arch, err := cmd.CombinedOutput()
+	if err != nil {
+		arch = []byte("??? ")
+	}
+
+	CPUInfo := CPUInfo{
+		Freq:        filterGrepResults(string(speed), ":"),
+		Hardware:    filterGrepResults(string(hardware), ":"),
+		Instruction: filterGrepResults(string(arch), ":"),
+		Model:       filterGrepResults(string(cpuModel), ":"),
+		Revision:    filterGrepResults(string(revision), ":"),
+	}
+
+	var jsonData []byte
+	jsonData, err = json.Marshal(CPUInfo)
+	if err != nil {
+		log.Println(err)
+	}
+	utils.SendTextResponse(w, string(jsonData))
+}
+
+func GetRamInfo(w http.ResponseWriter, r *http.Request) {
+	cmd := exec.Command("grep", "MemTotal", "/proc/meminfo")
+	out, _ := cmd.CombinedOutput()
+	strOut := string(out)
+	strOut = strings.ReplaceAll(strOut, "MemTotal:", "")
+	strOut = strings.ReplaceAll(strOut, "kB", "")
+	strOut = strings.ReplaceAll(strOut, " ", "")
+	strOut = strings.ReplaceAll(strOut, "\n", "")
+	ramSize, _ := strconv.ParseInt(strOut, 10, 64)
+	ramSizeInt := ramSize * 1000
+
+	var jsonData []byte
+	jsonData, err := json.Marshal(ramSizeInt)
+	if err != nil {
+		log.Println(err)
+	}
+	utils.SendTextResponse(w, string(jsonData))
+}