Files
EdgeAdmin/internal/web/actions/default/clusters/cluster/node/nodeutils/utils.go

109 lines
3.1 KiB
Go
Raw Normal View History

2024-05-17 17:56:37 +08:00
// Copyright 2021 GoEdge CDN goedge.cdn@gmail.com. All rights reserved.
package nodeutils
import (
"errors"
2024-07-27 15:42:58 +08:00
"strconv"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
2023-06-28 16:18:52 +08:00
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
2021-09-13 16:47:34 +08:00
"github.com/iwind/TeaGo/types"
)
// InitNodeInfo 初始化节点信息
2021-09-13 16:47:34 +08:00
func InitNodeInfo(parentAction *actionutils.ParentAction, nodeId int64) (*pb.Node, error) {
// 节点信息(用于菜单)
2021-09-13 16:47:34 +08:00
nodeResp, err := parentAction.RPC().NodeRPC().FindEnabledNode(parentAction.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: nodeId})
if err != nil {
2021-09-13 16:47:34 +08:00
return nil, err
}
if nodeResp.Node == nil {
2021-09-13 16:47:34 +08:00
return nil, errors.New("node '" + strconv.FormatInt(nodeId, 10) + "' not found")
}
var node = nodeResp.Node
2022-05-18 21:02:47 +08:00
info, err := parentAction.RPC().NodeRPC().FindEnabledNodeConfigInfo(parentAction.AdminContext(), &pb.FindEnabledNodeConfigInfoRequest{NodeId: nodeId})
if err != nil {
return nil, err
}
var groupMap maps.Map
if node.NodeGroup != nil {
groupMap = maps.Map{
"id": node.NodeGroup.Id,
"name": node.NodeGroup.Name,
}
}
2021-09-13 16:47:34 +08:00
parentAction.Data["node"] = maps.Map{
2024-07-27 15:42:58 +08:00
"id": node.Id,
"name": node.Name,
"isOn": node.IsOn,
"isUp": node.IsUp,
"group": groupMap,
"level": node.Level,
"bypassMobile": node.BypassMobile,
}
2021-09-13 16:47:34 +08:00
var clusterId int64 = 0
if node.NodeCluster != nil {
2021-09-13 16:47:34 +08:00
parentAction.Data["clusterId"] = node.NodeCluster.Id
clusterId = node.NodeCluster.Id
}
2021-09-13 16:47:34 +08:00
// 左侧菜单
var prefix = "/clusters/cluster/node"
var query = "clusterId=" + types.String(clusterId) + "&nodeId=" + types.String(nodeId)
var menuItem = parentAction.Data.GetString("secondMenuItem")
2021-09-25 19:57:22 +08:00
var menuItems = []maps.Map{
2021-09-13 16:47:34 +08:00
{
2023-06-30 18:08:30 +08:00
"name": parentAction.Lang(codes.NodeMenu_SettingBasic),
2021-09-13 16:47:34 +08:00
"url": prefix + "/update?" + query,
"isActive": menuItem == "basic",
},
{
2023-06-30 18:08:30 +08:00
"name": parentAction.Lang(codes.NodeMenu_SettingDNS),
2021-09-13 16:47:34 +08:00
"url": prefix + "/settings/dns?" + query,
"isActive": menuItem == "dns",
2022-05-18 21:02:47 +08:00
"isOn": info.HasDNSInfo,
2021-09-13 16:47:34 +08:00
},
{
2023-06-30 18:08:30 +08:00
"name": parentAction.Lang(codes.NodeMenu_SettingCache),
2021-09-13 16:47:34 +08:00
"url": prefix + "/settings/cache?" + query,
"isActive": menuItem == "cache",
2022-05-18 21:02:47 +08:00
"isOn": info.HasCacheInfo,
},
{
2023-06-30 18:08:30 +08:00
"name": parentAction.Lang(codes.NodeMenu_SettingDDoSProtection),
2022-05-18 21:02:47 +08:00
"url": prefix + "/settings/ddos-protection?" + query,
"isActive": menuItem == "ddosProtection",
"isOn": info.HasDDoSProtection,
},
{
"name": "-",
"url": "",
2021-09-13 16:47:34 +08:00
},
2021-09-25 19:57:22 +08:00
}
2023-06-28 16:18:52 +08:00
menuItems = filterMenuItems(menuItems, menuItem, prefix, query, info, parentAction.LangCode())
2021-09-25 19:57:22 +08:00
menuItems = append(menuItems, []maps.Map{
2021-09-13 16:47:34 +08:00
{
2023-06-30 18:08:30 +08:00
"name": parentAction.Lang(codes.NodeMenu_SettingSSH),
2021-09-13 16:47:34 +08:00
"url": prefix + "/settings/ssh?" + query,
"isActive": menuItem == "ssh",
2022-05-18 21:02:47 +08:00
"isOn": info.HasSSH,
2021-09-13 16:47:34 +08:00
},
{
2023-06-30 18:08:30 +08:00
"name": parentAction.Lang(codes.NodeMenu_SettingSystem),
2021-09-13 16:47:34 +08:00
"url": prefix + "/settings/system?" + query,
"isActive": menuItem == "system",
2022-05-18 21:02:47 +08:00
"isOn": info.HasSystemSettings,
2021-09-13 16:47:34 +08:00
},
2021-09-25 19:57:22 +08:00
}...)
parentAction.Data["leftMenuItems"] = menuItems
2021-09-13 16:47:34 +08:00
return nodeResp.Node, nil
}