diff --git a/internal/const/const.go b/internal/const/const.go index 32a533de..47be5fe2 100644 --- a/internal/const/const.go +++ b/internal/const/const.go @@ -1,7 +1,7 @@ package teaconst const ( - Version = "0.0.2" + Version = "0.0.3" ProductName = "Edge Admin" ProcessName = "edge-admin" diff --git a/internal/rpc/rpc_client.go b/internal/rpc/rpc_client.go index acdd80ac..c4614c69 100644 --- a/internal/rpc/rpc_client.go +++ b/internal/rpc/rpc_client.go @@ -216,6 +216,10 @@ func (this *RPCClient) DNSRPC() pb.DNSServiceClient { return pb.NewDNSServiceClient(this.pickConn()) } +func (this *RPCClient) ACMEUserRPC() pb.ACMEUserServiceClient { + return pb.NewACMEUserServiceClient(this.pickConn()) +} + // 构造Admin上下文 func (this *RPCClient) Context(adminId int64) context.Context { ctx := context.Background() diff --git a/internal/web/actions/default/servers/certs/acme/create.go b/internal/web/actions/default/servers/certs/acme/create.go new file mode 100644 index 00000000..091df02d --- /dev/null +++ b/internal/web/actions/default/servers/certs/acme/create.go @@ -0,0 +1,15 @@ +package acme + +import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + +type CreateAction struct { + actionutils.ParentAction +} + +func (this *CreateAction) Init() { + this.Nav("", "", "") +} + +func (this *CreateAction) RunGet(params struct{}) { + this.Show() +} diff --git a/internal/web/actions/default/servers/certs/acme/index.go b/internal/web/actions/default/servers/certs/acme/index.go new file mode 100644 index 00000000..b7ee3e04 --- /dev/null +++ b/internal/web/actions/default/servers/certs/acme/index.go @@ -0,0 +1,15 @@ +package acme + +import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "", "cert") +} + +func (this *IndexAction) RunGet(params struct{}) { + this.Show() +} diff --git a/internal/web/actions/default/servers/certs/acme/users/createPopup.go b/internal/web/actions/default/servers/certs/acme/users/createPopup.go new file mode 100644 index 00000000..829e04f4 --- /dev/null +++ b/internal/web/actions/default/servers/certs/acme/users/createPopup.go @@ -0,0 +1,46 @@ +package users + +import ( + "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("", "", "") +} + +func (this *CreatePopupAction) RunGet(params struct{}) { + this.Show() +} + +func (this *CreatePopupAction) RunPost(params struct { + Email string + Description string + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + params.Must. + Field("email", params.Email). + Require("请输入邮箱"). + Email("请输入正确的邮箱格式") + + createResp, err := this.RPC().ACMEUserRPC().CreateACMEUser(this.AdminContext(), &pb.CreateACMEUserRequest{ + Email: params.Email, + Description: params.Description, + }) + if err != nil { + this.ErrorPage(err) + return + } + + // 日志 + defer this.CreateLogInfo("创建ACME用户 %d", createResp.AcmeUserId) + + this.Success() +} diff --git a/internal/web/actions/default/servers/certs/acme/users/delete.go b/internal/web/actions/default/servers/certs/acme/users/delete.go new file mode 100644 index 00000000..0155e83c --- /dev/null +++ b/internal/web/actions/default/servers/certs/acme/users/delete.go @@ -0,0 +1,33 @@ +package users + +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 { + UserId int64 +}) { + defer this.CreateLogInfo("删除ACME用户 %d", params.UserId) + + countResp, err := this.RPC().SSLCertRPC().CountSSLCertsWithACMEUserId(this.AdminContext(), &pb.CountSSLCertsWithACMEUserIdRequest{AcmeUserId: params.UserId}) + if err != nil { + this.ErrorPage(err) + return + } + if countResp.Count > 0 { + this.Fail("有证书正在和这个用户关联,所以不能删除") + } + + _, err = this.RPC().ACMEUserRPC().DeleteACMEUser(this.AdminContext(), &pb.DeleteACMEUserRequest{AcmeUserId: params.UserId}) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/certs/acme/users/index.go b/internal/web/actions/default/servers/certs/acme/users/index.go new file mode 100644 index 00000000..9e1fa39e --- /dev/null +++ b/internal/web/actions/default/servers/certs/acme/users/index.go @@ -0,0 +1,53 @@ +package users + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/maps" + timeutil "github.com/iwind/TeaGo/utils/time" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "", "user") +} + +func (this *IndexAction) RunGet(params struct{}) { + countResp, err := this.RPC().ACMEUserRPC().CountACMEUsers(this.AdminContext(), &pb.CountAcmeUsersRequest{ + AdminId: this.AdminId(), + UserId: 0, + }) + if err != nil { + this.ErrorPage(err) + return + } + count := countResp.Count + page := this.NewPage(count) + this.Data["page"] = page.AsHTML() + + usersResp, err := this.RPC().ACMEUserRPC().ListACMEUsers(this.AdminContext(), &pb.ListACMEUsersRequest{ + AdminId: this.AdminId(), + UserId: 0, + Offset: page.Offset, + Size: page.Size, + }) + if err != nil { + this.ErrorPage(err) + return + } + userMaps := []maps.Map{} + for _, user := range usersResp.AcmeUsers { + userMaps = append(userMaps, maps.Map{ + "id": user.Id, + "email": user.Email, + "description": user.Description, + "createdTime": timeutil.FormatTime("Y-m-d H:i:s", user.CreatedAt), + }) + } + this.Data["users"] = userMaps + + this.Show() +} diff --git a/internal/web/actions/default/servers/certs/acme/users/selectPopup.go b/internal/web/actions/default/servers/certs/acme/users/selectPopup.go new file mode 100644 index 00000000..905de097 --- /dev/null +++ b/internal/web/actions/default/servers/certs/acme/users/selectPopup.go @@ -0,0 +1,15 @@ +package users + +import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + +type SelectPopupAction struct { + actionutils.ParentAction +} + +func (this *SelectPopupAction) Init() { + this.Nav("", "", "") +} + +func (this *SelectPopupAction) RunGet(params struct{}) { + this.Show() +} diff --git a/internal/web/actions/default/servers/certs/acme/users/updatePopup.go b/internal/web/actions/default/servers/certs/acme/users/updatePopup.go new file mode 100644 index 00000000..de998db0 --- /dev/null +++ b/internal/web/actions/default/servers/certs/acme/users/updatePopup.go @@ -0,0 +1,60 @@ +package users + +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" +) + +type UpdatePopupAction struct { + actionutils.ParentAction +} + +func (this *UpdatePopupAction) Init() { + this.Nav("", "", "") +} + +func (this *UpdatePopupAction) RunGet(params struct { + UserId int64 +}) { + userResp, err := this.RPC().ACMEUserRPC().FindEnabledACMEUser(this.AdminContext(), &pb.FindEnabledACMEUserRequest{AcmeUserId: params.UserId}) + if err != nil { + this.ErrorPage(err) + return + } + user := userResp.AcmeUser + if user == nil { + this.NotFound("acmeUser", params.UserId) + return + } + + this.Data["user"] = maps.Map{ + "id": user.Id, + "email": user.Email, + "description": user.Description, + } + + this.Show() +} + +func (this *UpdatePopupAction) RunPost(params struct { + UserId int64 + Description string + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + defer this.CreateLogInfo("修改ACME用户 %d", params.UserId) + + _, err := this.RPC().ACMEUserRPC().UpdateACMEUser(this.AdminContext(), &pb.UpdateACMEUserRequest{ + AcmeUserId: params.UserId, + Description: params.Description, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/components/ssl/certPopup.go b/internal/web/actions/default/servers/certs/certPopup.go similarity index 99% rename from internal/web/actions/default/servers/components/ssl/certPopup.go rename to internal/web/actions/default/servers/certs/certPopup.go index 3ecbc855..ab8751e3 100644 --- a/internal/web/actions/default/servers/components/ssl/certPopup.go +++ b/internal/web/actions/default/servers/certs/certPopup.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/datajs.go b/internal/web/actions/default/servers/certs/datajs.go similarity index 99% rename from internal/web/actions/default/servers/components/ssl/datajs.go rename to internal/web/actions/default/servers/certs/datajs.go index 2eadb877..303f65ed 100644 --- a/internal/web/actions/default/servers/components/ssl/datajs.go +++ b/internal/web/actions/default/servers/certs/datajs.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/delete.go b/internal/web/actions/default/servers/certs/delete.go similarity index 98% rename from internal/web/actions/default/servers/components/ssl/delete.go rename to internal/web/actions/default/servers/certs/delete.go index 8a8b7d46..7160f1fb 100644 --- a/internal/web/actions/default/servers/components/ssl/delete.go +++ b/internal/web/actions/default/servers/certs/delete.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "github.com/TeaOSLab/EdgeAdmin/internal/oplogs" diff --git a/internal/web/actions/default/servers/components/ssl/downloadCert.go b/internal/web/actions/default/servers/certs/downloadCert.go similarity index 98% rename from internal/web/actions/default/servers/components/ssl/downloadCert.go rename to internal/web/actions/default/servers/certs/downloadCert.go index ef4a5bf7..5816499a 100644 --- a/internal/web/actions/default/servers/components/ssl/downloadCert.go +++ b/internal/web/actions/default/servers/certs/downloadCert.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/downloadKey.go b/internal/web/actions/default/servers/certs/downloadKey.go similarity index 98% rename from internal/web/actions/default/servers/components/ssl/downloadKey.go rename to internal/web/actions/default/servers/certs/downloadKey.go index e1cd9af8..0436e7f7 100644 --- a/internal/web/actions/default/servers/components/ssl/downloadKey.go +++ b/internal/web/actions/default/servers/certs/downloadKey.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/downloadZip.go b/internal/web/actions/default/servers/certs/downloadZip.go similarity index 99% rename from internal/web/actions/default/servers/components/ssl/downloadZip.go rename to internal/web/actions/default/servers/certs/downloadZip.go index 40185acb..7826e2ac 100644 --- a/internal/web/actions/default/servers/components/ssl/downloadZip.go +++ b/internal/web/actions/default/servers/certs/downloadZip.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "archive/zip" diff --git a/internal/web/actions/default/servers/certs/helper.go b/internal/web/actions/default/servers/certs/helper.go new file mode 100644 index 00000000..54697eed --- /dev/null +++ b/internal/web/actions/default/servers/certs/helper.go @@ -0,0 +1,35 @@ +package certs + +import ( + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" + "net/http" +) + +type Helper struct { +} + +func NewHelper() *Helper { + return &Helper{} +} + +func (this *Helper) BeforeAction(action *actions.ActionObject) { + if action.Request.Method != http.MethodGet { + return + } + + action.Data["teaMenu"] = "servers" + + action.Data["leftMenuItems"] = []maps.Map{ + { + "name": "证书", + "url": "/servers/certs", + "isActive": action.Data.GetString("leftMenuItem") == "cert", + }, + { + "name": "免费证书", + "url": "/servers/certs/acme", + "isActive": action.Data.GetString("leftMenuItem") == "acme", + }, + } +} diff --git a/internal/web/actions/default/servers/components/ssl/index.go b/internal/web/actions/default/servers/certs/index.go similarity index 99% rename from internal/web/actions/default/servers/components/ssl/index.go rename to internal/web/actions/default/servers/certs/index.go index 13a32c2a..69ebf0e7 100644 --- a/internal/web/actions/default/servers/components/ssl/index.go +++ b/internal/web/actions/default/servers/certs/index.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/init.go b/internal/web/actions/default/servers/certs/init.go similarity index 55% rename from internal/web/actions/default/servers/components/ssl/init.go rename to internal/web/actions/default/servers/certs/init.go index faecb363..7fb2d0c9 100644 --- a/internal/web/actions/default/servers/components/ssl/init.go +++ b/internal/web/actions/default/servers/certs/init.go @@ -1,7 +1,8 @@ -package ssl +package certs import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/componentutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/certs/acme" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/certs/acme/users" "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" "github.com/iwind/TeaGo" ) @@ -11,8 +12,11 @@ func init() { server. Helper(helpers.NewUserMustAuth()). Helper(NewHelper()). - Helper(componentutils.NewComponentHelper()). - Prefix("/servers/components/ssl"). + + Data("teaSubMenu", "cert"). + + Prefix("/servers/certs"). + Data("leftMenuItem", "cert"). Get("", new(IndexAction)). GetPost("/uploadPopup", new(UploadPopupAction)). Post("/delete", new(DeleteAction)). @@ -25,6 +29,20 @@ func init() { Get("/downloadZip", new(DownloadZipAction)). Get("/selectPopup", new(SelectPopupAction)). Get("/datajs", new(DatajsAction)). + + // ACME + Prefix("/servers/certs/acme"). + Data("leftMenuItem", "acme"). + Get("", new(acme.IndexAction)). + GetPost("/create", new(acme.CreateAction)). + + Prefix("/servers/certs/acme/users"). + Get("", new(users.IndexAction)). + GetPost("/createPopup", new(users.CreatePopupAction)). + GetPost("/updatePopup", new(users.UpdatePopupAction)). + Post("/delete", new(users.DeleteAction)). + GetPost("/selectPopup", new(users.SelectPopupAction)). + EndAll() }) } diff --git a/internal/web/actions/default/servers/components/ssl/selectPopup.go b/internal/web/actions/default/servers/certs/selectPopup.go similarity index 99% rename from internal/web/actions/default/servers/components/ssl/selectPopup.go rename to internal/web/actions/default/servers/certs/selectPopup.go index f85584cd..e9c323dd 100644 --- a/internal/web/actions/default/servers/components/ssl/selectPopup.go +++ b/internal/web/actions/default/servers/certs/selectPopup.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/updatePopup.go b/internal/web/actions/default/servers/certs/updatePopup.go similarity index 99% rename from internal/web/actions/default/servers/components/ssl/updatePopup.go rename to internal/web/actions/default/servers/certs/updatePopup.go index 34bdd82d..f2ecd97d 100644 --- a/internal/web/actions/default/servers/components/ssl/updatePopup.go +++ b/internal/web/actions/default/servers/certs/updatePopup.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/uploadPopup.go b/internal/web/actions/default/servers/certs/uploadPopup.go similarity index 99% rename from internal/web/actions/default/servers/components/ssl/uploadPopup.go rename to internal/web/actions/default/servers/certs/uploadPopup.go index cddd3d4b..be22ba3d 100644 --- a/internal/web/actions/default/servers/components/ssl/uploadPopup.go +++ b/internal/web/actions/default/servers/certs/uploadPopup.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/viewCert.go b/internal/web/actions/default/servers/certs/viewCert.go similarity index 98% rename from internal/web/actions/default/servers/components/ssl/viewCert.go rename to internal/web/actions/default/servers/certs/viewCert.go index 59484639..90923a67 100644 --- a/internal/web/actions/default/servers/components/ssl/viewCert.go +++ b/internal/web/actions/default/servers/certs/viewCert.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/ssl/viewKey.go b/internal/web/actions/default/servers/certs/viewKey.go similarity index 98% rename from internal/web/actions/default/servers/components/ssl/viewKey.go rename to internal/web/actions/default/servers/certs/viewKey.go index facee9a9..45d5588a 100644 --- a/internal/web/actions/default/servers/components/ssl/viewKey.go +++ b/internal/web/actions/default/servers/certs/viewKey.go @@ -1,4 +1,4 @@ -package ssl +package certs import ( "encoding/json" diff --git a/internal/web/actions/default/servers/components/componentutils/component_helper.go b/internal/web/actions/default/servers/components/componentutils/component_helper.go index 07f2d854..aa8eb81c 100644 --- a/internal/web/actions/default/servers/components/componentutils/component_helper.go +++ b/internal/web/actions/default/servers/components/componentutils/component_helper.go @@ -52,11 +52,6 @@ func (this *ComponentHelper) createLeftMenus(secondMenuItem string) (items []map "url": "/servers/components/log", "isActive": secondMenuItem == "log", }) - items = append(items, maps.Map{ - "name": "SSL证书管理", - "url": "/servers/components/ssl", - "isActive": secondMenuItem == "ssl", - }) items = append(items, maps.Map{ "name": "IP库", "url": "/servers/components/ip-library", diff --git a/internal/web/actions/default/servers/components/ssl/helper.go b/internal/web/actions/default/servers/components/ssl/helper.go deleted file mode 100644 index d0ca9a84..00000000 --- a/internal/web/actions/default/servers/components/ssl/helper.go +++ /dev/null @@ -1,22 +0,0 @@ -package ssl - -import ( - "github.com/iwind/TeaGo/actions" - "net/http" -) - -type Helper struct { -} - -func NewHelper() *Helper { - return &Helper{} -} - -func (this *Helper) BeforeAction(action *actions.ActionObject) { - if action.Request.Method != http.MethodGet { - return - } - - action.Data["mainTab"] = "component" - action.Data["secondMenuItem"] = "ssl" -} diff --git a/internal/web/helpers/user_must_auth.go b/internal/web/helpers/user_must_auth.go index c3bf8570..63df918b 100644 --- a/internal/web/helpers/user_must_auth.go +++ b/internal/web/helpers/user_must_auth.go @@ -153,6 +153,11 @@ func (this *UserMustAuth) modules() []maps.Map { "url": "/servers/components", "code": "components", }, + { + "name": "证书管理", + "url": "/servers/certs", + "code": "cert", + }, }, }, { diff --git a/internal/web/import.go b/internal/web/import.go index 17e7cc6a..44672f3d 100644 --- a/internal/web/import.go +++ b/internal/web/import.go @@ -19,12 +19,12 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/messages" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/certs" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/cache" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/groups" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/ip-library" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/log" - _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/ssl" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/components/waf" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/board" diff --git a/web/public/js/components/common/menu-item.js b/web/public/js/components/common/menu-item.js index 0663ba73..e718ac3b 100644 --- a/web/public/js/components/common/menu-item.js +++ b/web/public/js/components/common/menu-item.js @@ -4,20 +4,25 @@ Vue.component("menu-item", { props: ["href", "active", "code"], data: function () { - var active = this.active; - if (typeof(active) =="undefined") { - var itemCode = ""; + var active = this.active + if (typeof (active) == "undefined") { + var itemCode = "" if (typeof (window.TEA.ACTION.data.firstMenuItem) != "undefined") { - itemCode = window.TEA.ACTION.data.firstMenuItem; + itemCode = window.TEA.ACTION.data.firstMenuItem } - active = (itemCode == this.code); + active = (itemCode == this.code) } return { vHref: (this.href == null) ? "" : this.href, vActive: active - }; + } + }, + methods: { + click: function (e) { + this.$emit("click", e) + } }, template: '\ - \ + \ ' }); \ No newline at end of file diff --git a/web/public/js/components/server/ssl-certs-box.js b/web/public/js/components/server/ssl-certs-box.js index 49c31d99..208c43d8 100644 --- a/web/public/js/components/server/ssl-certs-box.js +++ b/web/public/js/components/server/ssl-certs-box.js @@ -36,7 +36,7 @@ Vue.component("ssl-certs-box", { width = "35em" height = "20em" } - teaweb.popup("/servers/components/ssl/selectPopup?viewSize=" + viewSize, { + teaweb.popup("/servers/certs/selectPopup?viewSize=" + viewSize, { width: width, height: height, callback: function (resp) { @@ -48,7 +48,7 @@ Vue.component("ssl-certs-box", { // 上传证书 uploadCert: function () { let that = this - teaweb.popup("/servers/components/ssl/uploadPopup", { + teaweb.popup("/servers/certs/uploadPopup", { height: "28em", callback: function (resp) { teaweb.success("上传成功", function () { diff --git a/web/public/js/components/server/ssl-certs-view.js b/web/public/js/components/server/ssl-certs-view.js index fc6f4181..87e33427 100644 --- a/web/public/js/components/server/ssl-certs-view.js +++ b/web/public/js/components/server/ssl-certs-view.js @@ -17,7 +17,7 @@ Vue.component("ssl-certs-view", { // 查看详情 viewCert: function (certId) { - teaweb.popup("/servers/components/ssl/certPopup?certId=" + certId, { + teaweb.popup("/servers/certs/certPopup?certId=" + certId, { height: "28em", width: "48em" }) diff --git a/web/public/js/components/server/ssl-config-box.js b/web/public/js/components/server/ssl-config-box.js index ed929109..fed3d2ce 100644 --- a/web/public/js/components/server/ssl-config-box.js +++ b/web/public/js/components/server/ssl-config-box.js @@ -95,7 +95,7 @@ Vue.component("ssl-config-box", { // 选择证书 selectCert: function () { let that = this - teaweb.popup("/servers/components/ssl/selectPopup", { + teaweb.popup("/servers/certs/selectPopup", { width: "50em", height: "30em", callback: function (resp) { @@ -108,7 +108,7 @@ Vue.component("ssl-config-box", { // 上传证书 uploadCert: function () { let that = this - teaweb.popup("/servers/components/ssl/uploadPopup", { + teaweb.popup("/servers/certs/uploadPopup", { height: "28em", callback: function (resp) { teaweb.success("上传成功", function () { @@ -277,7 +277,7 @@ Vue.component("ssl-config-box", { // 选择客户端CA证书 selectClientCACert: function () { let that = this - teaweb.popup("/servers/components/ssl/selectPopup?isCA=1", { + teaweb.popup("/servers/certs/selectPopup?isCA=1", { width: "50em", height: "30em", callback: function (resp) { @@ -290,7 +290,7 @@ Vue.component("ssl-config-box", { // 上传CA证书 uploadClientCACert: function () { let that = this - teaweb.popup("/servers/components/ssl/uploadPopup?isCA=1", { + teaweb.popup("/servers/certs/uploadPopup?isCA=1", { height: "28em", callback: function (resp) { teaweb.success("上传成功", function () { diff --git a/web/views/@default/@layout.js b/web/views/@default/@layout.js index 685ca9bc..2c5fe35a 100644 --- a/web/views/@default/@layout.js +++ b/web/views/@default/@layout.js @@ -62,6 +62,13 @@ Tea.context(function () { height: "24em" }) } + + /** + * 弹窗中默认成功回调 + */ + if (window.IS_POPUP === true) { + this.success = window.NotifyPopup + } }); window.NotifySuccess = function (message, url, params) { diff --git a/web/views/@default/@layout_popup.html b/web/views/@default/@layout_popup.html index ccfdc186..fea2295b 100644 --- a/web/views/@default/@layout_popup.html +++ b/web/views/@default/@layout_popup.html @@ -17,19 +17,22 @@ + diff --git a/web/views/@default/api/node/createAddrPopup.js b/web/views/@default/api/node/createAddrPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/api/node/createAddrPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/api/node/createPopup.js b/web/views/@default/api/node/createPopup.js index 1e839563..2947518d 100644 --- a/web/views/@default/api/node/createPopup.js +++ b/web/views/@default/api/node/createPopup.js @@ -1,6 +1,4 @@ Tea.context(function () { - this.success = NotifyPopup - this.hasHTTPS = false this.changeListens = function (addrs) { this.hasHTTPS = addrs.$any(function (k, v) { diff --git a/web/views/@default/api/node/updateAddrPopup.js b/web/views/@default/api/node/updateAddrPopup.js index b98543ed..908b2e55 100644 --- a/web/views/@default/api/node/updateAddrPopup.js +++ b/web/views/@default/api/node/updateAddrPopup.js @@ -1,5 +1,4 @@ Tea.context(function () { - this.success = NotifyPopup let addr = window.parent.UPDATING_ADDR this.protocol = addr.protocol this.addr = addr.host + ":" + addr.portRange diff --git a/web/views/@default/clusters/cluster/groups/createPopup.js b/web/views/@default/clusters/cluster/groups/createPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/clusters/cluster/groups/createPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/groups/updatePopup.js b/web/views/@default/clusters/cluster/groups/updatePopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/clusters/cluster/groups/updatePopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/clusters/cluster/updateNodeSSH.js b/web/views/@default/clusters/cluster/updateNodeSSH.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/clusters/cluster/updateNodeSSH.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/db/createPopup.js b/web/views/@default/db/createPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/db/createPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/db/updatePopup.js b/web/views/@default/db/updatePopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/db/updatePopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/dns/domains/createPopup.js b/web/views/@default/dns/domains/createPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/dns/domains/createPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/dns/domains/updatePopup.js b/web/views/@default/dns/domains/updatePopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/dns/domains/updatePopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/dns/issues/updateNodePopup.js b/web/views/@default/dns/issues/updateNodePopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/dns/issues/updateNodePopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/dns/providers/updatePopup.js b/web/views/@default/dns/providers/updatePopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/dns/providers/updatePopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/nodes/ipAddresses/createPopup.js b/web/views/@default/nodes/ipAddresses/createPopup.js deleted file mode 100644 index 277e82e3..00000000 --- a/web/views/@default/nodes/ipAddresses/createPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function (){ - this.success = NotifyPopup; -}); \ No newline at end of file diff --git a/web/views/@default/servers/addOriginPopup.js b/web/views/@default/servers/addOriginPopup.js deleted file mode 100644 index b0f74795..00000000 --- a/web/views/@default/servers/addOriginPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup; -}); \ No newline at end of file diff --git a/web/views/@default/servers/certs/acme/@menu.html b/web/views/@default/servers/certs/acme/@menu.html new file mode 100644 index 00000000..919facd6 --- /dev/null +++ b/web/views/@default/servers/certs/acme/@menu.html @@ -0,0 +1,4 @@ + + 证书 + 用户 + diff --git a/web/views/@default/servers/certs/acme/index.html b/web/views/@default/servers/certs/acme/index.html new file mode 100644 index 00000000..02064593 --- /dev/null +++ b/web/views/@default/servers/certs/acme/index.html @@ -0,0 +1,6 @@ +{$layout} +{$template "/left_menu_top"} + +
+ {$template "menu"} +
\ No newline at end of file diff --git a/web/views/@default/servers/certs/acme/users/createPopup.html b/web/views/@default/servers/certs/acme/users/createPopup.html new file mode 100644 index 00000000..84728a84 --- /dev/null +++ b/web/views/@default/servers/certs/acme/users/createPopup.html @@ -0,0 +1,22 @@ +{$layout "layout_popup"} + +

创建用户

+
+ + + + + + + + + + +
用户邮箱 * + +

用于自动注册用户的邮箱。

+
备注 + +
+ +
\ No newline at end of file diff --git a/web/views/@default/servers/certs/acme/users/index.html b/web/views/@default/servers/certs/acme/users/index.html new file mode 100644 index 00000000..d208add9 --- /dev/null +++ b/web/views/@default/servers/certs/acme/users/index.html @@ -0,0 +1,36 @@ +{$layout} +{$template "/left_menu_top"} + +
+ {$template "../menu"} + + + [创建用户] + + + +

暂时还没有用户。

+ + + + + + + + + + + + + + +
Email备注操作
{{user.email}} + {{user.description}} + - + + 修改   + 删除 +
+ +
+
\ No newline at end of file diff --git a/web/views/@default/servers/certs/acme/users/index.js b/web/views/@default/servers/certs/acme/users/index.js new file mode 100644 index 00000000..e06c7a19 --- /dev/null +++ b/web/views/@default/servers/certs/acme/users/index.js @@ -0,0 +1,32 @@ +Tea.context(function () { + this.createUser = function () { + teaweb.popup(Tea.url(".createPopup"), { + callback: function () { + teaweb.success("创建成功", function () { + teaweb.reload() + }) + } + }) + } + + this.updateUser = function (userId) { + teaweb.popup("/servers/certs/acme/users/updatePopup?userId=" + userId, { + callback: function () { + teaweb.success("保存成功", function () { + teaweb.reload() + }) + } + }) + } + + this.deleteUser = function (userId) { + let that = this + teaweb.confirm("确定要删除此用户吗?", function () { + that.$post(".delete") + .params({ + userId: userId + }) + .refresh() + }) + } +}) \ No newline at end of file diff --git a/web/views/@default/servers/certs/acme/users/updatePopup.html b/web/views/@default/servers/certs/acme/users/updatePopup.html new file mode 100644 index 00000000..e3ae06a4 --- /dev/null +++ b/web/views/@default/servers/certs/acme/users/updatePopup.html @@ -0,0 +1,23 @@ +{$layout "layout_popup"} + +

修改用户

+
+ + + + + + + + + + + +
用户邮箱 * + {{user.email}} +

用于自动注册用户的邮箱,不允许修改。

+
备注 + +
+ +
\ No newline at end of file diff --git a/web/views/@default/servers/components/ssl/certPopup.css b/web/views/@default/servers/certs/certPopup.css similarity index 100% rename from web/views/@default/servers/components/ssl/certPopup.css rename to web/views/@default/servers/certs/certPopup.css diff --git a/web/views/@default/servers/components/ssl/certPopup.css.map b/web/views/@default/servers/certs/certPopup.css.map similarity index 100% rename from web/views/@default/servers/components/ssl/certPopup.css.map rename to web/views/@default/servers/certs/certPopup.css.map diff --git a/web/views/@default/servers/components/ssl/certPopup.html b/web/views/@default/servers/certs/certPopup.html similarity index 75% rename from web/views/@default/servers/components/ssl/certPopup.html rename to web/views/@default/servers/certs/certPopup.html index d1fc51d0..66dd220a 100644 --- a/web/views/@default/servers/components/ssl/certPopup.html +++ b/web/views/@default/servers/certs/certPopup.html @@ -49,9 +49,9 @@ 证书文件下载 - [ZIP下载]   - [证书下载]   - [私钥下载] + [ZIP下载]   + [证书下载]   + [私钥下载] @@ -59,7 +59,7 @@
{{info.certString}}
- [浏览器新窗口打开] + [浏览器新窗口打开]
@@ -67,7 +67,7 @@ 私钥预览
{{info.keyString}}
- [浏览器新窗口打开] + [浏览器新窗口打开]
diff --git a/web/views/@default/servers/components/ssl/certPopup.js b/web/views/@default/servers/certs/certPopup.js similarity index 100% rename from web/views/@default/servers/components/ssl/certPopup.js rename to web/views/@default/servers/certs/certPopup.js diff --git a/web/views/@default/servers/components/ssl/certPopup.less b/web/views/@default/servers/certs/certPopup.less similarity index 100% rename from web/views/@default/servers/components/ssl/certPopup.less rename to web/views/@default/servers/certs/certPopup.less diff --git a/web/views/@default/servers/components/ssl/index.html b/web/views/@default/servers/certs/index.html similarity index 69% rename from web/views/@default/servers/components/ssl/index.html rename to web/views/@default/servers/certs/index.html index 9fde742b..50fe1765 100644 --- a/web/views/@default/servers/components/ssl/index.html +++ b/web/views/@default/servers/certs/index.html @@ -3,12 +3,12 @@
- 所有证书({{countAll}}) - CA证书({{countCA}}) - 有效证书({{countAvailable}}) - 过期证书({{countExpired}}) - 7天内过期({{count7Days}}) - 30天过期({{count30Days}}) + 所有证书({{countAll}}) + CA证书({{countCA}}) + 有效证书({{countAvailable}}) + 过期证书({{countExpired}}) + 7天内过期({{count7Days}}) + 30天过期({{count30Days}}) | [上传证书] diff --git a/web/views/@default/servers/components/ssl/index.js b/web/views/@default/servers/certs/index.js similarity index 74% rename from web/views/@default/servers/components/ssl/index.js rename to web/views/@default/servers/certs/index.js index 0bed2e1d..26bfe239 100644 --- a/web/views/@default/servers/components/ssl/index.js +++ b/web/views/@default/servers/certs/index.js @@ -1,7 +1,7 @@ Tea.context(function () { // 上传证书 this.uploadCert = function () { - teaweb.popup("/servers/components/ssl/uploadPopup", { + teaweb.popup("/servers/certs/uploadPopup", { height: "28em", callback: function () { teaweb.success("上传成功", function () { @@ -15,7 +15,7 @@ Tea.context(function () { this.deleteCert = function (certId) { let that = this teaweb.confirm("确定要删除此证书吗?", function () { - that.$post("/servers/components/ssl/delete") + that.$post("/servers/certs/delete") .params({ certId: certId }) @@ -25,7 +25,7 @@ Tea.context(function () { // 查看证书 this.viewCert = function (certId) { - teaweb.popup("/servers/components/ssl/certPopup?certId=" + certId, { + teaweb.popup("/servers/certs/certPopup?certId=" + certId, { height: "28em", width: "48em" }) @@ -33,7 +33,7 @@ Tea.context(function () { // 修改证书 this.updateCert = function (certId) { - teaweb.popup("/servers/components/ssl/updatePopup?certId=" + certId, { + teaweb.popup("/servers/certs/updatePopup?certId=" + certId, { height: "28em", callback: function () { teaweb.success("上传成功", function () { diff --git a/web/views/@default/servers/components/ssl/selectPopup.html b/web/views/@default/servers/certs/selectPopup.html similarity index 100% rename from web/views/@default/servers/components/ssl/selectPopup.html rename to web/views/@default/servers/certs/selectPopup.html diff --git a/web/views/@default/servers/components/ssl/selectPopup.js b/web/views/@default/servers/certs/selectPopup.js similarity index 100% rename from web/views/@default/servers/components/ssl/selectPopup.js rename to web/views/@default/servers/certs/selectPopup.js diff --git a/web/views/@default/servers/components/ssl/updatePopup.html b/web/views/@default/servers/certs/updatePopup.html similarity index 100% rename from web/views/@default/servers/components/ssl/updatePopup.html rename to web/views/@default/servers/certs/updatePopup.html diff --git a/web/views/@default/servers/components/ssl/updatePopup.js b/web/views/@default/servers/certs/updatePopup.js similarity index 100% rename from web/views/@default/servers/components/ssl/updatePopup.js rename to web/views/@default/servers/certs/updatePopup.js diff --git a/web/views/@default/servers/components/ssl/uploadPopup.html b/web/views/@default/servers/certs/uploadPopup.html similarity index 100% rename from web/views/@default/servers/components/ssl/uploadPopup.html rename to web/views/@default/servers/certs/uploadPopup.html diff --git a/web/views/@default/servers/components/ssl/uploadPopup.js b/web/views/@default/servers/certs/uploadPopup.js similarity index 100% rename from web/views/@default/servers/components/ssl/uploadPopup.js rename to web/views/@default/servers/certs/uploadPopup.js diff --git a/web/views/@default/servers/components/groups/createPopup.js b/web/views/@default/servers/components/groups/createPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/components/groups/createPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/components/groups/updatePopup.js b/web/views/@default/servers/components/groups/updatePopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/components/groups/updatePopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/components/waf/createGroupPopup.js b/web/views/@default/servers/components/waf/createGroupPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/components/waf/createGroupPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/components/waf/createPopup.js b/web/views/@default/servers/components/waf/createPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/components/waf/createPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/components/waf/ipadmin/createIPPopup.js b/web/views/@default/servers/components/waf/ipadmin/createIPPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/components/waf/ipadmin/createIPPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/components/waf/ipadmin/updateIPPopup.js b/web/views/@default/servers/components/waf/ipadmin/updateIPPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/components/waf/ipadmin/updateIPPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/components/waf/updateGroupPopup.js b/web/views/@default/servers/components/waf/updateGroupPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/components/waf/updateGroupPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/headers/createDeletePopup.js b/web/views/@default/servers/server/settings/headers/createDeletePopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/server/settings/headers/createDeletePopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/headers/createSetPopup.js b/web/views/@default/servers/server/settings/headers/createSetPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/server/settings/headers/createSetPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/headers/updateSetPopup.js b/web/views/@default/servers/server/settings/headers/updateSetPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/server/settings/headers/updateSetPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/https/index.html b/web/views/@default/servers/server/settings/https/index.html index db5ec3b5..54ab2214 100644 --- a/web/views/@default/servers/server/settings/https/index.html +++ b/web/views/@default/servers/server/settings/https/index.html @@ -2,7 +2,7 @@ {$template "/left_menu"} {$var "header"} - + {$end} diff --git a/web/views/@default/servers/server/settings/origins/addPopup.js b/web/views/@default/servers/server/settings/origins/addPopup.js deleted file mode 100644 index b0f74795..00000000 --- a/web/views/@default/servers/server/settings/origins/addPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup; -}); \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/origins/updatePopup.js b/web/views/@default/servers/server/settings/origins/updatePopup.js deleted file mode 100644 index b0f74795..00000000 --- a/web/views/@default/servers/server/settings/origins/updatePopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup; -}); \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/pages/createPopup.js b/web/views/@default/servers/server/settings/pages/createPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/server/settings/pages/createPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/tls/index.html b/web/views/@default/servers/server/settings/tls/index.html index 79b2c7b0..b996f327 100644 --- a/web/views/@default/servers/server/settings/tls/index.html +++ b/web/views/@default/servers/server/settings/tls/index.html @@ -2,7 +2,7 @@ {$template "/left_menu"} {$var "header"} - + {$end} diff --git a/web/views/@default/servers/server/settings/web/createIndex.js b/web/views/@default/servers/server/settings/web/createIndex.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/server/settings/web/createIndex.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/websocket/createOrigin.js b/web/views/@default/servers/server/settings/websocket/createOrigin.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/servers/server/settings/websocket/createOrigin.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file diff --git a/web/views/@default/ui/selectProvincesPopup.js b/web/views/@default/ui/selectProvincesPopup.js deleted file mode 100644 index c8fe9515..00000000 --- a/web/views/@default/ui/selectProvincesPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifyPopup -}) \ No newline at end of file