From 56454e61f4dbf37b2e3ca013ae9e02ac2c1852cb Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sun, 7 Nov 2021 08:42:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../default/settings/user-nodes/delete.go | 28 -- .../default/settings/user-nodes/helper.go | 15 -- .../default/settings/user-nodes/index.go | 82 ------ .../default/settings/user-nodes/init.go | 23 -- .../user-nodes/node/createAddrPopup.go | 46 ---- .../settings/user-nodes/node/createPopup.go | 143 ----------- .../settings/user-nodes/node/helper.go | 21 -- .../default/settings/user-nodes/node/index.go | 102 -------- .../default/settings/user-nodes/node/init.go | 30 --- .../settings/user-nodes/node/install.go | 57 ----- .../default/settings/user-nodes/node/logs.go | 92 ------- .../settings/user-nodes/node/update.go | 240 ------------------ .../user-nodes/node/updateAddrPopup.go | 42 --- internal/web/import.go | 1 - 14 files changed, 922 deletions(-) delete mode 100644 internal/web/actions/default/settings/user-nodes/delete.go delete mode 100644 internal/web/actions/default/settings/user-nodes/helper.go delete mode 100644 internal/web/actions/default/settings/user-nodes/index.go delete mode 100644 internal/web/actions/default/settings/user-nodes/init.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/createAddrPopup.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/createPopup.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/helper.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/index.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/init.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/install.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/logs.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/update.go delete mode 100644 internal/web/actions/default/settings/user-nodes/node/updateAddrPopup.go diff --git a/internal/web/actions/default/settings/user-nodes/delete.go b/internal/web/actions/default/settings/user-nodes/delete.go deleted file mode 100644 index 88b6980d..00000000 --- a/internal/web/actions/default/settings/user-nodes/delete.go +++ /dev/null @@ -1,28 +0,0 @@ -package usernodes - -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().UserNodeRPC().DeleteUserNode(this.AdminContext(), &pb.DeleteUserNodeRequest{UserNodeId: 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/user-nodes/helper.go b/internal/web/actions/default/settings/user-nodes/helper.go deleted file mode 100644 index 081a8eab..00000000 --- a/internal/web/actions/default/settings/user-nodes/helper.go +++ /dev/null @@ -1,15 +0,0 @@ -package usernodes - -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/user-nodes/index.go b/internal/web/actions/default/settings/user-nodes/index.go deleted file mode 100644 index 6473c4f2..00000000 --- a/internal/web/actions/default/settings/user-nodes/index.go +++ /dev/null @@ -1,82 +0,0 @@ -package usernodes - -import ( - "encoding/json" - "fmt" - teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const" - "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{}) { - if !teaconst.IsPlus { - this.RedirectURL("/") - return - } - - countResp, err := this.RPC().UserNodeRPC().CountAllEnabledUserNodes(this.AdminContext(), &pb.CountAllEnabledUserNodesRequest{}) - 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().UserNodeRPC().ListEnabledUserNodes(this.AdminContext(), &pb.ListEnabledUserNodesRequest{ - Offset: page.Offset, - Size: page.Size, - }) - if err != nil { - this.ErrorPage(err) - return - } - - for _, node := range nodesResp.UserNodes { - // 状态 - 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, - "accessAddrs": node.AccessAddrs, - "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/user-nodes/init.go b/internal/web/actions/default/settings/user-nodes/init.go deleted file mode 100644 index e60aa625..00000000 --- a/internal/web/actions/default/settings/user-nodes/init.go +++ /dev/null @@ -1,23 +0,0 @@ -package usernodes - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/settingutils" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/user-nodes/node" - "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("userNodes")). - Prefix("/settings/userNodes"). - Get("", new(IndexAction)). - GetPost("/node/createPopup", new(node.CreatePopupAction)). - Post("/delete", new(DeleteAction)). - EndAll() - }) -} diff --git a/internal/web/actions/default/settings/user-nodes/node/createAddrPopup.go b/internal/web/actions/default/settings/user-nodes/node/createAddrPopup.go deleted file mode 100644 index 75a61c9d..00000000 --- a/internal/web/actions/default/settings/user-nodes/node/createAddrPopup.go +++ /dev/null @@ -1,46 +0,0 @@ -package node - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" - "github.com/iwind/TeaGo/actions" - "net" -) - -// 添加地址 -type CreateAddrPopupAction struct { - actionutils.ParentAction -} - -func (this *CreateAddrPopupAction) Init() { - this.Nav("", "", "") -} - -func (this *CreateAddrPopupAction) RunGet(params struct { -}) { - this.Show() -} - -func (this *CreateAddrPopupAction) RunPost(params struct { - Protocol string - Addr string - Must *actions.Must -}) { - params.Must. - Field("addr", params.Addr). - Require("请输入访问地址") - - - host, port, err := net.SplitHostPort(params.Addr) - if err != nil { - this.FailField("addr", "错误的访问地址") - } - - addrConfig := &serverconfigs.NetworkAddressConfig{ - Protocol: serverconfigs.Protocol(params.Protocol), - Host: host, - PortRange: port, - } - this.Data["addr"] = addrConfig - this.Success() -} diff --git a/internal/web/actions/default/settings/user-nodes/node/createPopup.go b/internal/web/actions/default/settings/user-nodes/node/createPopup.go deleted file mode 100644 index 57bc8338..00000000 --- a/internal/web/actions/default/settings/user-nodes/node/createPopup.go +++ /dev/null @@ -1,143 +0,0 @@ -package node - -import ( - "encoding/json" - "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs" - "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 - ListensJSON []byte - CertIdsJSON []byte - AccessAddrsJSON []byte - IsOn bool - - Must *actions.Must -}) { - params.Must. - Field("name", params.Name). - Require("请输入用户节点名称") - - httpConfig := &serverconfigs.HTTPProtocolConfig{} - httpsConfig := &serverconfigs.HTTPSProtocolConfig{} - - // 监听地址 - listens := []*serverconfigs.NetworkAddressConfig{} - err := json.Unmarshal(params.ListensJSON, &listens) - if err != nil { - this.ErrorPage(err) - return - } - if len(listens) == 0 { - this.Fail("请添加至少一个进程监听地址") - } - for _, addr := range listens { - if addr.Protocol.IsHTTPFamily() { - httpConfig.IsOn = true - httpConfig.Listen = append(httpConfig.Listen, addr) - } else if addr.Protocol.IsHTTPSFamily() { - httpsConfig.IsOn = true - httpsConfig.Listen = append(httpsConfig.Listen, addr) - } - } - - // 证书 - certIds := []int64{} - if len(params.CertIdsJSON) > 0 { - err = json.Unmarshal(params.CertIdsJSON, &certIds) - if err != nil { - this.ErrorPage(err) - return - } - } - if httpsConfig.IsOn && len(httpsConfig.Listen) > 0 && len(certIds) == 0 { - this.Fail("请添加至少一个证书") - } - - certRefs := []*sslconfigs.SSLCertRef{} - for _, certId := range certIds { - certRefs = append(certRefs, &sslconfigs.SSLCertRef{ - IsOn: true, - CertId: certId, - }) - } - certRefsJSON, err := json.Marshal(certRefs) - if err != nil { - this.ErrorPage(err) - return - } - - // 创建策略 - if len(certIds) > 0 { - sslPolicyCreateResp, err := this.RPC().SSLPolicyRPC().CreateSSLPolicy(this.AdminContext(), &pb.CreateSSLPolicyRequest{ - SslCertsJSON: certRefsJSON, - }) - if err != nil { - this.ErrorPage(err) - return - } - sslPolicyId := sslPolicyCreateResp.SslPolicyId - httpsConfig.SSLPolicyRef = &sslconfigs.SSLPolicyRef{ - IsOn: true, - SSLPolicyId: sslPolicyId, - } - } - - // 访问地址 - accessAddrs := []*serverconfigs.NetworkAddressConfig{} - err = json.Unmarshal(params.AccessAddrsJSON, &accessAddrs) - if err != nil { - this.ErrorPage(err) - return - } - if len(accessAddrs) == 0 { - this.Fail("请添加至少一个外部访问地址") - } - - httpJSON, err := json.Marshal(httpConfig) - if err != nil { - this.ErrorPage(err) - return - } - httpsJSON, err := json.Marshal(httpsConfig) - if err != nil { - this.ErrorPage(err) - return - } - - createResp, err := this.RPC().UserNodeRPC().CreateUserNode(this.AdminContext(), &pb.CreateUserNodeRequest{ - Name: params.Name, - Description: params.Description, - HttpJSON: httpJSON, - HttpsJSON: httpsJSON, - AccessAddrsJSON: params.AccessAddrsJSON, - IsOn: params.IsOn, - }) - if err != nil { - this.ErrorPage(err) - return - } - - // 创建日志 - defer this.CreateLog(oplogs.LevelInfo, "创建用户节点 %d", createResp.UserNodeId) - - this.Success() -} diff --git a/internal/web/actions/default/settings/user-nodes/node/helper.go b/internal/web/actions/default/settings/user-nodes/node/helper.go deleted file mode 100644 index 689a22cc..00000000 --- a/internal/web/actions/default/settings/user-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/user-nodes/node/index.go b/internal/web/actions/default/settings/user-nodes/node/index.go deleted file mode 100644 index e2bcf07b..00000000 --- a/internal/web/actions/default/settings/user-nodes/node/index.go +++ /dev/null @@ -1,102 +0,0 @@ -package node - -import ( - "encoding/json" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs" - "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().UserNodeRPC().FindEnabledUserNode(this.AdminContext(), &pb.FindEnabledUserNodeRequest{UserNodeId: params.NodeId}) - if err != nil { - this.ErrorPage(err) - return - } - node := nodeResp.UserNode - if node == nil { - this.NotFound("userNode", params.NodeId) - return - } - - // 监听地址 - httpConfig := &serverconfigs.HTTPProtocolConfig{} - if len(node.HttpJSON) > 0 { - err = json.Unmarshal(node.HttpJSON, httpConfig) - if err != nil { - this.ErrorPage(err) - return - } - } - httpsConfig := &serverconfigs.HTTPSProtocolConfig{} - if len(node.HttpsJSON) > 0 { - err = json.Unmarshal(node.HttpsJSON, httpsConfig) - if err != nil { - this.ErrorPage(err) - return - } - } - - // 监听地址 - listens := []*serverconfigs.NetworkAddressConfig{} - listens = append(listens, httpConfig.Listen...) - listens = append(listens, httpsConfig.Listen...) - - // 证书信息 - certs := []*sslconfigs.SSLCertConfig{} - sslPolicyId := int64(0) - if httpsConfig.SSLPolicyRef != nil && httpsConfig.SSLPolicyRef.SSLPolicyId > 0 { - sslPolicyConfigResp, err := this.RPC().SSLPolicyRPC().FindEnabledSSLPolicyConfig(this.AdminContext(), &pb.FindEnabledSSLPolicyConfigRequest{SslPolicyId: httpsConfig.SSLPolicyRef.SSLPolicyId}) - if err != nil { - this.ErrorPage(err) - return - } - sslPolicyConfigJSON := sslPolicyConfigResp.SslPolicyJSON - if len(sslPolicyConfigJSON) > 0 { - sslPolicyId = httpsConfig.SSLPolicyRef.SSLPolicyId - - sslPolicy := &sslconfigs.SSLPolicy{} - err = json.Unmarshal(sslPolicyConfigJSON, sslPolicy) - if err != nil { - this.ErrorPage(err) - return - } - certs = sslPolicy.Certs - } - } - - // 访问地址 - accessAddrs := []*serverconfigs.NetworkAddressConfig{} - if len(node.AccessAddrsJSON) > 0 { - err = json.Unmarshal(node.AccessAddrsJSON, &accessAddrs) - if err != nil { - this.ErrorPage(err) - return - } - } - - this.Data["node"] = maps.Map{ - "id": node.Id, - "name": node.Name, - "description": node.Description, - "isOn": node.IsOn, - "listens": listens, - "accessAddrs": accessAddrs, - "hasHTTPS": sslPolicyId > 0, - "certs": certs, - } - - this.Show() -} diff --git a/internal/web/actions/default/settings/user-nodes/node/init.go b/internal/web/actions/default/settings/user-nodes/node/init.go deleted file mode 100644 index c91fb4e5..00000000 --- a/internal/web/actions/default/settings/user-nodes/node/init.go +++ /dev/null @@ -1,30 +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("userNodes")). - Prefix("/settings/userNodes/node"). - - // 这里不受Helper的约束 - GetPost("/createAddrPopup", new(CreateAddrPopupAction)). - GetPost("/updateAddrPopup", new(UpdateAddrPopupAction)). - - // 节点相关 - 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/user-nodes/node/install.go b/internal/web/actions/default/settings/user-nodes/node/install.go deleted file mode 100644 index 695f58a8..00000000 --- a/internal/web/actions/default/settings/user-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().UserNodeRPC().FindEnabledUserNode(this.AdminContext(), &pb.FindEnabledUserNodeRequest{UserNodeId: params.NodeId}) - if err != nil { - this.ErrorPage(err) - return - } - node := nodeResp.UserNode - if node == nil { - this.NotFound("userNode", 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/user-nodes/node/logs.go b/internal/web/actions/default/settings/user-nodes/node/logs.go deleted file mode 100644 index a8b6f677..00000000 --- a/internal/web/actions/default/settings/user-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 - - userNodeResp, err := this.RPC().UserNodeRPC().FindEnabledUserNode(this.AdminContext(), &pb.FindEnabledUserNodeRequest{UserNodeId: params.NodeId}) - if err != nil { - this.ErrorPage(err) - return - } - userNode := userNodeResp.UserNode - if userNode == nil { - this.NotFound("userNode", params.NodeId) - return - } - - this.Data["node"] = maps.Map{ - "id": userNode.Id, - "name": userNode.Name, - } - - countResp, err := this.RPC().NodeLogRPC().CountNodeLogs(this.AdminContext(), &pb.CountNodeLogsRequest{ - Role: nodeconfigs.NodeRoleUser, - 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.NodeRoleUser, - 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/user-nodes/node/update.go b/internal/web/actions/default/settings/user-nodes/node/update.go deleted file mode 100644 index 4bbd6821..00000000 --- a/internal/web/actions/default/settings/user-nodes/node/update.go +++ /dev/null @@ -1,240 +0,0 @@ -package node - -import ( - "encoding/json" - "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs" - "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().UserNodeRPC().FindEnabledUserNode(this.AdminContext(), &pb.FindEnabledUserNodeRequest{ - UserNodeId: params.NodeId, - }) - if err != nil { - this.ErrorPage(err) - return - } - node := nodeResp.UserNode - if node == nil { - this.WriteString("要操作的节点不存在") - return - } - - httpConfig := &serverconfigs.HTTPProtocolConfig{} - if len(node.HttpJSON) > 0 { - err = json.Unmarshal(node.HttpJSON, httpConfig) - if err != nil { - this.ErrorPage(err) - return - } - } - httpsConfig := &serverconfigs.HTTPSProtocolConfig{} - if len(node.HttpsJSON) > 0 { - err = json.Unmarshal(node.HttpsJSON, httpsConfig) - if err != nil { - this.ErrorPage(err) - return - } - } - - // 监听地址 - listens := []*serverconfigs.NetworkAddressConfig{} - listens = append(listens, httpConfig.Listen...) - listens = append(listens, httpsConfig.Listen...) - - // 证书信息 - certs := []*sslconfigs.SSLCertConfig{} - sslPolicyId := int64(0) - if httpsConfig.SSLPolicyRef != nil && httpsConfig.SSLPolicyRef.SSLPolicyId > 0 { - sslPolicyConfigResp, err := this.RPC().SSLPolicyRPC().FindEnabledSSLPolicyConfig(this.AdminContext(), &pb.FindEnabledSSLPolicyConfigRequest{SslPolicyId: httpsConfig.SSLPolicyRef.SSLPolicyId}) - if err != nil { - this.ErrorPage(err) - return - } - sslPolicyConfigJSON := sslPolicyConfigResp.SslPolicyJSON - if len(sslPolicyConfigJSON) > 0 { - sslPolicyId = httpsConfig.SSLPolicyRef.SSLPolicyId - - sslPolicy := &sslconfigs.SSLPolicy{} - err = json.Unmarshal(sslPolicyConfigJSON, sslPolicy) - if err != nil { - this.ErrorPage(err) - return - } - certs = sslPolicy.Certs - } - } - - accessAddrs := []*serverconfigs.NetworkAddressConfig{} - if len(node.AccessAddrsJSON) > 0 { - err = json.Unmarshal(node.AccessAddrsJSON, &accessAddrs) - if err != nil { - this.ErrorPage(err) - return - } - } - - this.Data["node"] = maps.Map{ - "id": node.Id, - "name": node.Name, - "description": node.Description, - "isOn": node.IsOn, - "listens": listens, - "certs": certs, - "sslPolicyId": sslPolicyId, - "accessAddrs": accessAddrs, - } - - this.Show() -} - -// 保存基础设置 -func (this *UpdateAction) RunPost(params struct { - NodeId int64 - Name string - SslPolicyId int64 - ListensJSON []byte - CertIdsJSON []byte - AccessAddrsJSON []byte - Description string - IsOn bool - - Must *actions.Must -}) { - params.Must. - Field("name", params.Name). - Require("请输入用户节点名称") - - httpConfig := &serverconfigs.HTTPProtocolConfig{} - httpsConfig := &serverconfigs.HTTPSProtocolConfig{} - - // 监听地址 - listens := []*serverconfigs.NetworkAddressConfig{} - err := json.Unmarshal(params.ListensJSON, &listens) - if err != nil { - this.ErrorPage(err) - return - } - if len(listens) == 0 { - this.Fail("请添加至少一个进程监听地址") - } - for _, addr := range listens { - if addr.Protocol.IsHTTPFamily() { - httpConfig.IsOn = true - httpConfig.Listen = append(httpConfig.Listen, addr) - } else if addr.Protocol.IsHTTPSFamily() { - httpsConfig.IsOn = true - httpsConfig.Listen = append(httpsConfig.Listen, addr) - } - } - - // 证书 - certIds := []int64{} - if len(params.CertIdsJSON) > 0 { - err = json.Unmarshal(params.CertIdsJSON, &certIds) - if err != nil { - this.ErrorPage(err) - return - } - } - if httpsConfig.IsOn && len(httpsConfig.Listen) > 0 && len(certIds) == 0 { - this.Fail("请添加至少一个证书") - } - - certRefs := []*sslconfigs.SSLCertRef{} - for _, certId := range certIds { - certRefs = append(certRefs, &sslconfigs.SSLCertRef{ - IsOn: true, - CertId: certId, - }) - } - certRefsJSON, err := json.Marshal(certRefs) - if err != nil { - this.ErrorPage(err) - return - } - - // 创建策略 - sslPolicyId := params.SslPolicyId - if sslPolicyId == 0 { - if len(certIds) > 0 { - sslPolicyCreateResp, err := this.RPC().SSLPolicyRPC().CreateSSLPolicy(this.AdminContext(), &pb.CreateSSLPolicyRequest{ - SslCertsJSON: certRefsJSON, - }) - if err != nil { - this.ErrorPage(err) - return - } - sslPolicyId = sslPolicyCreateResp.SslPolicyId - } - } else { - _, err = this.RPC().SSLPolicyRPC().UpdateSSLPolicy(this.AdminContext(), &pb.UpdateSSLPolicyRequest{ - SslPolicyId: sslPolicyId, - SslCertsJSON: certRefsJSON, - }) - if err != nil { - this.ErrorPage(err) - return - } - } - httpsConfig.SSLPolicyRef = &sslconfigs.SSLPolicyRef{ - IsOn: true, - SSLPolicyId: sslPolicyId, - } - - // 访问地址 - accessAddrs := []*serverconfigs.NetworkAddressConfig{} - err = json.Unmarshal(params.AccessAddrsJSON, &accessAddrs) - if err != nil { - this.ErrorPage(err) - return - } - if len(accessAddrs) == 0 { - this.Fail("请添加至少一个外部访问地址") - } - - httpJSON, err := json.Marshal(httpConfig) - if err != nil { - this.ErrorPage(err) - return - } - httpsJSON, err := json.Marshal(httpsConfig) - if err != nil { - this.ErrorPage(err) - return - } - - _, err = this.RPC().UserNodeRPC().UpdateUserNode(this.AdminContext(), &pb.UpdateUserNodeRequest{ - UserNodeId: params.NodeId, - Name: params.Name, - Description: params.Description, - HttpJSON: httpJSON, - HttpsJSON: httpsJSON, - AccessAddrsJSON: params.AccessAddrsJSON, - 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/actions/default/settings/user-nodes/node/updateAddrPopup.go b/internal/web/actions/default/settings/user-nodes/node/updateAddrPopup.go deleted file mode 100644 index 539270f8..00000000 --- a/internal/web/actions/default/settings/user-nodes/node/updateAddrPopup.go +++ /dev/null @@ -1,42 +0,0 @@ -package node - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" - "github.com/iwind/TeaGo/actions" - "net" -) - -type UpdateAddrPopupAction struct { - actionutils.ParentAction -} - -func (this *UpdateAddrPopupAction) Init() { - this.Nav("", "", "") -} - -func (this *UpdateAddrPopupAction) RunGet(params struct{}) { - this.Show() -} - -func (this *UpdateAddrPopupAction) RunPost(params struct { - Protocol string - Addr string - Must *actions.Must -}) { - params.Must. - Field("addr", params.Addr). - Require("请输入访问地址") - host, port, err := net.SplitHostPort(params.Addr) - if err != nil { - this.FailField("addr", "错误的访问地址") - } - - addrConfig := &serverconfigs.NetworkAddressConfig{ - Protocol: serverconfigs.Protocol(params.Protocol), - Host: host, - PortRange: port, - } - this.Data["addr"] = addrConfig - this.Success() -} diff --git a/internal/web/import.go b/internal/web/import.go index 193cad4f..b7b3e76b 100644 --- a/internal/web/import.go +++ b/internal/web/import.go @@ -121,7 +121,6 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/server" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/ui" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/upgrade" - _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/user-nodes" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/user-ui" // 恢复