123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- //go:build !darwin
- // +build !darwin
- /*
- * @Author: LinkLeong link@icewhale.com
- * @Date: 2022-07-01 15:11:36
- * @LastEditors: LinkLeong
- * @LastEditTime: 2022-09-05 16:28:46
- * @FilePath: /CasaOS/route/periodical.go
- * @Description:
- * @Website: https://www.casaos.io
- * Copyright (c) 2022 by icewhale, All Rights Reserved.
- */
- package route
- import (
- "strings"
- "time"
- "unsafe"
- "github.com/IceWhaleTech/CasaOS/model"
- "github.com/IceWhaleTech/CasaOS/service"
- )
- func SendAllHardwareStatusBySocket() {
- netList := service.MyService.System().GetNetInfo()
- newNet := []model.IOCountersStat{}
- nets := service.MyService.System().GetNet(true)
- for _, n := range netList {
- for _, netCardName := range nets {
- if n.Name == netCardName {
- item := *(*model.IOCountersStat)(unsafe.Pointer(&n))
- item.State = strings.TrimSpace(service.MyService.System().GetNetState(n.Name))
- item.Time = time.Now().Unix()
- newNet = append(newNet, item)
- break
- }
- }
- }
- cpu := service.MyService.System().GetCpuPercent()
- var cpuModel = "arm"
- if cpu := service.MyService.System().GetCpuInfo(); len(cpu) > 0 {
- if strings.Count(strings.ToLower(strings.TrimSpace(cpu[0].ModelName)), "intel") > 0 {
- cpuModel = "intel"
- } else if strings.Count(strings.ToLower(strings.TrimSpace(cpu[0].ModelName)), "amd") > 0 {
- cpuModel = "amd"
- }
- }
- num := service.MyService.System().GetCpuCoreNum()
- cpuData := make(map[string]interface{})
- cpuData["percent"] = cpu
- cpuData["num"] = num
- cpuData["temperature"] = service.MyService.System().GetCPUTemperature()
- cpuData["power"] = service.MyService.System().GetCPUPower()
- cpuData["model"] = cpuModel
- memInfo := service.MyService.System().GetMemInfo()
- body := make(map[string]interface{})
- body["sys_mem"] = memInfo
- body["sys_cpu"] = cpuData
- body["sys_net"] = newNet
- systemTempMap := service.MyService.Notify().GetSystemTempMap()
- systemTempMap.Range(func(key, value interface{}) bool {
- body[key.(string)] = value
- return true
- })
- service.MyService.Notify().SendNotify("casaos:system:utilization", body)
- }
- // func MonitoryUSB() {
- // var matcher netlink.Matcher
- // conn := new(netlink.UEventConn)
- // if err := conn.Connect(netlink.UdevEvent); err != nil {
- // logger.Error("udev err", zap.Any("Unable to connect to Netlink Kobject UEvent socket", err))
- // }
- // defer conn.Close()
- // queue := make(chan netlink.UEvent)
- // errors := make(chan error)
- // quit := conn.Monitor(queue, errors, matcher)
- // signals := make(chan os.Signal, 1)
- // signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
- // go func() {
- // <-signals
- // close(quit)
- // os.Exit(0)
- // }()
- // for {
- // select {
- // case uevent := <-queue:
- // if uevent.Env["DEVTYPE"] == "disk" {
- // time.Sleep(time.Microsecond * 500)
- // SendUSBBySocket()
- // continue
- // }
- // case err := <-errors:
- // logger.Error("udev err", zap.Any("err", err))
- // }
- // }
- // }
|