mirror of
https://github.com/hamster1963/HomeDash-Backend.git
synced 2025-06-22 06:51:32 +08:00
95 lines
2.4 KiB
Go
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
|
|
}
|