diff --git a/internal/web/actions/default/settings/monitor-nodes/delete.go b/internal/web/actions/default/settings/monitor-nodes/delete.go deleted file mode 100644 index 822d90c4..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/delete.go +++ /dev/null @@ -1,28 +0,0 @@ -package monitornodes - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" -) - -type DeleteAction struct { - actionutils.ParentAction -} - -func (this *DeleteAction) RunPost(params struct { - NodeId int64 -}) { - // TODO 检查权限 - - _, err := this.RPC().MonitorNodeRPC().DeleteMonitorNode(this.AdminContext(), &pb.DeleteMonitorNodeRequest{NodeId: params.NodeId}) - if err != nil { - this.ErrorPage(err) - return - } - - // 创建日志 - defer this.CreateLog(oplogs.LevelInfo, "删除监控节点 %d", params.NodeId) - - this.Success() -} diff --git a/internal/web/actions/default/settings/monitor-nodes/helper.go b/internal/web/actions/default/settings/monitor-nodes/helper.go deleted file mode 100644 index 99fc7746..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/helper.go +++ /dev/null @@ -1,15 +0,0 @@ -package monitornodes - -import ( - "github.com/iwind/TeaGo/actions" -) - -type Helper struct { -} - -func NewHelper() *Helper { - return &Helper{} -} - -func (this *Helper) BeforeAction(action *actions.ActionObject) { -} diff --git a/internal/web/actions/default/settings/monitor-nodes/index.go b/internal/web/actions/default/settings/monitor-nodes/index.go deleted file mode 100644 index d8b17d68..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/index.go +++ /dev/null @@ -1,75 +0,0 @@ -package monitornodes - -import ( - "encoding/json" - "fmt" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/logs" - "github.com/iwind/TeaGo/maps" - "time" -) - -type IndexAction struct { - actionutils.ParentAction -} - -func (this *IndexAction) Init() { - this.Nav("", "node", "index") -} - -func (this *IndexAction) RunGet(params struct{}) { - countResp, err := this.RPC().MonitorNodeRPC().CountAllEnabledMonitorNodes(this.AdminContext(), &pb.CountAllEnabledMonitorNodesRequest{}) - if err != nil { - this.ErrorPage(err) - return - } - count := countResp.Count - page := this.NewPage(count) - this.Data["page"] = page.AsHTML() - - nodeMaps := []maps.Map{} - if count > 0 { - nodesResp, err := this.RPC().MonitorNodeRPC().ListEnabledMonitorNodes(this.AdminContext(), &pb.ListEnabledMonitorNodesRequest{ - Offset: page.Offset, - Size: page.Size, - }) - if err != nil { - this.ErrorPage(err) - return - } - - for _, node := range nodesResp.Nodes { - // 状态 - status := &nodeconfigs.NodeStatus{} - if len(node.StatusJSON) > 0 { - err = json.Unmarshal(node.StatusJSON, &status) - if err != nil { - logs.Error(err) - continue - } - status.IsActive = status.IsActive && time.Now().Unix()-status.UpdatedAt <= 60 // N秒之内认为活跃 - } - - nodeMaps = append(nodeMaps, maps.Map{ - "id": node.Id, - "isOn": node.IsOn, - "name": node.Name, - "status": maps.Map{ - "isActive": status.IsActive, - "updatedAt": status.UpdatedAt, - "hostname": status.Hostname, - "cpuUsage": status.CPUUsage, - "cpuUsageText": fmt.Sprintf("%.2f%%", status.CPUUsage*100), - "memUsage": status.MemoryUsage, - "memUsageText": fmt.Sprintf("%.2f%%", status.MemoryUsage*100), - "buildVersion": status.BuildVersion, - }, - }) - } - } - this.Data["nodes"] = nodeMaps - - this.Show() -} diff --git a/internal/web/actions/default/settings/monitor-nodes/init.go b/internal/web/actions/default/settings/monitor-nodes/init.go deleted file mode 100644 index fa97e80c..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/init.go +++ /dev/null @@ -1,23 +0,0 @@ -package monitornodes - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/monitor-nodes/node" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/settingutils" - "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" - "github.com/iwind/TeaGo" -) - -func init() { - TeaGo.BeforeStart(func(server *TeaGo.Server) { - server. - Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeSetting)). - Helper(NewHelper()). - Helper(settingutils.NewAdvancedHelper("monitorNodes")). - Prefix("/settings/monitorNodes"). - Get("", new(IndexAction)). - GetPost("/node/createPopup", new(node.CreatePopupAction)). - Post("/delete", new(DeleteAction)). - EndAll() - }) -} diff --git a/internal/web/actions/default/settings/monitor-nodes/node/createPopup.go b/internal/web/actions/default/settings/monitor-nodes/node/createPopup.go deleted file mode 100644 index 3ce8ee2f..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/node/createPopup.go +++ /dev/null @@ -1,47 +0,0 @@ -package node - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/actions" -) - -type CreatePopupAction struct { - actionutils.ParentAction -} - -func (this *CreatePopupAction) Init() { - this.Nav("", "node", "create") -} - -func (this *CreatePopupAction) RunGet(params struct{}) { - this.Show() -} - -func (this *CreatePopupAction) RunPost(params struct { - Name string - Description string - IsOn bool - - Must *actions.Must -}) { - params.Must. - Field("name", params.Name). - Require("请输入监控节点名称") - - createResp, err := this.RPC().MonitorNodeRPC().CreateMonitorNode(this.AdminContext(), &pb.CreateMonitorNodeRequest{ - Name: params.Name, - Description: params.Description, - IsOn: params.IsOn, - }) - if err != nil { - this.ErrorPage(err) - return - } - - // 创建日志 - defer this.CreateLog(oplogs.LevelInfo, "创建监控节点 %d", createResp.NodeId) - - this.Success() -} diff --git a/internal/web/actions/default/settings/monitor-nodes/node/helper.go b/internal/web/actions/default/settings/monitor-nodes/node/helper.go deleted file mode 100644 index 689a22cc..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/node/helper.go +++ /dev/null @@ -1,21 +0,0 @@ -package node - -import ( - "github.com/iwind/TeaGo/actions" - "net/http" -) - -type Helper struct { -} - -func NewHelper() *Helper { - return &Helper{} -} - -func (this *Helper) BeforeAction(action *actions.ActionObject) (goNext bool) { - if action.Request.Method != http.MethodGet { - return true - } - - return true -} diff --git a/internal/web/actions/default/settings/monitor-nodes/node/index.go b/internal/web/actions/default/settings/monitor-nodes/node/index.go deleted file mode 100644 index 4c3f5e32..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/node/index.go +++ /dev/null @@ -1,39 +0,0 @@ -package node - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" -) - -type IndexAction struct { - actionutils.ParentAction -} - -func (this *IndexAction) Init() { - this.Nav("", "", "index") -} - -func (this *IndexAction) RunGet(params struct { - NodeId int64 -}) { - nodeResp, err := this.RPC().MonitorNodeRPC().FindEnabledMonitorNode(this.AdminContext(), &pb.FindEnabledMonitorNodeRequest{NodeId: params.NodeId}) - if err != nil { - this.ErrorPage(err) - return - } - node := nodeResp.Node - if node == nil { - this.NotFound("monitorNode", params.NodeId) - return - } - - this.Data["node"] = maps.Map{ - "id": node.Id, - "name": node.Name, - "description": node.Description, - "isOn": node.IsOn, - } - - this.Show() -} diff --git a/internal/web/actions/default/settings/monitor-nodes/node/init.go b/internal/web/actions/default/settings/monitor-nodes/node/init.go deleted file mode 100644 index 90e88c6e..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/node/init.go +++ /dev/null @@ -1,26 +0,0 @@ -package node - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/settingutils" - "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" - "github.com/iwind/TeaGo" -) - -func init() { - TeaGo.BeforeStart(func(server *TeaGo.Server) { - server. - Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeSetting)). - Helper(settingutils.NewAdvancedHelper("monitorNodes")). - Prefix("/settings/monitorNodes/node"). - - // 节点相关 - Helper(NewHelper()). - Get("", new(IndexAction)). - Get("/logs", new(LogsAction)). - GetPost("/update", new(UpdateAction)). - Get("/install", new(InstallAction)). - - EndAll() - }) -} diff --git a/internal/web/actions/default/settings/monitor-nodes/node/install.go b/internal/web/actions/default/settings/monitor-nodes/node/install.go deleted file mode 100644 index 67748f39..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/node/install.go +++ /dev/null @@ -1,57 +0,0 @@ -package node - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" - "strings" -) - -type InstallAction struct { - actionutils.ParentAction -} - -func (this *InstallAction) Init() { - this.Nav("", "", "install") -} - -func (this *InstallAction) RunGet(params struct { - NodeId int64 -}) { - // 监控节点信息 - nodeResp, err := this.RPC().MonitorNodeRPC().FindEnabledMonitorNode(this.AdminContext(), &pb.FindEnabledMonitorNodeRequest{NodeId: params.NodeId}) - if err != nil { - this.ErrorPage(err) - return - } - node := nodeResp.Node - if node == nil { - this.NotFound("monitorNode", params.NodeId) - return - } - - this.Data["node"] = maps.Map{ - "id": node.Id, - "name": node.Name, - "uniqueId": node.UniqueId, - "secret": node.Secret, - } - - // API节点列表 - apiNodesResp, err := this.RPC().APINodeRPC().FindAllEnabledAPINodes(this.AdminContext(), &pb.FindAllEnabledAPINodesRequest{}) - if err != nil { - this.ErrorPage(err) - return - } - apiNodes := apiNodesResp.ApiNodes - apiEndpoints := []string{} - for _, apiNode := range apiNodes { - if !apiNode.IsOn { - continue - } - apiEndpoints = append(apiEndpoints, apiNode.AccessAddrs...) - } - this.Data["apiEndpoints"] = "\"" + strings.Join(apiEndpoints, "\", \"") + "\"" - - this.Show() -} diff --git a/internal/web/actions/default/settings/monitor-nodes/node/logs.go b/internal/web/actions/default/settings/monitor-nodes/node/logs.go deleted file mode 100644 index b28e9674..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/node/logs.go +++ /dev/null @@ -1,92 +0,0 @@ -package node - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" - timeutil "github.com/iwind/TeaGo/utils/time" -) - -type LogsAction struct { - actionutils.ParentAction -} - -func (this *LogsAction) Init() { - this.Nav("", "node", "log") - this.SecondMenu("nodes") -} - -func (this *LogsAction) RunGet(params struct { - NodeId int64 - - DayFrom string - DayTo string - Keyword string - Level string -}) { - this.Data["nodeId"] = params.NodeId - this.Data["dayFrom"] = params.DayFrom - this.Data["dayTo"] = params.DayTo - this.Data["keyword"] = params.Keyword - this.Data["level"] = params.Level - - monitorNodeResp, err := this.RPC().MonitorNodeRPC().FindEnabledMonitorNode(this.AdminContext(), &pb.FindEnabledMonitorNodeRequest{NodeId: params.NodeId}) - if err != nil { - this.ErrorPage(err) - return - } - monitorNode := monitorNodeResp.Node - if monitorNode == nil { - this.NotFound("monitorNode", params.NodeId) - return - } - - this.Data["node"] = maps.Map{ - "id": monitorNode.Id, - "name": monitorNode.Name, - } - - countResp, err := this.RPC().NodeLogRPC().CountNodeLogs(this.AdminContext(), &pb.CountNodeLogsRequest{ - Role: nodeconfigs.NodeRoleMonitor, - NodeId: params.NodeId, - DayFrom: params.DayFrom, - DayTo: params.DayTo, - Keyword: params.Keyword, - Level: params.Level, - }) - if err != nil { - this.ErrorPage(err) - return - } - count := countResp.Count - page := this.NewPage(count, 20) - - logsResp, err := this.RPC().NodeLogRPC().ListNodeLogs(this.AdminContext(), &pb.ListNodeLogsRequest{ - NodeId: params.NodeId, - Role: nodeconfigs.NodeRoleMonitor, - DayFrom: params.DayFrom, - DayTo: params.DayTo, - Keyword: params.Keyword, - Level: params.Level, - - Offset: page.Offset, - Size: page.Size, - }) - - logs := []maps.Map{} - for _, log := range logsResp.NodeLogs { - logs = append(logs, maps.Map{ - "tag": log.Tag, - "description": log.Description, - "createdTime": timeutil.FormatTime("Y-m-d H:i:s", log.CreatedAt), - "level": log.Level, - "isToday": timeutil.FormatTime("Y-m-d", log.CreatedAt) == timeutil.Format("Y-m-d"), - }) - } - this.Data["logs"] = logs - - this.Data["page"] = page.AsHTML() - - this.Show() -} diff --git a/internal/web/actions/default/settings/monitor-nodes/node/update.go b/internal/web/actions/default/settings/monitor-nodes/node/update.go deleted file mode 100644 index 1fa4376c..00000000 --- a/internal/web/actions/default/settings/monitor-nodes/node/update.go +++ /dev/null @@ -1,73 +0,0 @@ -package node - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/actions" - "github.com/iwind/TeaGo/maps" -) - -type UpdateAction struct { - actionutils.ParentAction -} - -func (this *UpdateAction) Init() { - this.Nav("", "", "update") -} - -func (this *UpdateAction) RunGet(params struct { - NodeId int64 -}) { - nodeResp, err := this.RPC().MonitorNodeRPC().FindEnabledMonitorNode(this.AdminContext(), &pb.FindEnabledMonitorNodeRequest{ - NodeId: params.NodeId, - }) - if err != nil { - this.ErrorPage(err) - return - } - node := nodeResp.Node - if node == nil { - this.WriteString("要操作的节点不存在") - return - } - - this.Data["node"] = maps.Map{ - "id": node.Id, - "name": node.Name, - "description": node.Description, - "isOn": node.IsOn, - } - - this.Show() -} - -// 保存基础设置 -func (this *UpdateAction) RunPost(params struct { - NodeId int64 - Name string - Description string - IsOn bool - - Must *actions.Must -}) { - params.Must. - Field("name", params.Name). - Require("请输入监控节点名称") - - _, err := this.RPC().MonitorNodeRPC().UpdateMonitorNode(this.AdminContext(), &pb.UpdateMonitorNodeRequest{ - NodeId: params.NodeId, - Name: params.Name, - Description: params.Description, - IsOn: params.IsOn, - }) - if err != nil { - this.ErrorPage(err) - return - } - - // 创建日志 - defer this.CreateLog(oplogs.LevelInfo, "修改监控节点 %d", params.NodeId) - - this.Success() -} diff --git a/internal/web/helpers/user_must_auth.go b/internal/web/helpers/user_must_auth.go index 50c8d919..d3291e0b 100644 --- a/internal/web/helpers/user_must_auth.go +++ b/internal/web/helpers/user_must_auth.go @@ -368,13 +368,14 @@ func (this *userMustAuth) modules(actionPtr actions.ActionWrapper, adminId int64 "icon": "users", }, { - "code": "finance", - "module": configloaders.AdminModuleCodeFinance, - "name": "财务管理", - "icon": "yen sign", - "isOn": teaconst.IsPlus, + "code": "finance", + "module": configloaders.AdminModuleCodeFinance, + "name": "财务管理", + "icon": "yen sign", + "isOn": teaconst.IsPlus, + "subItems": []maps.Map{}, }, - /**{ + { "code": "plans", "module": configloaders.AdminModuleCodePlan, "name": "套餐管理", @@ -388,7 +389,7 @@ func (this *userMustAuth) modules(actionPtr actions.ActionWrapper, adminId int64 "isOn": teaconst.IsPlus, }, }, - },**/ + }, { "code": "admins", "module": configloaders.AdminModuleCodeAdmin, diff --git a/internal/web/import.go b/internal/web/import.go index b7b3e76b..75bb8eeb 100644 --- a/internal/web/import.go +++ b/internal/web/import.go @@ -114,8 +114,6 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/database" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/ip-library" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/login" - _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/monitor-nodes" - _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/monitor-nodes/node" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/profile" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/security" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/server"