diff --git a/internal/web/actions/default/servers/certs/acme/index.go b/internal/web/actions/default/servers/certs/acme/index.go index f3f92a00..d039ec03 100644 --- a/internal/web/actions/default/servers/certs/acme/index.go +++ b/internal/web/actions/default/servers/certs/acme/index.go @@ -16,30 +16,121 @@ func (this *IndexAction) Init() { this.SecondMenu("list") } -func (this *IndexAction) RunGet(params struct{}) { - countResp, err := this.RPC().ACMETaskRPC().CountAllEnabledACMETasks(this.AdminContext(), &pb.CountAllEnabledACMETasksRequest{ - AdminId: this.AdminId(), - UserId: 0, - }) - if err != nil { - this.ErrorPage(err) - return - } - count := countResp.Count - page := this.NewPage(count) - this.Data["page"] = page.AsHTML() +func (this *IndexAction) RunGet(params struct { + Type string + Keyword string +}) { + this.Data["type"] = params.Type + this.Data["keyword"] = params.Keyword - tasksResp, err := this.RPC().ACMETaskRPC().ListEnabledACMETasks(this.AdminContext(), &pb.ListEnabledACMETasksRequest{ - AdminId: this.AdminId(), - UserId: 0, - Offset: page.Offset, - Size: page.Size, - }) + countAll := int64(0) + countAvailable := int64(0) + countExpired := int64(0) + count7Days := int64(0) + count30Days := int64(0) + + // 计算数量 + { + // all + resp, err := this.RPC().ACMETaskRPC().CountAllEnabledACMETasks(this.AdminContext(), &pb.CountAllEnabledACMETasksRequest{ + Keyword: params.Keyword, + }) + if err != nil { + this.ErrorPage(err) + return + } + countAll = resp.Count + + // available + resp, err = this.RPC().ACMETaskRPC().CountAllEnabledACMETasks(this.AdminContext(), &pb.CountAllEnabledACMETasksRequest{ + IsAvailable: true, + Keyword: params.Keyword, + }) + if err != nil { + this.ErrorPage(err) + return + } + countAvailable = resp.Count + + // expired + resp, err = this.RPC().ACMETaskRPC().CountAllEnabledACMETasks(this.AdminContext(), &pb.CountAllEnabledACMETasksRequest{ + IsExpired: true, + Keyword: params.Keyword, + }) + if err != nil { + this.ErrorPage(err) + return + } + countExpired = resp.Count + + // expire in 7 days + resp, err = this.RPC().ACMETaskRPC().CountAllEnabledACMETasks(this.AdminContext(), &pb.CountAllEnabledACMETasksRequest{ + ExpiringDays: 7, + Keyword: params.Keyword, + }) + if err != nil { + this.ErrorPage(err) + return + } + count7Days = resp.Count + + // expire in 30 days + resp, err = this.RPC().ACMETaskRPC().CountAllEnabledACMETasks(this.AdminContext(), &pb.CountAllEnabledACMETasksRequest{ + ExpiringDays: 30, + Keyword: params.Keyword, + }) + if err != nil { + this.ErrorPage(err) + return + } + count30Days = resp.Count + } + + this.Data["countAll"] = countAll + this.Data["countAvailable"] = countAvailable + this.Data["countExpired"] = countExpired + this.Data["count7Days"] = count7Days + this.Data["count30Days"] = count30Days + + // 分页 + var page *actionutils.Page + var tasksResp *pb.ListEnabledACMETasksResponse + var err error + switch params.Type { + case "": + page = this.NewPage(countAll) + tasksResp, err = this.RPC().ACMETaskRPC().ListEnabledACMETasks(this.AdminContext(), &pb.ListEnabledACMETasksRequest{ + Offset: page.Offset, + Size: page.Size, + Keyword: params.Keyword, + }) + case "available": + page = this.NewPage(countAvailable) + tasksResp, err = this.RPC().ACMETaskRPC().ListEnabledACMETasks(this.AdminContext(), &pb.ListEnabledACMETasksRequest{IsAvailable: true, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword}) + case "expired": + page = this.NewPage(countExpired) + tasksResp, err = this.RPC().ACMETaskRPC().ListEnabledACMETasks(this.AdminContext(), &pb.ListEnabledACMETasksRequest{IsExpired: true, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword}) + case "7days": + page = this.NewPage(count7Days) + tasksResp, err = this.RPC().ACMETaskRPC().ListEnabledACMETasks(this.AdminContext(), &pb.ListEnabledACMETasksRequest{ExpiringDays: 7, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword}) + case "30days": + page = this.NewPage(count30Days) + tasksResp, err = this.RPC().ACMETaskRPC().ListEnabledACMETasks(this.AdminContext(), &pb.ListEnabledACMETasksRequest{ExpiringDays: 30, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword}) + default: + page = this.NewPage(countAll) + tasksResp, err = this.RPC().ACMETaskRPC().ListEnabledACMETasks(this.AdminContext(), &pb.ListEnabledACMETasksRequest{ + Keyword: params.Keyword, + Offset: page.Offset, + Size: page.Size, + }) + } if err != nil { this.ErrorPage(err) return } + this.Data["page"] = page.AsHTML() + taskMaps := []maps.Map{} for _, task := range tasksResp.AcmeTasks { if task.AcmeUser == nil { diff --git a/internal/web/actions/default/servers/certs/index.go b/internal/web/actions/default/servers/certs/index.go index 41b908dd..b53f10d7 100644 --- a/internal/web/actions/default/servers/certs/index.go +++ b/internal/web/actions/default/servers/certs/index.go @@ -138,6 +138,8 @@ func (this *IndexAction) RunGet(params struct { page = this.NewPage(countAll) listResp, err = this.RPC().SSLCertRPC().ListSSLCerts(this.AdminContext(), &pb.ListSSLCertsRequest{ Keyword: params.Keyword, + Offset: page.Offset, + Size: page.Size, }) } if err != nil { diff --git a/web/views/@default/servers/certs/acme/index.html b/web/views/@default/servers/certs/acme/index.html index 46a97247..43680c59 100644 --- a/web/views/@default/servers/certs/acme/index.html +++ b/web/views/@default/servers/certs/acme/index.html @@ -4,6 +4,26 @@