diff --git a/internal/web/actions/default/admins/recipients/createPopup.go b/internal/web/actions/default/admins/recipients/createPopup.go deleted file mode 100644 index f9156fa3..00000000 --- a/internal/web/actions/default/admins/recipients/createPopup.go +++ /dev/null @@ -1,82 +0,0 @@ -package recipients - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/utils" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/actions" - "regexp" -) - -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 { - AdminId int64 - InstanceId int64 - User string - - TelegramToken string - - GroupIds string - Description string - - TimeFromHour string - TimeFromMinute string - TimeFromSecond string - - TimeToHour string - TimeToMinute string - TimeToSecond string - - Must *actions.Must - CSRF *actionutils.CSRF -}) { - params.Must. - Field("adminId", params.AdminId). - Gt(0, "请选择系统用户"). - Field("instanceId", params.InstanceId). - Gt(0, "请选择媒介") - - groupIds := utils.SplitNumbers(params.GroupIds) - - var digitReg = regexp.MustCompile(`^\d+$`) - - var timeFrom = "" - if digitReg.MatchString(params.TimeFromHour) && digitReg.MatchString(params.TimeFromMinute) && digitReg.MatchString(params.TimeFromSecond) { - timeFrom = params.TimeFromHour + ":" + params.TimeFromMinute + ":" + params.TimeFromSecond - } - - var timeTo = "" - if digitReg.MatchString(params.TimeToHour) && digitReg.MatchString(params.TimeToMinute) && digitReg.MatchString(params.TimeToSecond) { - timeTo = params.TimeToHour + ":" + params.TimeToMinute + ":" + params.TimeToSecond - } - - resp, err := this.RPC().MessageRecipientRPC().CreateMessageRecipient(this.AdminContext(), &pb.CreateMessageRecipientRequest{ - AdminId: params.AdminId, - MessageMediaInstanceId: params.InstanceId, - User: params.User, - MessageRecipientGroupIds: groupIds, - Description: params.Description, - TimeFrom: timeFrom, - TimeTo: timeTo, - }) - if err != nil { - this.ErrorPage(err) - return - } - - defer this.CreateLogInfo(codes.MessageRecipient_LogCreateMessageRecipient, resp.MessageRecipientId) - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/delete.go b/internal/web/actions/default/admins/recipients/delete.go deleted file mode 100644 index d4e80e85..00000000 --- a/internal/web/actions/default/admins/recipients/delete.go +++ /dev/null @@ -1,25 +0,0 @@ -package recipients - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" -) - -type DeleteAction struct { - actionutils.ParentAction -} - -func (this *DeleteAction) RunPost(params struct { - RecipientId int64 -}) { - defer this.CreateLogInfo(codes.MessageRecipient_LogDeleteMessageRecipient, params.RecipientId) - - _, err := this.RPC().MessageRecipientRPC().DeleteMessageRecipient(this.AdminContext(), &pb.DeleteMessageRecipientRequest{MessageRecipientId: params.RecipientId}) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/groups/createPopup.go b/internal/web/actions/default/admins/recipients/groups/createPopup.go deleted file mode 100644 index 4cf733f5..00000000 --- a/internal/web/actions/default/admins/recipients/groups/createPopup.go +++ /dev/null @@ -1,38 +0,0 @@ -package groups - -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 { - Name string - - Must *actions.Must - CSRF *actionutils.CSRF -}) { - params.Must. - Field("name", params.Name). - Require("请输入分组名称") - - _, err := this.RPC().MessageRecipientGroupRPC().CreateMessageRecipientGroup(this.AdminContext(), &pb.CreateMessageRecipientGroupRequest{Name: params.Name}) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/groups/delete.go b/internal/web/actions/default/admins/recipients/groups/delete.go deleted file mode 100644 index f6384f0a..00000000 --- a/internal/web/actions/default/admins/recipients/groups/delete.go +++ /dev/null @@ -1,22 +0,0 @@ -package groups - -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 { - GroupId int64 -}) { - _, err := this.RPC().MessageRecipientGroupRPC().DeleteMessageRecipientGroup(this.AdminContext(), &pb.DeleteMessageRecipientGroupRequest{MessageRecipientGroupId: params.GroupId}) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/groups/index.go b/internal/web/actions/default/admins/recipients/groups/index.go deleted file mode 100644 index e311d6b0..00000000 --- a/internal/web/actions/default/admins/recipients/groups/index.go +++ /dev/null @@ -1,34 +0,0 @@ -package groups - -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("", "", "group") -} - -func (this *IndexAction) RunGet(params struct{}) { - groupsResp, err := this.RPC().MessageRecipientGroupRPC().FindAllEnabledMessageRecipientGroups(this.AdminContext(), &pb.FindAllEnabledMessageRecipientGroupsRequest{}) - if err != nil { - this.ErrorPage(err) - return - } - groupMaps := []maps.Map{} - for _, group := range groupsResp.MessageRecipientGroups { - groupMaps = append(groupMaps, maps.Map{ - "id": group.Id, - "name": group.Name, - "isOn": group.IsOn, - }) - } - this.Data["groups"] = groupMaps - - this.Show() -} diff --git a/internal/web/actions/default/admins/recipients/groups/init.go b/internal/web/actions/default/admins/recipients/groups/init.go deleted file mode 100644 index f8b4199f..00000000 --- a/internal/web/actions/default/admins/recipients/groups/init.go +++ /dev/null @@ -1,23 +0,0 @@ -package groups - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" - "github.com/iwind/TeaGo" -) - -func init() { - TeaGo.BeforeStart(func(server *TeaGo.Server) { - server. - Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeAdmin)). - Data("teaMenu", "admins"). - Data("teaSubMenu", "recipients"). - Prefix("/admins/recipients/groups"). - Get("", new(IndexAction)). - GetPost("/createPopup", new(CreatePopupAction)). - GetPost("/updatePopup", new(UpdatePopupAction)). - Post("/delete", new(DeleteAction)). - Get("/selectPopup", new(SelectPopupAction)). - EndAll() - }) -} diff --git a/internal/web/actions/default/admins/recipients/groups/selectPopup.go b/internal/web/actions/default/admins/recipients/groups/selectPopup.go deleted file mode 100644 index de37d6d6..00000000 --- a/internal/web/actions/default/admins/recipients/groups/selectPopup.go +++ /dev/null @@ -1,39 +0,0 @@ -package groups - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/utils" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/lists" - "github.com/iwind/TeaGo/maps" -) - -type SelectPopupAction struct { - actionutils.ParentAction -} - -func (this *SelectPopupAction) RunGet(params struct { - GroupIds string -}) { - selectedGroupIds := utils.SplitNumbers(params.GroupIds) - - groupsResp, err := this.RPC().MessageRecipientGroupRPC().FindAllEnabledMessageRecipientGroups(this.AdminContext(), &pb.FindAllEnabledMessageRecipientGroupsRequest{}) - if err != nil { - this.ErrorPage(err) - return - } - groupMaps := []maps.Map{} - for _, group := range groupsResp.MessageRecipientGroups { - if lists.ContainsInt64(selectedGroupIds, group.Id) { - continue - } - groupMaps = append(groupMaps, maps.Map{ - "id": group.Id, - "name": group.Name, - "isOn": group.IsOn, - }) - } - this.Data["groups"] = groupMaps - - this.Show() -} diff --git a/internal/web/actions/default/admins/recipients/groups/updatePopup.go b/internal/web/actions/default/admins/recipients/groups/updatePopup.go deleted file mode 100644 index 04dbad62..00000000 --- a/internal/web/actions/default/admins/recipients/groups/updatePopup.go +++ /dev/null @@ -1,64 +0,0 @@ -package groups - -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 { - GroupId int64 -}) { - groupResp, err := this.RPC().MessageRecipientGroupRPC().FindEnabledMessageRecipientGroup(this.AdminContext(), &pb.FindEnabledMessageRecipientGroupRequest{MessageRecipientGroupId: params.GroupId}) - if err != nil { - this.ErrorPage(err) - return - } - group := groupResp.MessageRecipientGroup - if group == nil { - this.NotFound("messageRecipientGroup", params.GroupId) - return - } - - this.Data["group"] = maps.Map{ - "id": group.Id, - "name": group.Name, - "isOn": group.IsOn, - } - - this.Show() -} - -func (this *UpdatePopupAction) RunPost(params struct { - GroupId int64 - Name string - IsOn bool - - Must *actions.Must - CSRF *actionutils.CSRF -}) { - params.Must. - Field("name", params.Name). - Require("请输入分组名称") - - _, err := this.RPC().MessageRecipientGroupRPC().UpdateMessageRecipientGroup(this.AdminContext(), &pb.UpdateMessageRecipientGroupRequest{ - MessageRecipientGroupId: params.GroupId, - Name: params.Name, - IsOn: params.IsOn, - }) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/index.go b/internal/web/actions/default/admins/recipients/index.go deleted file mode 100644 index 39c6b106..00000000 --- a/internal/web/actions/default/admins/recipients/index.go +++ /dev/null @@ -1,74 +0,0 @@ -package recipients - -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("", "", "recipient") -} - -func (this *IndexAction) RunGet(params struct { -}) { - // TODO 增加系统用户、媒介类型等条件搜索 - countResp, err := this.RPC().MessageRecipientRPC().CountAllEnabledMessageRecipients(this.AdminContext(), &pb.CountAllEnabledMessageRecipientsRequest{ - AdminId: 0, - MediaType: "", - MessageRecipientGroupId: 0, - Keyword: "", - }) - if err != nil { - this.ErrorPage(err) - return - } - count := countResp.Count - page := this.NewPage(count) - this.Data["page"] = page.AsHTML() - - recipientsResp, err := this.RPC().MessageRecipientRPC().ListEnabledMessageRecipients(this.AdminContext(), &pb.ListEnabledMessageRecipientsRequest{ - AdminId: 0, - MediaType: "", - MessageRecipientGroupId: 0, - Keyword: "", - Offset: page.Offset, - Size: page.Size, - }) - if err != nil { - this.ErrorPage(err) - return - } - - recipientMaps := []maps.Map{} - for _, recipient := range recipientsResp.MessageRecipients { - if recipient.Admin == nil { - continue - } - if recipient.MessageMediaInstance == nil { - continue - } - recipientMaps = append(recipientMaps, maps.Map{ - "id": recipient.Id, - "admin": maps.Map{ - "id": recipient.Admin.Id, - "fullname": recipient.Admin.Fullname, - "username": recipient.Admin.Username, - }, - "groups": recipient.MessageRecipientGroups, - "isOn": recipient.IsOn, - "instance": maps.Map{ - "name": recipient.MessageMediaInstance.Name, - }, - "user": recipient.User, - "description": recipient.Description, - }) - } - this.Data["recipients"] = recipientMaps - - this.Show() -} diff --git a/internal/web/actions/default/admins/recipients/init.go b/internal/web/actions/default/admins/recipients/init.go deleted file mode 100644 index 268a9ae1..00000000 --- a/internal/web/actions/default/admins/recipients/init.go +++ /dev/null @@ -1,25 +0,0 @@ -package recipients - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" - "github.com/iwind/TeaGo" -) - -func init() { - TeaGo.BeforeStart(func(server *TeaGo.Server) { - server. - Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeAdmin)). - Data("teaMenu", "admins"). - Data("teaSubMenu", "recipients"). - Prefix("/admins/recipients"). - Get("", new(IndexAction)). - GetPost("/createPopup", new(CreatePopupAction)). - GetPost("/update", new(UpdateAction)). - Post("/delete", new(DeleteAction)). - Post("/mediaOptions", new(MediaOptionsAction)). - Get("/recipient", new(RecipientAction)). - GetPost("/test", new(TestAction)). - EndAll() - }) -} diff --git a/internal/web/actions/default/admins/recipients/instances/createPopup.go b/internal/web/actions/default/admins/recipients/instances/createPopup.go deleted file mode 100644 index f7b7caa6..00000000 --- a/internal/web/actions/default/admins/recipients/instances/createPopup.go +++ /dev/null @@ -1,267 +0,0 @@ -package instances - -import ( - "encoding/json" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/monitorconfigs" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/actions" - "github.com/iwind/TeaGo/maps" -) - -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 { - Name string - MediaType string - - EmailSmtp string - EmailUsername string - EmailPassword string - EmailFrom string - - WebHookURL string - WebHookMethod string - WebHookHeaderNames []string - WebHookHeaderValues []string - WebHookContentType string - WebHookParamNames []string - WebHookParamValues []string - WebHookBody string - - ScriptType string - ScriptPath string - ScriptLang string - ScriptCode string - ScriptCwd string - ScriptEnvNames []string - ScriptEnvValues []string - - DingTalkWebHookURL string - - QyWeixinCorporateId string - QyWeixinAgentId string - QyWeixinAppSecret string - QyWeixinTextFormat string - - QyWeixinRobotWebHookURL string - QyWeixinRobotTextFormat string - - AliyunSmsSign string - AliyunSmsTemplateCode string - AliyunSmsTemplateVarNames []string - AliyunSmsTemplateVarValues []string - AliyunSmsAccessKeyId string - AliyunSmsAccessKeySecret string - - TelegramToken string - - RateMinutes int32 - RateCount int32 - - HashLife int32 - - Description string - - Must *actions.Must - CSRF *actionutils.CSRF -}) { - params.Must. - Field("name", params.Name). - Require("请输入媒介名称"). - Field("mediaType", params.MediaType). - Require("请选择媒介类型") - - options := maps.Map{} - - switch params.MediaType { - case "email": - params.Must. - Field("emailSmtp", params.EmailSmtp). - Require("请输入SMTP地址"). - Field("emailUsername", params.EmailUsername). - Require("请输入邮箱账号"). - Field("emailPassword", params.EmailPassword). - Require("请输入密码或授权码") - - options["smtp"] = params.EmailSmtp - options["username"] = params.EmailUsername - options["password"] = params.EmailPassword - options["from"] = params.EmailFrom - case "webHook": - params.Must. - Field("webHookURL", params.WebHookURL). - Require("请输入URL地址"). - Match("(?i)^(http|https)://", "URL地址必须以http或https开头"). - Field("webHookMethod", params.WebHookMethod). - Require("请选择请求方法") - - options["url"] = params.WebHookURL - options["method"] = params.WebHookMethod - options["contentType"] = params.WebHookContentType - - headers := []maps.Map{} - if len(params.WebHookHeaderNames) > 0 { - for index, name := range params.WebHookHeaderNames { - if index < len(params.WebHookHeaderValues) { - headers = append(headers, maps.Map{ - "name": name, - "value": params.WebHookHeaderValues[index], - }) - } - } - } - options["headers"] = headers - - if params.WebHookContentType == "params" { - webHookParams := []maps.Map{} - for index, name := range params.WebHookParamNames { - if index < len(params.WebHookParamValues) { - webHookParams = append(webHookParams, maps.Map{ - "name": name, - "value": params.WebHookParamValues[index], - }) - } - } - options["params"] = webHookParams - } else if params.WebHookContentType == "body" { - options["body"] = params.WebHookBody - } - case "script": - if params.ScriptType == "path" { - params.Must. - Field("scriptPath", params.ScriptPath). - Require("请输入脚本路径") - } else if params.ScriptType == "code" { - params.Must. - Field("scriptCode", params.ScriptCode). - Require("请输入脚本代码") - } else { - params.Must. - Field("scriptPath", params.ScriptPath). - Require("请输入脚本路径") - } - - options["scriptType"] = params.ScriptType - options["path"] = params.ScriptPath - options["scriptLang"] = params.ScriptLang - options["script"] = params.ScriptCode - options["cwd"] = params.ScriptCwd - - env := []maps.Map{} - for index, envName := range params.ScriptEnvNames { - if index < len(params.ScriptEnvValues) { - env = append(env, maps.Map{ - "name": envName, - "value": params.ScriptEnvValues[index], - }) - } - } - options["env"] = env - case "dingTalk": - params.Must. - Field("dingTalkWebHookURL", params.DingTalkWebHookURL). - Require("请输入Hook地址"). - Match("^https:", "Hook地址必须以https://开头") - - options["webHookURL"] = params.DingTalkWebHookURL - case "qyWeixin": - params.Must. - Field("qyWeixinCorporateId", params.QyWeixinCorporateId). - Require("请输入企业ID"). - Field("qyWeixinAgentId", params.QyWeixinAgentId). - Require("请输入应用AgentId"). - Field("qyWeixinSecret", params.QyWeixinAppSecret). - Require("请输入应用Secret") - - options["corporateId"] = params.QyWeixinCorporateId - options["agentId"] = params.QyWeixinAgentId - options["appSecret"] = params.QyWeixinAppSecret - options["textFormat"] = params.QyWeixinTextFormat - case "qyWeixinRobot": - params.Must. - Field("qyWeixinRobotWebHookURL", params.QyWeixinRobotWebHookURL). - Require("请输入WebHook地址"). - Match("^https:", "WebHook地址必须以https://开头") - - options["webHookURL"] = params.QyWeixinRobotWebHookURL - options["textFormat"] = params.QyWeixinRobotTextFormat - case "aliyunSms": - params.Must. - Field("aliyunSmsSign", params.AliyunSmsSign). - Require("请输入签名名称"). - Field("aliyunSmsTemplateCode", params.AliyunSmsTemplateCode). - Require("请输入模板CODE"). - Field("aliyunSmsAccessKeyId", params.AliyunSmsAccessKeyId). - Require("请输入AccessKey ID"). - Field("aliyunSmsAccessKeySecret", params.AliyunSmsAccessKeySecret). - Require("请输入AccessKey Secret") - - options["sign"] = params.AliyunSmsSign - options["templateCode"] = params.AliyunSmsTemplateCode - options["accessKeyId"] = params.AliyunSmsAccessKeyId - options["accessKeySecret"] = params.AliyunSmsAccessKeySecret - - variables := []maps.Map{} - for index, name := range params.AliyunSmsTemplateVarNames { - if index < len(params.AliyunSmsTemplateVarValues) { - variables = append(variables, maps.Map{ - "name": name, - "value": params.AliyunSmsTemplateVarValues[index], - }) - } - } - options["variables"] = variables - case "telegram": - params.Must. - Field("telegramToken", params.TelegramToken). - Require("请输入机器人Token") - options["token"] = params.TelegramToken - default: - this.Fail("错误的媒介类型") - } - - optionsJSON, err := json.Marshal(options) - if err != nil { - this.ErrorPage(err) - return - } - - var rateConfig = &monitorconfigs.RateConfig{ - Minutes: params.RateMinutes, - Count: params.RateCount, - } - rateJSON, err := json.Marshal(rateConfig) - if err != nil { - this.ErrorPage(err) - return - } - - resp, err := this.RPC().MessageMediaInstanceRPC().CreateMessageMediaInstance(this.AdminContext(), &pb.CreateMessageMediaInstanceRequest{ - Name: params.Name, - MediaType: params.MediaType, - ParamsJSON: optionsJSON, - Description: params.Description, - RateJSON: rateJSON, - HashLife: params.HashLife, - }) - if err != nil { - this.ErrorPage(err) - return - } - - defer this.CreateLogInfo(codes.MessageMediaInstance_LogCreateMessageMediaInstance, resp.MessageMediaInstanceId) - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/instances/delete.go b/internal/web/actions/default/admins/recipients/instances/delete.go deleted file mode 100644 index 4a50b73d..00000000 --- a/internal/web/actions/default/admins/recipients/instances/delete.go +++ /dev/null @@ -1,25 +0,0 @@ -package instances - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" -) - -type DeleteAction struct { - actionutils.ParentAction -} - -func (this *DeleteAction) RunPost(params struct { - InstanceId int64 -}) { - defer this.CreateLogInfo(codes.MessageMediaInstance_LogDeleteMessageMediaInstance, params.InstanceId) - - _, err := this.RPC().MessageMediaInstanceRPC().DeleteMessageMediaInstance(this.AdminContext(), &pb.DeleteMessageMediaInstanceRequest{MessageMediaInstanceId: params.InstanceId}) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/instances/index.go b/internal/web/actions/default/admins/recipients/instances/index.go deleted file mode 100644 index 604f9632..00000000 --- a/internal/web/actions/default/admins/recipients/instances/index.go +++ /dev/null @@ -1,61 +0,0 @@ -package instances - -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("", "", "instance") -} - -func (this *IndexAction) RunGet(params struct { -}) { - // TODO 增加系统用户、媒介类型等条件搜索 - countResp, err := this.RPC().MessageMediaInstanceRPC().CountAllEnabledMessageMediaInstances(this.AdminContext(), &pb.CountAllEnabledMessageMediaInstancesRequest{ - MediaType: "", - Keyword: "", - }) - if err != nil { - this.ErrorPage(err) - return - } - count := countResp.Count - page := this.NewPage(count) - this.Data["page"] = page.AsHTML() - - instancesResp, err := this.RPC().MessageMediaInstanceRPC().ListEnabledMessageMediaInstances(this.AdminContext(), &pb.ListEnabledMessageMediaInstancesRequest{ - MediaType: "", - Keyword: "", - Offset: page.Offset, - Size: page.Size, - }) - if err != nil { - this.ErrorPage(err) - return - } - - instanceMaps := []maps.Map{} - for _, instance := range instancesResp.MessageMediaInstances { - if instance.MessageMedia == nil { - continue - } - instanceMaps = append(instanceMaps, maps.Map{ - "id": instance.Id, - "name": instance.Name, - "isOn": instance.IsOn, - "media": maps.Map{ - "name": instance.MessageMedia.Name, - }, - "description": instance.Description, - }) - } - this.Data["instances"] = instanceMaps - - this.Show() -} diff --git a/internal/web/actions/default/admins/recipients/instances/init.go b/internal/web/actions/default/admins/recipients/instances/init.go deleted file mode 100644 index 88c0c6fe..00000000 --- a/internal/web/actions/default/admins/recipients/instances/init.go +++ /dev/null @@ -1,25 +0,0 @@ -package instances - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" - "github.com/iwind/TeaGo" -) - -func init() { - TeaGo.BeforeStart(func(server *TeaGo.Server) { - server. - Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeAdmin)). - Data("teaMenu", "admins"). - Data("teaSubMenu", "instances"). - Prefix("/admins/recipients/instances"). - Get("", new(IndexAction)). - GetPost("/createPopup", new(CreatePopupAction)). - GetPost("/update", new(UpdateAction)). - Post("/delete", new(DeleteAction)). - Get("/instance", new(InstanceAction)). - GetPost("/test", new(TestAction)). - Post("/options", new(OptionsAction)). - EndAll() - }) -} diff --git a/internal/web/actions/default/admins/recipients/instances/instance.go b/internal/web/actions/default/admins/recipients/instances/instance.go deleted file mode 100644 index 4a7c0061..00000000 --- a/internal/web/actions/default/admins/recipients/instances/instance.go +++ /dev/null @@ -1,67 +0,0 @@ -package instances - -import ( - "encoding/json" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/monitorconfigs" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" -) - -type InstanceAction struct { - actionutils.ParentAction -} - -func (this *InstanceAction) Init() { - this.Nav("", "", "instance") -} - -func (this *InstanceAction) RunGet(params struct { - InstanceId int64 -}) { - instanceResp, err := this.RPC().MessageMediaInstanceRPC().FindEnabledMessageMediaInstance(this.AdminContext(), &pb.FindEnabledMessageMediaInstanceRequest{MessageMediaInstanceId: params.InstanceId}) - if err != nil { - this.ErrorPage(err) - return - } - instance := instanceResp.MessageMediaInstance - if instance == nil || instance.MessageMedia == nil { - this.NotFound("messageMediaInstance", params.InstanceId) - return - } - - mediaParams := maps.Map{} - if len(instance.ParamsJSON) > 0 { - err = json.Unmarshal(instance.ParamsJSON, &mediaParams) - if err != nil { - this.ErrorPage(err) - return - } - } - - // 频率 - var rateConfig = &monitorconfigs.RateConfig{} - if len(instance.RateJSON) > 0 { - err = json.Unmarshal(instance.RateJSON, rateConfig) - if err != nil { - this.ErrorPage(err) - return - } - } - - this.Data["instance"] = maps.Map{ - "id": instance.Id, - "name": instance.Name, - "isOn": instance.IsOn, - "media": maps.Map{ - "type": instance.MessageMedia.Type, - "name": instance.MessageMedia.Name, - }, - "description": instance.Description, - "params": mediaParams, - "rate": rateConfig, - "hashLife": instance.HashLife, - } - - this.Show() -} diff --git a/internal/web/actions/default/admins/recipients/instances/options.go b/internal/web/actions/default/admins/recipients/instances/options.go deleted file mode 100644 index 0031a9c3..00000000 --- a/internal/web/actions/default/admins/recipients/instances/options.go +++ /dev/null @@ -1,39 +0,0 @@ -package instances - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" -) - -// 媒介类型选项 -type OptionsAction struct { - actionutils.ParentAction -} - -func (this *OptionsAction) RunPost(params struct{}) { - resp, err := this.RPC().MessageMediaInstanceRPC().ListEnabledMessageMediaInstances(this.AdminContext(), &pb.ListEnabledMessageMediaInstancesRequest{ - Offset: 0, - Size: 1000, - }) - if err != nil { - this.ErrorPage(err) - return - } - instanceMaps := []maps.Map{} - for _, instance := range resp.MessageMediaInstances { - instanceMaps = append(instanceMaps, maps.Map{ - "id": instance.Id, - "name": instance.Name, - "description": instance.Description, - "media": maps.Map{ - "type": instance.MessageMedia.Type, - "name": instance.MessageMedia.Name, - "userDescription": instance.MessageMedia.UserDescription, - }, - }) - } - this.Data["instances"] = instanceMaps - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/instances/test.go b/internal/web/actions/default/admins/recipients/instances/test.go deleted file mode 100644 index 892362bb..00000000 --- a/internal/web/actions/default/admins/recipients/instances/test.go +++ /dev/null @@ -1,88 +0,0 @@ -package instances - -import ( - "encoding/json" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/actions" - "github.com/iwind/TeaGo/maps" -) - -type TestAction struct { - actionutils.ParentAction -} - -func (this *TestAction) Init() { - this.Nav("", "", "test") -} - -func (this *TestAction) RunGet(params struct { - InstanceId int64 -}) { - instanceResp, err := this.RPC().MessageMediaInstanceRPC().FindEnabledMessageMediaInstance(this.AdminContext(), &pb.FindEnabledMessageMediaInstanceRequest{MessageMediaInstanceId: params.InstanceId}) - if err != nil { - this.ErrorPage(err) - return - } - instance := instanceResp.MessageMediaInstance - if instance == nil || instance.MessageMedia == nil { - this.NotFound("messageMediaInstance", params.InstanceId) - return - } - - mediaParams := maps.Map{} - if len(instance.ParamsJSON) > 0 { - err = json.Unmarshal(instance.ParamsJSON, &mediaParams) - if err != nil { - this.ErrorPage(err) - return - } - } - - this.Data["instance"] = maps.Map{ - "id": instance.Id, - "isOn": instance.IsOn, - "media": maps.Map{ - "type": instance.MessageMedia.Type, - "name": instance.MessageMedia.Name, - "userDescription": instance.MessageMedia.UserDescription, - }, - "description": instance.Description, - "params": mediaParams, - } - - this.Show() -} - -func (this *TestAction) RunPost(params struct { - InstanceId int64 - Subject string - Body string - User string - - Must *actions.Must - CSRF *actionutils.CSRF -}) { - params.Must. - Field("instanceId", params.InstanceId). - Gt(0, "请选择正确的媒介") - - resp, err := this.RPC().MessageTaskRPC().CreateMessageTask(this.AdminContext(), &pb.CreateMessageTaskRequest{ - RecipientId: 0, - InstanceId: params.InstanceId, - User: params.User, - Subject: params.Subject, - Body: params.Body, - IsPrimary: true, - }) - if err != nil { - this.ErrorPage(err) - return - } - this.Data["taskId"] = resp.MessageTaskId - - defer this.CreateLogInfo(codes.MessageTask_LogCreateTestingMessageTask, resp.MessageTaskId) - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/instances/update.go b/internal/web/actions/default/admins/recipients/instances/update.go deleted file mode 100644 index 8e0429b7..00000000 --- a/internal/web/actions/default/admins/recipients/instances/update.go +++ /dev/null @@ -1,317 +0,0 @@ -package instances - -import ( - "encoding/json" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/monitorconfigs" - "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 { - InstanceId int64 -}) { - instanceResp, err := this.RPC().MessageMediaInstanceRPC().FindEnabledMessageMediaInstance(this.AdminContext(), &pb.FindEnabledMessageMediaInstanceRequest{MessageMediaInstanceId: params.InstanceId}) - if err != nil { - this.ErrorPage(err) - return - } - instance := instanceResp.MessageMediaInstance - if instance == nil || instance.MessageMedia == nil { - this.NotFound("messageMediaInstance", params.InstanceId) - return - } - - mediaParams := maps.Map{} - if len(instance.ParamsJSON) > 0 { - err = json.Unmarshal(instance.ParamsJSON, &mediaParams) - if err != nil { - this.ErrorPage(err) - return - } - } - - var rateConfig = &monitorconfigs.RateConfig{} - if len(instance.RateJSON) > 0 { - err = json.Unmarshal(instance.RateJSON, rateConfig) - if err != nil { - this.ErrorPage(err) - return - } - } - - this.Data["instance"] = maps.Map{ - "id": instance.Id, - "name": instance.Name, - "isOn": instance.IsOn, - "media": maps.Map{ - "type": instance.MessageMedia.Type, - "name": instance.MessageMedia.Name, - }, - "description": instance.Description, - "params": mediaParams, - "rate": rateConfig, - "hashLife": instance.HashLife, - } - - this.Show() -} - -func (this *UpdateAction) RunPost(params struct { - InstanceId int64 - Name string - MediaType string - - EmailSmtp string - EmailUsername string - EmailPassword string - EmailFrom string - - WebHookURL string - WebHookMethod string - WebHookHeaderNames []string - WebHookHeaderValues []string - WebHookContentType string - WebHookParamNames []string - WebHookParamValues []string - WebHookBody string - - ScriptType string - ScriptPath string - ScriptLang string - ScriptCode string - ScriptCwd string - ScriptEnvNames []string - ScriptEnvValues []string - - DingTalkWebHookURL string - - QyWeixinCorporateId string - QyWeixinAgentId string - QyWeixinAppSecret string - QyWeixinTextFormat string - - QyWeixinRobotWebHookURL string - QyWeixinRobotTextFormat string - - AliyunSmsSign string - AliyunSmsTemplateCode string - AliyunSmsTemplateVarNames []string - AliyunSmsTemplateVarValues []string - AliyunSmsAccessKeyId string - AliyunSmsAccessKeySecret string - - TelegramToken string - - GroupIds string - Description string - IsOn bool - - RateMinutes int32 - RateCount int32 - - HashLife int32 - - Must *actions.Must - CSRF *actionutils.CSRF -}) { - defer this.CreateLogInfo(codes.MessageMediaInstance_LogUpdateMessageMediaInstance, params.InstanceId) - - params.Must. - Field("name", params.Name). - Require("请输入媒介名称"). - Field("mediaType", params.MediaType). - Require("请选择媒介类型") - - options := maps.Map{} - - switch params.MediaType { - case "email": - params.Must. - Field("emailSmtp", params.EmailSmtp). - Require("请输入SMTP地址"). - Field("emailUsername", params.EmailUsername). - Require("请输入邮箱账号"). - Field("emailPassword", params.EmailPassword). - Require("请输入密码或授权码") - - options["smtp"] = params.EmailSmtp - options["username"] = params.EmailUsername - options["password"] = params.EmailPassword - options["from"] = params.EmailFrom - case "webHook": - params.Must. - Field("webHookURL", params.WebHookURL). - Require("请输入URL地址"). - Match("(?i)^(http|https)://", "URL地址必须以http或https开头"). - Field("webHookMethod", params.WebHookMethod). - Require("请选择请求方法") - - options["url"] = params.WebHookURL - options["method"] = params.WebHookMethod - options["contentType"] = params.WebHookContentType - - headers := []maps.Map{} - if len(params.WebHookHeaderNames) > 0 { - for index, name := range params.WebHookHeaderNames { - if index < len(params.WebHookHeaderValues) { - headers = append(headers, maps.Map{ - "name": name, - "value": params.WebHookHeaderValues[index], - }) - } - } - } - options["headers"] = headers - - if params.WebHookContentType == "params" { - webHookParams := []maps.Map{} - for index, name := range params.WebHookParamNames { - if index < len(params.WebHookParamValues) { - webHookParams = append(webHookParams, maps.Map{ - "name": name, - "value": params.WebHookParamValues[index], - }) - } - } - options["params"] = webHookParams - } else if params.WebHookContentType == "body" { - options["body"] = params.WebHookBody - } - case "script": - if params.ScriptType == "path" { - params.Must. - Field("scriptPath", params.ScriptPath). - Require("请输入脚本路径") - } else if params.ScriptType == "code" { - params.Must. - Field("scriptCode", params.ScriptCode). - Require("请输入脚本代码") - } else { - params.Must. - Field("scriptPath", params.ScriptPath). - Require("请输入脚本路径") - } - - options["scriptType"] = params.ScriptType - options["path"] = params.ScriptPath - options["scriptLang"] = params.ScriptLang - options["script"] = params.ScriptCode - options["cwd"] = params.ScriptCwd - - env := []maps.Map{} - for index, envName := range params.ScriptEnvNames { - if index < len(params.ScriptEnvValues) { - env = append(env, maps.Map{ - "name": envName, - "value": params.ScriptEnvValues[index], - }) - } - } - options["env"] = env - case "dingTalk": - params.Must. - Field("dingTalkWebHookURL", params.DingTalkWebHookURL). - Require("请输入Hook地址"). - Match("^https:", "Hook地址必须以https://开头") - - options["webHookURL"] = params.DingTalkWebHookURL - case "qyWeixin": - params.Must. - Field("qyWeixinCorporateId", params.QyWeixinCorporateId). - Require("请输入企业ID"). - Field("qyWeixinAgentId", params.QyWeixinAgentId). - Require("请输入应用AgentId"). - Field("qyWeixinSecret", params.QyWeixinAppSecret). - Require("请输入应用Secret") - - options["corporateId"] = params.QyWeixinCorporateId - options["agentId"] = params.QyWeixinAgentId - options["appSecret"] = params.QyWeixinAppSecret - options["textFormat"] = params.QyWeixinTextFormat - case "qyWeixinRobot": - params.Must. - Field("qyWeixinRobotWebHookURL", params.QyWeixinRobotWebHookURL). - Require("请输入WebHook地址"). - Match("^https:", "WebHook地址必须以https://开头") - - options["webHookURL"] = params.QyWeixinRobotWebHookURL - options["textFormat"] = params.QyWeixinRobotTextFormat - case "aliyunSms": - params.Must. - Field("aliyunSmsSign", params.AliyunSmsSign). - Require("请输入签名名称"). - Field("aliyunSmsTemplateCode", params.AliyunSmsTemplateCode). - Require("请输入模板CODE"). - Field("aliyunSmsAccessKeyId", params.AliyunSmsAccessKeyId). - Require("请输入AccessKey ID"). - Field("aliyunSmsAccessKeySecret", params.AliyunSmsAccessKeySecret). - Require("请输入AccessKey Secret") - - options["sign"] = params.AliyunSmsSign - options["templateCode"] = params.AliyunSmsTemplateCode - options["accessKeyId"] = params.AliyunSmsAccessKeyId - options["accessKeySecret"] = params.AliyunSmsAccessKeySecret - - variables := []maps.Map{} - for index, name := range params.AliyunSmsTemplateVarNames { - if index < len(params.AliyunSmsTemplateVarValues) { - variables = append(variables, maps.Map{ - "name": name, - "value": params.AliyunSmsTemplateVarValues[index], - }) - } - } - options["variables"] = variables - case "telegram": - params.Must. - Field("telegramToken", params.TelegramToken). - Require("请输入机器人Token") - options["token"] = params.TelegramToken - default: - this.Fail("错误的媒介类型") - } - - optionsJSON, err := json.Marshal(options) - if err != nil { - this.ErrorPage(err) - return - } - - var rateConfig = &monitorconfigs.RateConfig{ - Minutes: params.RateMinutes, - Count: params.RateCount, - } - rateJSON, err := json.Marshal(rateConfig) - if err != nil { - this.ErrorPage(err) - return - } - - _, err = this.RPC().MessageMediaInstanceRPC().UpdateMessageMediaInstance(this.AdminContext(), &pb.UpdateMessageMediaInstanceRequest{ - MessageMediaInstanceId: params.InstanceId, - Name: params.Name, - MediaType: params.MediaType, - ParamsJSON: optionsJSON, - Description: params.Description, - RateJSON: rateJSON, - HashLife: params.HashLife, - IsOn: params.IsOn, - }) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/logs/index.go b/internal/web/actions/default/admins/recipients/logs/index.go deleted file mode 100644 index 67bf04c2..00000000 --- a/internal/web/actions/default/admins/recipients/logs/index.go +++ /dev/null @@ -1,61 +0,0 @@ -package logs - -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("", "", "log") -} - -func (this *IndexAction) RunGet(params struct{}) { - countResp, err := this.RPC().MessageTaskLogRPC().CountMessageTaskLogs(this.AdminContext(), &pb.CountMessageTaskLogsRequest{}) - if err != nil { - this.ErrorPage(err) - return - } - page := this.NewPage(countResp.Count) - this.Data["page"] = page.AsHTML() - - logsResp, err := this.RPC().MessageTaskLogRPC().ListMessageTaskLogs(this.AdminContext(), &pb.ListMessageTaskLogsRequest{ - Offset: page.Offset, - Size: page.Size, - }) - if err != nil { - this.ErrorPage(err) - return - } - - logMaps := []maps.Map{} - for _, log := range logsResp.MessageTaskLogs { - if log.MessageTask.MessageRecipient != nil { - log.MessageTask.User = log.MessageTask.MessageRecipient.User - } - logMaps = append(logMaps, maps.Map{ - "task": maps.Map{ - "id": log.MessageTask.Id, - "user": log.MessageTask.User, - "subject": log.MessageTask.Subject, - "body": log.MessageTask.Body, - "instance": maps.Map{ - "id": log.MessageTask.MessageMediaInstance.Id, - "name": log.MessageTask.MessageMediaInstance.Name, - }, - }, - "isOk": log.IsOk, - "error": log.Error, - "response": log.Response, - "createdTime": timeutil.FormatTime("Y-m-d H:i:s", log.CreatedAt), - }) - } - this.Data["logs"] = logMaps - - this.Show() -} diff --git a/internal/web/actions/default/admins/recipients/logs/init.go b/internal/web/actions/default/admins/recipients/logs/init.go deleted file mode 100644 index 4646c24d..00000000 --- a/internal/web/actions/default/admins/recipients/logs/init.go +++ /dev/null @@ -1,19 +0,0 @@ -package logs - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" - "github.com/iwind/TeaGo" -) - -func init() { - TeaGo.BeforeStart(func(server *TeaGo.Server) { - server. - Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeAdmin)). - Data("teaMenu", "admins"). - Data("teaSubMenu", "recipients"). - Prefix("/admins/recipients/logs"). - Get("", new(IndexAction)). - EndAll() - }) -} diff --git a/internal/web/actions/default/admins/recipients/mediaOptions.go b/internal/web/actions/default/admins/recipients/mediaOptions.go deleted file mode 100644 index e3cad461..00000000 --- a/internal/web/actions/default/admins/recipients/mediaOptions.go +++ /dev/null @@ -1,32 +0,0 @@ -package recipients - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" -) - -// 媒介类型选项 -type MediaOptionsAction struct { - actionutils.ParentAction -} - -func (this *MediaOptionsAction) RunPost(params struct{}) { - resp, err := this.RPC().MessageMediaRPC().FindAllMessageMedias(this.AdminContext(), &pb.FindAllMessageMediasRequest{}) - if err != nil { - this.ErrorPage(err) - return - } - mediaMaps := []maps.Map{} - for _, media := range resp.MessageMedias { - mediaMaps = append(mediaMaps, maps.Map{ - "id": media.Id, - "type": media.Type, - "name": media.Name, - "description": media.Description, - }) - } - this.Data["medias"] = mediaMaps - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/recipient.go b/internal/web/actions/default/admins/recipients/recipient.go deleted file mode 100644 index 0ef64cd4..00000000 --- a/internal/web/actions/default/admins/recipients/recipient.go +++ /dev/null @@ -1,52 +0,0 @@ -package recipients - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" -) - -type RecipientAction struct { - actionutils.ParentAction -} - -func (this *RecipientAction) Init() { - this.Nav("", "", "recipient") -} - -func (this *RecipientAction) RunGet(params struct { - RecipientId int64 -}) { - recipientResp, err := this.RPC().MessageRecipientRPC().FindEnabledMessageRecipient(this.AdminContext(), &pb.FindEnabledMessageRecipientRequest{MessageRecipientId: params.RecipientId}) - if err != nil { - this.ErrorPage(err) - return - } - recipient := recipientResp.MessageRecipient - if recipient == nil || recipient.Admin == nil || recipient.MessageMediaInstance == nil { - this.NotFound("messageRecipient", params.RecipientId) - return - } - - this.Data["recipient"] = maps.Map{ - "id": recipient.Id, - "admin": maps.Map{ - "id": recipient.Admin.Id, - "fullname": recipient.Admin.Fullname, - "username": recipient.Admin.Username, - }, - "groups": recipient.MessageRecipientGroups, - "isOn": recipient.IsOn, - "instance": maps.Map{ - "id": recipient.MessageMediaInstance.Id, - "name": recipient.MessageMediaInstance.Name, - "description": recipient.MessageMediaInstance.Description, - }, - "user": recipient.User, - "description": recipient.Description, - "timeFrom": recipient.TimeFrom, - "timeTo": recipient.TimeTo, - } - - this.Show() -} diff --git a/internal/web/actions/default/admins/recipients/tasks/delete.go b/internal/web/actions/default/admins/recipients/tasks/delete.go deleted file mode 100644 index bfc85513..00000000 --- a/internal/web/actions/default/admins/recipients/tasks/delete.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. - -package tasks - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" -) - -type DeleteAction struct { - actionutils.ParentAction -} - -func (this *DeleteAction) RunPost(params struct { - TaskId int64 -}) { - defer this.CreateLogInfo(codes.MessageTask_LogDeleteMessageTask, params.TaskId) - - _, err := this.RPC().MessageTaskRPC().DeleteMessageTask(this.AdminContext(), &pb.DeleteMessageTaskRequest{MessageTaskId: params.TaskId}) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/tasks/index.go b/internal/web/actions/default/admins/recipients/tasks/index.go deleted file mode 100644 index 6038a3c0..00000000 --- a/internal/web/actions/default/admins/recipients/tasks/index.go +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. - -package tasks - -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("", "", "task") -} - -func (this *IndexAction) RunGet(params struct { - Status int32 -}) { - this.Data["status"] = params.Status - if params.Status > 3 { - params.Status = 0 - } - - countWaitingResp, err := this.RPC().MessageTaskRPC().CountMessageTasksWithStatus(this.AdminContext(), &pb.CountMessageTasksWithStatusRequest{Status: pb.CountMessageTasksWithStatusRequest_MessageTaskStatusNone}) - if err != nil { - this.ErrorPage(err) - return - } - var countWaiting = countWaitingResp.Count - this.Data["countWaiting"] = countWaiting - - countFailedResp, err := this.RPC().MessageTaskRPC().CountMessageTasksWithStatus(this.AdminContext(), &pb.CountMessageTasksWithStatusRequest{Status: pb.CountMessageTasksWithStatusRequest_MessageTaskStatusFailed}) - if err != nil { - this.ErrorPage(err) - return - } - var countFailed = countFailedResp.Count - this.Data["countFailed"] = countFailed - - // 列表 - var total = int64(0) - switch params.Status { - case 0: - total = countWaiting - case 3: - total = countFailed - } - page := this.NewPage(total) - this.Data["page"] = page.AsHTML() - - var taskMaps = []maps.Map{} - tasksResp, err := this.RPC().MessageTaskRPC().ListMessageTasksWithStatus(this.AdminContext(), &pb.ListMessageTasksWithStatusRequest{ - Status: pb.ListMessageTasksWithStatusRequest_Status(params.Status), - Offset: page.Offset, - Size: page.Size, - }) - if err != nil { - this.ErrorPage(err) - return - } - for _, task := range tasksResp.MessageTasks { - var resultMap = maps.Map{} - var result = task.Result - if result != nil { - resultMap = maps.Map{ - "isOk": result.IsOk, - "error": result.Error, - "response": result.Response, - } - } - - //var recipients = []string{} - var user = "" - var instanceMap maps.Map - if task.MessageRecipient != nil { - user = task.MessageRecipient.User - if task.MessageRecipient.MessageMediaInstance != nil { - instanceMap = maps.Map{ - "id": task.MessageRecipient.MessageMediaInstance.Id, - "name": task.MessageRecipient.MessageMediaInstance.Name, - } - } - } - - taskMaps = append(taskMaps, maps.Map{ - "id": task.Id, - "subject": task.Subject, - "body": task.Body, - "createdTime": timeutil.FormatTime("Y-m-d H:i:s", task.CreatedAt), - "result": resultMap, - "status": task.Status, - "user": user, - "instance": instanceMap, - }) - } - this.Data["tasks"] = taskMaps - - this.Show() -} diff --git a/internal/web/actions/default/admins/recipients/tasks/init.go b/internal/web/actions/default/admins/recipients/tasks/init.go deleted file mode 100644 index 2a8f7499..00000000 --- a/internal/web/actions/default/admins/recipients/tasks/init.go +++ /dev/null @@ -1,21 +0,0 @@ -package tasks - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" - "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" - "github.com/iwind/TeaGo" -) - -func init() { - TeaGo.BeforeStart(func(server *TeaGo.Server) { - server. - Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeAdmin)). - Data("teaMenu", "admins"). - Data("teaSubMenu", "recipients"). - Prefix("/admins/recipients/tasks"). - Get("", new(IndexAction)). - Post("/taskInfo", new(TaskInfoAction)). - Post("/delete", new(DeleteAction)). - EndAll() - }) -} diff --git a/internal/web/actions/default/admins/recipients/tasks/taskInfo.go b/internal/web/actions/default/admins/recipients/tasks/taskInfo.go deleted file mode 100644 index cfcfbc1a..00000000 --- a/internal/web/actions/default/admins/recipients/tasks/taskInfo.go +++ /dev/null @@ -1,40 +0,0 @@ -package tasks - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/maps" -) - -type TaskInfoAction struct { - actionutils.ParentAction -} - -func (this *TaskInfoAction) Init() { - this.Nav("", "", "") -} - -func (this *TaskInfoAction) RunPost(params struct { - TaskId int64 -}) { - resp, err := this.RPC().MessageTaskRPC().FindEnabledMessageTask(this.AdminContext(), &pb.FindEnabledMessageTaskRequest{MessageTaskId: params.TaskId}) - if err != nil { - this.ErrorPage(err) - return - } - - if resp.MessageTask == nil { - this.NotFound("messageTask", params.TaskId) - return - } - - result := resp.MessageTask.Result - this.Data["status"] = resp.MessageTask.Status - this.Data["result"] = maps.Map{ - "isOk": result.IsOk, - "response": result.Response, - "error": result.Error, - } - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/test.go b/internal/web/actions/default/admins/recipients/test.go deleted file mode 100644 index 6623219f..00000000 --- a/internal/web/actions/default/admins/recipients/test.go +++ /dev/null @@ -1,114 +0,0 @@ -package recipients - -import ( - "encoding/json" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/actions" - "github.com/iwind/TeaGo/maps" -) - -type TestAction struct { - actionutils.ParentAction -} - -func (this *TestAction) Init() { - this.Nav("", "", "test") -} - -func (this *TestAction) RunGet(params struct { - RecipientId int64 -}) { - recipientResp, err := this.RPC().MessageRecipientRPC().FindEnabledMessageRecipient(this.AdminContext(), &pb.FindEnabledMessageRecipientRequest{MessageRecipientId: params.RecipientId}) - if err != nil { - this.ErrorPage(err) - return - } - recipient := recipientResp.MessageRecipient - if recipient == nil || recipient.Admin == nil || recipient.MessageMediaInstance == nil { - this.NotFound("messageRecipient", params.RecipientId) - return - } - - this.Data["recipient"] = maps.Map{ - "id": recipient.Id, - "admin": maps.Map{ - "id": recipient.Admin.Id, - "fullname": recipient.Admin.Fullname, - "username": recipient.Admin.Username, - }, - "instance": maps.Map{ - "id": recipient.MessageMediaInstance.Id, - "name": recipient.MessageMediaInstance.Name, - "description": recipient.MessageMediaInstance.Description, - }, - "user": recipient.User, - } - - instanceResp, err := this.RPC().MessageMediaInstanceRPC().FindEnabledMessageMediaInstance(this.AdminContext(), &pb.FindEnabledMessageMediaInstanceRequest{MessageMediaInstanceId: recipient.MessageMediaInstance.Id}) - if err != nil { - this.ErrorPage(err) - return - } - instance := instanceResp.MessageMediaInstance - if instance == nil || instance.MessageMedia == nil { - this.NotFound("messageMediaInstance", recipient.MessageMediaInstance.Id) - return - } - - mediaParams := maps.Map{} - if len(instance.ParamsJSON) > 0 { - err = json.Unmarshal(instance.ParamsJSON, &mediaParams) - if err != nil { - this.ErrorPage(err) - return - } - } - - this.Data["instance"] = maps.Map{ - "id": instance.Id, - "isOn": instance.IsOn, - "media": maps.Map{ - "type": instance.MessageMedia.Type, - "name": instance.MessageMedia.Name, - "userDescription": instance.MessageMedia.UserDescription, - }, - "description": instance.Description, - "params": mediaParams, - } - - this.Show() -} - -func (this *TestAction) RunPost(params struct { - InstanceId int64 - Subject string - Body string - User string - - Must *actions.Must - CSRF *actionutils.CSRF -}) { - params.Must. - Field("instanceId", params.InstanceId). - Gt(0, "请选择正确的媒介") - - resp, err := this.RPC().MessageTaskRPC().CreateMessageTask(this.AdminContext(), &pb.CreateMessageTaskRequest{ - RecipientId: 0, - InstanceId: params.InstanceId, - User: params.User, - Subject: params.Subject, - Body: params.Body, - IsPrimary: true, - }) - if err != nil { - this.ErrorPage(err) - return - } - this.Data["taskId"] = resp.MessageTaskId - - defer this.CreateLogInfo(codes.MessageTask_LogCreateTestingMessageTask, resp.MessageTaskId) - - this.Success() -} diff --git a/internal/web/actions/default/admins/recipients/update.go b/internal/web/actions/default/admins/recipients/update.go deleted file mode 100644 index 010b5bcf..00000000 --- a/internal/web/actions/default/admins/recipients/update.go +++ /dev/null @@ -1,144 +0,0 @@ -package recipients - -import ( - "github.com/TeaOSLab/EdgeAdmin/internal/utils" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" - "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/iwind/TeaGo/actions" - "github.com/iwind/TeaGo/maps" - "regexp" - "strings" -) - -type UpdateAction struct { - actionutils.ParentAction -} - -func (this *UpdateAction) Init() { - this.Nav("", "", "update") -} - -func (this *UpdateAction) RunGet(params struct { - RecipientId int64 -}) { - recipientResp, err := this.RPC().MessageRecipientRPC().FindEnabledMessageRecipient(this.AdminContext(), &pb.FindEnabledMessageRecipientRequest{MessageRecipientId: params.RecipientId}) - if err != nil { - this.ErrorPage(err) - return - } - recipient := recipientResp.MessageRecipient - if recipient == nil || recipient.Admin == nil || recipient.MessageMediaInstance == nil { - this.NotFound("messageRecipient", params.RecipientId) - return - } - - var timeFromHour = "" - var timeFromMinute = "" - var timeFromSecond = "" - - if len(recipient.TimeFrom) > 0 { - var pieces = strings.Split(recipient.TimeFrom, ":") - timeFromHour = pieces[0] - timeFromMinute = pieces[1] - timeFromSecond = pieces[2] - } - - var timeToHour = "" - var timeToMinute = "" - var timeToSecond = "" - if len(recipient.TimeTo) > 0 { - var pieces = strings.Split(recipient.TimeTo, ":") - timeToHour = pieces[0] - timeToMinute = pieces[1] - timeToSecond = pieces[2] - } - - this.Data["recipient"] = maps.Map{ - "id": recipient.Id, - "admin": maps.Map{ - "id": recipient.Admin.Id, - "fullname": recipient.Admin.Fullname, - "username": recipient.Admin.Username, - }, - "groups": recipient.MessageRecipientGroups, - "isOn": recipient.IsOn, - "instance": maps.Map{ - "id": recipient.MessageMediaInstance.Id, - "name": recipient.MessageMediaInstance.Name, - }, - "user": recipient.User, - "description": recipient.Description, - "timeFromHour": timeFromHour, - "timeFromMinute": timeFromMinute, - "timeFromSecond": timeFromSecond, - "timeToHour": timeToHour, - "timeToMinute": timeToMinute, - "timeToSecond": timeToSecond, - } - - this.Show() -} - -func (this *UpdateAction) RunPost(params struct { - RecipientId int64 - - AdminId int64 - User string - InstanceId int64 - - GroupIds string - Description string - IsOn bool - - TimeFromHour string - TimeFromMinute string - TimeFromSecond string - - TimeToHour string - TimeToMinute string - TimeToSecond string - - Must *actions.Must - CSRF *actionutils.CSRF -}) { - defer this.CreateLogInfo(codes.MessageRecipient_LogUpdateMessageRecipient, params.RecipientId) - - params.Must. - Field("adminId", params.AdminId). - Gt(0, "请选择系统用户"). - Field("instanceId", params.InstanceId). - Gt(0, "请选择媒介") - - groupIds := utils.SplitNumbers(params.GroupIds) - - var digitReg = regexp.MustCompile(`^\d+$`) - - var timeFrom = "" - if digitReg.MatchString(params.TimeFromHour) && digitReg.MatchString(params.TimeFromMinute) && digitReg.MatchString(params.TimeFromSecond) { - timeFrom = params.TimeFromHour + ":" + params.TimeFromMinute + ":" + params.TimeFromSecond - } - - var timeTo = "" - if digitReg.MatchString(params.TimeToHour) && digitReg.MatchString(params.TimeToMinute) && digitReg.MatchString(params.TimeToSecond) { - timeTo = params.TimeToHour + ":" + params.TimeToMinute + ":" + params.TimeToSecond - } - - _, err := this.RPC().MessageRecipientRPC().UpdateMessageRecipient(this.AdminContext(), &pb.UpdateMessageRecipientRequest{ - MessageRecipientId: params.RecipientId, - AdminId: params.AdminId, - MessageMediaInstanceId: params.InstanceId, - User: params.User, - MessageRecipientGroupIds: groupIds, - Description: params.Description, - IsOn: params.IsOn, - TimeFrom: timeFrom, - TimeTo: timeTo, - }) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/dashboard/index.go b/internal/web/actions/default/dashboard/index.go index 7cdfa99a..bb38e73c 100644 --- a/internal/web/actions/default/dashboard/index.go +++ b/internal/web/actions/default/dashboard/index.go @@ -154,17 +154,6 @@ func (this *IndexAction) RunPost(params struct{}) { "version": "", } } - if resp.MonitorNodeUpgradeInfo != nil { - this.Data["monitorNodeUpgradeInfo"] = maps.Map{ - "count": resp.MonitorNodeUpgradeInfo.CountNodes, - "version": resp.MonitorNodeUpgradeInfo.NewVersion, - } - } else { - this.Data["monitorNodeUpgradeInfo"] = maps.Map{ - "count": 0, - "version": "", - } - } if resp.ApiNodeUpgradeInfo != nil { this.Data["apiNodeUpgradeInfo"] = maps.Map{ "count": resp.ApiNodeUpgradeInfo.CountNodes, diff --git a/web/views/@default/settings/monitor-nodes/index.html b/web/views/@default/settings/monitor-nodes/index.html deleted file mode 100644 index efe75642..00000000 --- a/web/views/@default/settings/monitor-nodes/index.html +++ /dev/null @@ -1,49 +0,0 @@ -{$layout} - - - [添加节点] - - -

暂时还没有节点。

- - - - - - - - - - - - - - - - - - - - -
节点名称版本号CPU内存状态操作
{{node.name}} - v{{node.status.buildVersion}} - - - - {{node.status.cpuUsageText}} - - - - {{node.status.memUsageText}} - - - - -
- 运行中 -
- 已断开 - 未连接 -
- 详情   - 删除 -
- -
\ No newline at end of file diff --git a/web/views/@default/settings/monitor-nodes/index.js b/web/views/@default/settings/monitor-nodes/index.js deleted file mode 100644 index 1d8f4319..00000000 --- a/web/views/@default/settings/monitor-nodes/index.js +++ /dev/null @@ -1,26 +0,0 @@ -Tea.context(function () { - // 创建节点 - this.createNode = function () { - teaweb.popup("/settings/monitorNodes/node/createPopup", { - width: "50em", - height: "30em", - callback: function () { - teaweb.success("保存成功", function () { - teaweb.reload() - }) - } - }) - } - - // 删除节点 - this.deleteNode = function (nodeId) { - let that = this - teaweb.confirm("确定要删除此节点吗?", function () { - that.$post("/settings/monitorNodes/delete") - .params({ - nodeId: nodeId - }) - .refresh() - }) - } -}) \ No newline at end of file diff --git a/web/views/@default/settings/monitor-nodes/node/@menu.html b/web/views/@default/settings/monitor-nodes/node/@menu.html deleted file mode 100644 index c0546ed4..00000000 --- a/web/views/@default/settings/monitor-nodes/node/@menu.html +++ /dev/null @@ -1,8 +0,0 @@ - - 节点列表 - | - "{{node.name}}"详情 - 运行日志 - 安装节点 - 修改节点 - diff --git a/web/views/@default/settings/monitor-nodes/node/createPopup.html b/web/views/@default/settings/monitor-nodes/node/createPopup.html deleted file mode 100644 index e7afb04b..00000000 --- a/web/views/@default/settings/monitor-nodes/node/createPopup.html +++ /dev/null @@ -1,34 +0,0 @@ -{$layout "layout_popup"} - -

添加监控节点

-
- - - - - - - - - - - - - - - - - - -
节点名称 * - -
描述 - -
是否启用 -
- - -
-
- -
\ No newline at end of file diff --git a/web/views/@default/settings/monitor-nodes/node/createPopup.js b/web/views/@default/settings/monitor-nodes/node/createPopup.js deleted file mode 100644 index c6471490..00000000 --- a/web/views/@default/settings/monitor-nodes/node/createPopup.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - -}) \ No newline at end of file diff --git a/web/views/@default/settings/monitor-nodes/node/index.html b/web/views/@default/settings/monitor-nodes/node/index.html deleted file mode 100644 index fb9a5f7b..00000000 --- a/web/views/@default/settings/monitor-nodes/node/index.html +++ /dev/null @@ -1,24 +0,0 @@ -{$layout} -{$template "menu"} - - - - - - - - - - - - - - -
节点名称 - {{node.name}} -
状态 - -
描述 - {{node.description}} - 暂时还没有描述。 -
\ No newline at end of file diff --git a/web/views/@default/settings/monitor-nodes/node/install.html b/web/views/@default/settings/monitor-nodes/node/install.html deleted file mode 100644 index 2c9bd24e..00000000 --- a/web/views/@default/settings/monitor-nodes/node/install.html +++ /dev/null @@ -1,31 +0,0 @@ -{$layout} -{$template "menu"} -{$template "/code_editor"} - -

安装步骤

-
    -
  1. 按照下面的配置信息替换configs/api.yaml内容;如果文件不存在,请先创建
  2. -
  3. 使用bin/edge-monitor start启动节点
  4. -
  5. 可以在logs/run.log中查看启动是否有异常
  6. -
  7. 配置修改后,使用bin/edge-monitor restart重启节点
  8. -
- -
-

配置信息

- - - - - - - - - -
配置文件 - configs/api.yaml   [下载] -
配置内容 - rpc: - endpoints: [ {{apiEndpoints}} ] -nodeId: "{{node.uniqueId}}" -secret: "{{node.secret}}" -
diff --git a/web/views/@default/settings/monitor-nodes/node/logs.html b/web/views/@default/settings/monitor-nodes/node/logs.html deleted file mode 100644 index bc53e349..00000000 --- a/web/views/@default/settings/monitor-nodes/node/logs.html +++ /dev/null @@ -1,51 +0,0 @@ -{$layout} -{$template "menu"} -{$template "/datepicker"} - -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
- -
-
- -

暂时还没有日志。

- - - - - - - - - - -
- -
- -
\ No newline at end of file diff --git a/web/views/@default/settings/monitor-nodes/node/logs.js b/web/views/@default/settings/monitor-nodes/node/logs.js deleted file mode 100644 index 29a90420..00000000 --- a/web/views/@default/settings/monitor-nodes/node/logs.js +++ /dev/null @@ -1,6 +0,0 @@ -Tea.context(function () { - this.$delay(function () { - teaweb.datepicker("day-from-picker") - teaweb.datepicker("day-to-picker") - }) -}) \ No newline at end of file diff --git a/web/views/@default/settings/monitor-nodes/node/update.html b/web/views/@default/settings/monitor-nodes/node/update.html deleted file mode 100644 index 401969a1..00000000 --- a/web/views/@default/settings/monitor-nodes/node/update.html +++ /dev/null @@ -1,37 +0,0 @@ -{$layout} - -{$template "menu"} - -
- - - - - - - - - - - - - - - - - - - - -
节点名称 * - -
描述 - -
是否启用 -
- - -
-
- -
\ No newline at end of file diff --git a/web/views/@default/settings/monitor-nodes/node/update.js b/web/views/@default/settings/monitor-nodes/node/update.js deleted file mode 100644 index 08078f45..00000000 --- a/web/views/@default/settings/monitor-nodes/node/update.js +++ /dev/null @@ -1,3 +0,0 @@ -Tea.context(function () { - this.success = NotifySuccess("保存成功", "/settings/monitorNodes/node?nodeId=" + this.node.id) -}) \ No newline at end of file