From 4c6bcc7c19dcdb30b30ad4e52c1feffe971b38f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Wed, 27 Jan 2021 22:59:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0DNS=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/rpc/rpc_client.go | 4 + .../clusters/clusterutils/cluster_helper.go | 1 + .../web/actions/default/dns/tasks/check.go | 23 ++++++ .../web/actions/default/dns/tasks/delete.go | 24 ++++++ .../web/actions/default/dns/tasks/init.go | 22 ++++++ .../actions/default/dns/tasks/listPopup.go | 76 +++++++++++++++++++ internal/web/helpers/user_must_auth.go | 3 +- internal/web/import.go | 1 + web/views/@default/@layout.css | 23 +++++- web/views/@default/@layout.css.map | 2 +- web/views/@default/@layout.html | 17 +++-- web/views/@default/@layout.js | 39 ++++++++++ web/views/@default/@layout.less | 66 +++++++++++----- .../@default/clusters/tasks/listPopup.html | 2 +- web/views/@default/dns/tasks/listPopup.css | 6 ++ .../@default/dns/tasks/listPopup.css.map | 1 + web/views/@default/dns/tasks/listPopup.html | 37 +++++++++ web/views/@default/dns/tasks/listPopup.js | 30 ++++++++ web/views/@default/dns/tasks/listPopup.less | 5 ++ 19 files changed, 353 insertions(+), 29 deletions(-) create mode 100644 internal/web/actions/default/dns/tasks/check.go create mode 100644 internal/web/actions/default/dns/tasks/delete.go create mode 100644 internal/web/actions/default/dns/tasks/init.go create mode 100644 internal/web/actions/default/dns/tasks/listPopup.go create mode 100644 web/views/@default/dns/tasks/listPopup.css create mode 100644 web/views/@default/dns/tasks/listPopup.css.map create mode 100644 web/views/@default/dns/tasks/listPopup.html create mode 100644 web/views/@default/dns/tasks/listPopup.js create mode 100644 web/views/@default/dns/tasks/listPopup.less diff --git a/internal/rpc/rpc_client.go b/internal/rpc/rpc_client.go index 1eeff2f2..c7885ad0 100644 --- a/internal/rpc/rpc_client.go +++ b/internal/rpc/rpc_client.go @@ -264,6 +264,10 @@ func (this *RPCClient) DNSRPC() pb.DNSServiceClient { return pb.NewDNSServiceClient(this.pickConn()) } +func (this *RPCClient) DNSTaskRPC() pb.DNSTaskServiceClient { + return pb.NewDNSTaskServiceClient(this.pickConn()) +} + func (this *RPCClient) ACMEUserRPC() pb.ACMEUserServiceClient { return pb.NewACMEUserServiceClient(this.pickConn()) } diff --git a/internal/web/actions/default/clusters/clusterutils/cluster_helper.go b/internal/web/actions/default/clusters/clusterutils/cluster_helper.go index 1eae3cae..82810a14 100644 --- a/internal/web/actions/default/clusters/clusterutils/cluster_helper.go +++ b/internal/web/actions/default/clusters/clusterutils/cluster_helper.go @@ -95,6 +95,7 @@ func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, selectedIt "name": "DNS设置", "url": "/clusters/cluster/settings/dns?clusterId=" + clusterId, "isActive": selectedItem == "dns", + "isOn": cluster.DnsDomainId > 0 || len(cluster.DnsName) > 0, }) items = append(items, maps.Map{ "name": "系统服务", diff --git a/internal/web/actions/default/dns/tasks/check.go b/internal/web/actions/default/dns/tasks/check.go new file mode 100644 index 00000000..0fcbd0c2 --- /dev/null +++ b/internal/web/actions/default/dns/tasks/check.go @@ -0,0 +1,23 @@ +package tasks + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" +) + +type CheckAction struct { + actionutils.ParentAction +} + +func (this *CheckAction) RunPost(params struct{}) { + resp, err := this.RPC().DNSTaskRPC().ExistsDNSTasks(this.AdminContext(), &pb.ExistsDNSTasksRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["isDoing"] = resp.ExistTasks + this.Data["hasError"] = resp.ExistError + + this.Success() +} diff --git a/internal/web/actions/default/dns/tasks/delete.go b/internal/web/actions/default/dns/tasks/delete.go new file mode 100644 index 00000000..21e12838 --- /dev/null +++ b/internal/web/actions/default/dns/tasks/delete.go @@ -0,0 +1,24 @@ +package tasks + +import ( + "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 { + TaskId int64 +}) { + defer this.CreateLogInfo("删除DNS同步任务 %d", params.TaskId) + + _, err := this.RPC().DNSTaskRPC().DeleteDNSTask(this.AdminContext(), &pb.DeleteDNSTaskRequest{DnsTaskId: params.TaskId}) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/dns/tasks/init.go b/internal/web/actions/default/dns/tasks/init.go new file mode 100644 index 00000000..39202f70 --- /dev/null +++ b/internal/web/actions/default/dns/tasks/init.go @@ -0,0 +1,22 @@ +package tasks + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/clusterutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" + "github.com/iwind/TeaGo" +) + +func init() { + TeaGo.BeforeStart(func(server *TeaGo.Server) { + server. + Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeDNS)). + Helper(clusterutils.NewClustersHelper()). + Prefix("/dns/tasks"). + GetPost("/listPopup", new(ListPopupAction)). + Post("/check", new(CheckAction)). + Post("/delete", new(DeleteAction)). + + EndAll() + }) +} diff --git a/internal/web/actions/default/dns/tasks/listPopup.go b/internal/web/actions/default/dns/tasks/listPopup.go new file mode 100644 index 00000000..a66b07bd --- /dev/null +++ b/internal/web/actions/default/dns/tasks/listPopup.go @@ -0,0 +1,76 @@ +package tasks + +import ( + "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" + timeutil "github.com/iwind/TeaGo/utils/time" +) + +type ListPopupAction struct { + actionutils.ParentAction +} + +func (this *ListPopupAction) Init() { + this.Nav("", "", "") +} + +func (this *ListPopupAction) RunGet(params struct{}) { + this.retrieveTasks() + + this.Show() +} + +func (this *ListPopupAction) RunPost(params struct { + Must *actions.Must +}) { + this.retrieveTasks() + this.Success() +} + +func (this *ListPopupAction) retrieveTasks() { + resp, err := this.RPC().DNSTaskRPC().FindAllDoingDNSTasks(this.AdminContext(), &pb.FindAllDoingDNSTasksRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + taskMaps := []maps.Map{} + for _, task := range resp.DnsTasks { + var clusterMap maps.Map = nil + var nodeMap maps.Map = nil + var serverMap maps.Map = nil + + if task.NodeCluster != nil { + clusterMap = maps.Map{ + "id": task.NodeCluster.Id, + "name": task.NodeCluster.Name, + } + } + if task.Node != nil { + nodeMap = maps.Map{ + "id": task.Node.Id, + "name": task.Node.Name, + } + } + if task.Server != nil { + serverMap = maps.Map{ + "id": task.Server.Id, + "name": task.Server.Name, + } + } + + taskMaps = append(taskMaps, maps.Map{ + "id": task.Id, + "type": task.Type, + "isDone": task.IsDone, + "isOk": task.IsOk, + "error": task.Error, + "updatedTime": timeutil.FormatTime("Y-m-d H:i:s", task.UpdatedAt), + "cluster": clusterMap, + "node": nodeMap, + "server": serverMap, + }) + } + this.Data["tasks"] = taskMaps +} diff --git a/internal/web/helpers/user_must_auth.go b/internal/web/helpers/user_must_auth.go index d4656083..9b3ccd45 100644 --- a/internal/web/helpers/user_must_auth.go +++ b/internal/web/helpers/user_must_auth.go @@ -110,7 +110,8 @@ func (this *userMustAuth) BeforeAction(actionPtr actions.ActionWrapper, paramNam if !action.Data.Has("teaSubMenu") { action.Data["teaSubMenu"] = "" } - action.Data["teaCheckClusterTask"] = configloaders.AllowModule(adminId, configloaders.AdminModuleCodeNode) + action.Data["teaCheckNodeTasks"] = configloaders.AllowModule(adminId, configloaders.AdminModuleCodeNode) + action.Data["teaCheckDNSTasks"] = configloaders.AllowModule(adminId, configloaders.AdminModuleCodeDNS) // 菜单 action.Data["firstMenuItem"] = "" diff --git a/internal/web/import.go b/internal/web/import.go index f31265a1..396a1022 100644 --- a/internal/web/import.go +++ b/internal/web/import.go @@ -17,6 +17,7 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/dashboard" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/db" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/dns" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/dns/tasks" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/finance" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/finance/bills" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/index" diff --git a/web/views/@default/@layout.css b/web/views/@default/@layout.css index 695b09bf..e6e1826d 100644 --- a/web/views/@default/@layout.css +++ b/web/views/@default/@layout.css @@ -220,9 +220,20 @@ p.margin { opacity: 0.8; } } +@keyframes rotation { + from { + transform: rotate(0); + } + to { + transform: rotate(360deg); + } +} body .ui.menu .item .blink { animation: blink 1s infinite; } +body .ui.menu .item:not(:hover) span.rotate { + animation: rotation 3s infinite; +} body.expanded .main-menu { display: none; } @@ -239,9 +250,6 @@ body.expanded .main { border: 0 !important; background: #276ac6 !important; } -.top-nav::-webkit-scrollbar { - height: 2px; -} .top-nav img.avatar { width: 1.6em !important; height: 1.6em !important; @@ -255,9 +263,18 @@ body.expanded .main { font-size: 0.9em; padding-left: 0.2em; } +.top-nav .item .hover-span span { + display: none; +} +.top-nav .item:hover .hover-span span { + display: inline; +} .top-nav .item.red { color: red !important; } +.top-nav::-webkit-scrollbar { + height: 2px; +} /** 顶部菜单 **/ .top-secondary-menu { position: fixed; diff --git a/web/views/@default/@layout.css.map b/web/views/@default/@layout.css.map index 0f0c9e17..98d7b6a3 100644 --- a/web/views/@default/@layout.css.map +++ b/web/views/@default/@layout.css.map @@ -1 +1 @@ -{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file +{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file diff --git a/web/views/@default/@layout.html b/web/views/@default/@layout.html index 39ee7dee..a1082337 100644 --- a/web/views/@default/@layout.html +++ b/web/views/@default/@layout.html @@ -28,10 +28,17 @@ diff --git a/web/views/@default/@layout.js b/web/views/@default/@layout.js index e08edd90..89063fd5 100644 --- a/web/views/@default/@layout.js +++ b/web/views/@default/@layout.js @@ -16,6 +16,9 @@ Tea.context(function () { // 检查集群节点同步 this.loadNodeTasks(); + + // 检查DNS同步 + this.loadDNSTasks() }) /** @@ -83,6 +86,9 @@ Tea.context(function () { } this.loadNodeTasks = function () { + if (!Tea.Vue.teaCheckNodeTasks) { + return + } this.$post("/clusters/tasks/check") .success(function (resp) { this.doingNodeTasks.isDoing = resp.data.isDoing @@ -102,6 +108,39 @@ Tea.context(function () { width: "50em" }) } + + /** + * DNS同步任务 + */ + this.doingDNSTasks = { + isDoing: false, + hasError: false, + isUpdated: false + } + + this.loadDNSTasks = function () { + if (!Tea.Vue.teaCheckDNSTasks) { + return + } + this.$post("/dns/tasks/check") + .success(function (resp) { + this.doingDNSTasks.isDoing = resp.data.isDoing + this.doingDNSTasks.hasError = resp.data.hasError + this.doingDNSTasks.isUpdated = true + }) + .done(function () { + this.$delay(function () { + this.loadDNSTasks() + }, 3000) + }) + } + + this.showDNSTasks = function () { + teaweb.popup("/dns/tasks/listPopup", { + height: "24em", + width: "50em" + }) + } }); window.NotifySuccess = function (message, url, params) { diff --git a/web/views/@default/@layout.less b/web/views/@default/@layout.less index 747f8bfa..b3d657b9 100644 --- a/web/views/@default/@layout.less +++ b/web/views/@default/@layout.less @@ -176,10 +176,23 @@ div.margin, p.margin { } } +@keyframes rotation { + from { + transform: rotate(0); + } + to { + transform: rotate(360deg); + } +} + body .ui.menu .item .blink { animation: blink 1s infinite; } +body .ui.menu .item:not(:hover) span.rotate { + animation: rotation 3s infinite; +} + body.expanded .main-menu { display: none; } @@ -197,30 +210,47 @@ body.expanded .main { overflow-x: auto; border: 0 !important; background: #276ac6 !important; + + img.avatar { + width: 1.6em !important; + height: 1.6em !important; + padding: 0.2em; + background: #fff; + border-radius: 0.9em; + margin-right: 0.5em !important; + } + + em { + font-style: normal; + font-size: 0.9em; + padding-left: 0.2em; + } + + .item { + .hover-span { + span { + display: none; + } + } + } + + .item:hover { + .hover-span { + span { + display: inline; + } + } + } + + .item.red { + color: red !important; + } } .top-nav::-webkit-scrollbar { height: 2px; } -.top-nav img.avatar { - width: 1.6em !important; - height: 1.6em !important; - padding: 0.2em; - background: #fff; - border-radius: 0.9em; - margin-right: 0.5em !important; -} - -.top-nav em { - font-style: normal; - font-size: 0.9em; - padding-left: 0.2em; -} - -.top-nav .item.red { - color: red !important; -} /** 顶部菜单 **/ .top-secondary-menu { diff --git a/web/views/@default/clusters/tasks/listPopup.html b/web/views/@default/clusters/tasks/listPopup.html index 71d58d38..8abd1106 100644 --- a/web/views/@default/clusters/tasks/listPopup.html +++ b/web/views/@default/clusters/tasks/listPopup.html @@ -1,6 +1,6 @@ {$layout "layout_popup"} -

正在同步的任务(共{{countTasks}}个)

+

正在同步的节点任务(共{{countTasks}}个)

暂时没有同步的集群。

diff --git a/web/views/@default/dns/tasks/listPopup.css b/web/views/@default/dns/tasks/listPopup.css new file mode 100644 index 00000000..545fa423 --- /dev/null +++ b/web/views/@default/dns/tasks/listPopup.css @@ -0,0 +1,6 @@ +h3 span { + margin-left: 0.5em; + color: grey; + font-size: 0.6em !important; +} +/*# sourceMappingURL=listPopup.css.map */ \ No newline at end of file diff --git a/web/views/@default/dns/tasks/listPopup.css.map b/web/views/@default/dns/tasks/listPopup.css.map new file mode 100644 index 00000000..a1614f7c --- /dev/null +++ b/web/views/@default/dns/tasks/listPopup.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["listPopup.less"],"names":[],"mappings":"AAAA,EAAG;EACF,kBAAA;EACA,WAAA;EACA,2BAAA","file":"listPopup.css"} \ No newline at end of file diff --git a/web/views/@default/dns/tasks/listPopup.html b/web/views/@default/dns/tasks/listPopup.html new file mode 100644 index 00000000..857f6c31 --- /dev/null +++ b/web/views/@default/dns/tasks/listPopup.html @@ -0,0 +1,37 @@ +{$layout "layout_popup"} + +

正在同步的DNS任务(共{{tasks.length}}个)

+

暂时没有同步的集群。

+
+
+ + + + + + + + + + + + + + + + +
对象任务状态触发时间
+ {{task.cluster.name}} + {{task.node.name}} + {{task.server.name}} + + 集群 + 节点 + 服务 + + {{task.error}} + 正在同步... + {{task.updatedTime}} + +
+
\ No newline at end of file diff --git a/web/views/@default/dns/tasks/listPopup.js b/web/views/@default/dns/tasks/listPopup.js new file mode 100644 index 00000000..a14b1c55 --- /dev/null +++ b/web/views/@default/dns/tasks/listPopup.js @@ -0,0 +1,30 @@ +Tea.context(function () { + this.$delay(function () { + this.reload() + }) + + this.reload = function () { + this.$post("$") + .success(function (resp) { + this.tasks = resp.data.tasks + }) + .done(function () { + this.$delay(function () { + this.reload() + }, 3000) + }) + } + + this.deleteTask = function (taskId) { + let that = this + teaweb.confirm("确定要删除这个任务吗?", function () { + that.$post(".delete") + .params({ + taskId: taskId + }) + .success(function () { + teaweb.reload() + }) + }) + } +}) \ No newline at end of file diff --git a/web/views/@default/dns/tasks/listPopup.less b/web/views/@default/dns/tasks/listPopup.less new file mode 100644 index 00000000..19113e8d --- /dev/null +++ b/web/views/@default/dns/tasks/listPopup.less @@ -0,0 +1,5 @@ +h3 span { + margin-left: 0.5em; + color: grey; + font-size: 0.6em !important; +}