Files
HomeDash-Backend/utility/network_utils/home_network.go
2023-10-03 15:57:52 +08:00

95 lines
2.4 KiB
Go

package network_utils
import (
"context"
"fmt"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcache"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/gconv"
"github.com/hamster1963/360-router-data-retriever/rconfig"
"github.com/hamster1963/360-router-data-retriever/rutils"
"home-network-watcher/manifest"
"time"
)
type uNetworkUtils struct {
}
var NetworkUtils = &uNetworkUtils{}
var (
routerConfig = &rconfig.RouterConfig{
RouterIP: manifest.HomeNetworkRouterIP,
RouterAddress: manifest.HomeNetworkRouterAddress,
RouterPassword: manifest.HomeNetworkRouterPassword,
}
routerMain rutils.SRouterController = rutils.NewRouter().InitRouter(routerConfig)
)
// GetHomeNetwork
//
// @dc: 获取家庭路由器网速
// @author: laixin @date:2023/4/2 19:43:13
func (u *uNetworkUtils) GetHomeNetwork() (err error) {
var (
homeNetwork = g.Map{
"time": "",
"rxSpeedKbps": 0,
"txSpeedKbps": 0,
"rxSpeedMbps": 0,
"txSpeedMbps": 0,
}
)
// 检测登陆状态
if login, err := routerMain.CheckLogin(); err != nil || login == false {
err := routerMain.GetRandomString()
if err != nil {
return err
}
err = routerMain.GenerateAesString()
if err != nil {
return err
}
err = routerMain.Login()
if err != nil {
return err
}
}
routerSpeedInfo, err := routerMain.GetRouterSpeed()
if err != nil {
return err
}
jsonData := gjson.New(routerSpeedInfo)
rxSpeed := jsonData.Get("data.down_speed") // 下载速度
txSpeed := jsonData.Get("data.up_speed") // 上传速度
// 速度单位转换
rxSpeedKbps := gconv.Float64(fmt.Sprintf("%.2f", gconv.Float64(rxSpeed)/1024))
txSpeedKbps := gconv.Float64(fmt.Sprintf("%.2f", gconv.Float64(txSpeed)/1024))
homeNetwork["rxSpeedKbps"] = rxSpeedKbps
homeNetwork["txSpeedKbps"] = txSpeedKbps
// 转换成MB
rxSpeedMbps := gconv.Float64(fmt.Sprintf("%.2f", gconv.Float64(rxSpeed)/1024/1024))
txSpeedMbps := gconv.Float64(fmt.Sprintf("%.2f", gconv.Float64(txSpeed)/1024/1024))
homeNetwork["rxSpeedMbps"] = rxSpeedMbps
homeNetwork["txSpeedMbps"] = txSpeedMbps
homeNetwork["time"] = gtime.Now().String()
deviceData, err := routerMain.GetDeviceList()
if err != nil {
return err
}
homeNetwork["deviceCount"] = len(gjson.New(deviceData).Get("client_node").Array())
err = gcache.Set(context.Background(), manifest.HomeNetworkCacheKey, homeNetwork, 10*time.Second)
if err != nil {
return err
}
return nil
}