Files
EdgeAdmin/internal/web/actions/default/servers/certs/index.go

182 lines
5.1 KiB
Go
Raw Normal View History

2020-11-24 17:36:42 +08:00
package certs
2020-09-13 20:37:07 +08:00
import (
2020-09-30 17:46:38 +08:00
"encoding/json"
2020-09-13 20:37:07 +08:00
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
2020-09-30 17:46:38 +08:00
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs"
"github.com/iwind/TeaGo/maps"
timeutil "github.com/iwind/TeaGo/utils/time"
"time"
2020-09-13 20:37:07 +08:00
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.FirstMenu("index")
}
2020-09-30 17:46:38 +08:00
func (this *IndexAction) RunGet(params struct {
2020-12-10 09:18:23 +08:00
Type string
Keyword string
2020-09-30 17:46:38 +08:00
}) {
this.Data["type"] = params.Type
2020-12-10 09:18:23 +08:00
this.Data["keyword"] = params.Keyword
2020-09-30 17:46:38 +08:00
countAll := int64(0)
countCA := int64(0)
countAvailable := int64(0)
countExpired := int64(0)
count7Days := int64(0)
count30Days := int64(0)
// 计算数量
{
// all
2020-12-10 09:18:23 +08:00
resp, err := this.RPC().SSLCertRPC().CountSSLCerts(this.AdminContext(), &pb.CountSSLCertRequest{
Keyword: params.Keyword,
})
2020-09-30 17:46:38 +08:00
if err != nil {
this.ErrorPage(err)
return
}
countAll = resp.Count
// CA
resp, err = this.RPC().SSLCertRPC().CountSSLCerts(this.AdminContext(), &pb.CountSSLCertRequest{
2020-12-10 09:18:23 +08:00
IsCA: true,
Keyword: params.Keyword,
2020-09-30 17:46:38 +08:00
})
if err != nil {
this.ErrorPage(err)
return
}
countCA = resp.Count
// available
resp, err = this.RPC().SSLCertRPC().CountSSLCerts(this.AdminContext(), &pb.CountSSLCertRequest{
IsAvailable: true,
2020-12-10 09:18:23 +08:00
Keyword: params.Keyword,
2020-09-30 17:46:38 +08:00
})
if err != nil {
this.ErrorPage(err)
return
}
countAvailable = resp.Count
// expired
resp, err = this.RPC().SSLCertRPC().CountSSLCerts(this.AdminContext(), &pb.CountSSLCertRequest{
IsExpired: true,
2020-12-10 09:18:23 +08:00
Keyword: params.Keyword,
2020-09-30 17:46:38 +08:00
})
if err != nil {
this.ErrorPage(err)
return
}
countExpired = resp.Count
// expire in 7 days
resp, err = this.RPC().SSLCertRPC().CountSSLCerts(this.AdminContext(), &pb.CountSSLCertRequest{
ExpiringDays: 7,
2020-12-10 09:18:23 +08:00
Keyword: params.Keyword,
2020-09-30 17:46:38 +08:00
})
if err != nil {
this.ErrorPage(err)
return
}
count7Days = resp.Count
// expire in 30 days
resp, err = this.RPC().SSLCertRPC().CountSSLCerts(this.AdminContext(), &pb.CountSSLCertRequest{
ExpiringDays: 30,
2020-12-10 09:18:23 +08:00
Keyword: params.Keyword,
2020-09-30 17:46:38 +08:00
})
if err != nil {
this.ErrorPage(err)
return
}
count30Days = resp.Count
}
this.Data["countAll"] = countAll
this.Data["countCA"] = countCA
this.Data["countAvailable"] = countAvailable
this.Data["countExpired"] = countExpired
this.Data["count7Days"] = count7Days
this.Data["count30Days"] = count30Days
// 分页
var page *actionutils.Page
var listResp *pb.ListSSLCertsResponse
var err error
switch params.Type {
case "":
page = this.NewPage(countAll)
2020-12-10 09:18:23 +08:00
listResp, err = this.RPC().SSLCertRPC().ListSSLCerts(this.AdminContext(), &pb.ListSSLCertsRequest{
Offset: page.Offset,
Size: page.Size,
Keyword: params.Keyword,
})
2020-09-30 17:46:38 +08:00
case "ca":
page = this.NewPage(countCA)
2020-12-10 09:18:23 +08:00
listResp, err = this.RPC().SSLCertRPC().ListSSLCerts(this.AdminContext(), &pb.ListSSLCertsRequest{IsCA: true, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword})
2020-09-30 17:46:38 +08:00
case "available":
page = this.NewPage(countAvailable)
2020-12-10 09:18:23 +08:00
listResp, err = this.RPC().SSLCertRPC().ListSSLCerts(this.AdminContext(), &pb.ListSSLCertsRequest{IsAvailable: true, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword})
2020-09-30 17:46:38 +08:00
case "expired":
page = this.NewPage(countExpired)
2020-12-10 09:18:23 +08:00
listResp, err = this.RPC().SSLCertRPC().ListSSLCerts(this.AdminContext(), &pb.ListSSLCertsRequest{IsExpired: true, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword})
2020-09-30 17:46:38 +08:00
case "7days":
page = this.NewPage(count7Days)
2020-12-10 09:18:23 +08:00
listResp, err = this.RPC().SSLCertRPC().ListSSLCerts(this.AdminContext(), &pb.ListSSLCertsRequest{ExpiringDays: 7, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword})
2020-09-30 17:46:38 +08:00
case "30days":
page = this.NewPage(count30Days)
2020-12-10 09:18:23 +08:00
listResp, err = this.RPC().SSLCertRPC().ListSSLCerts(this.AdminContext(), &pb.ListSSLCertsRequest{ExpiringDays: 30, Offset: page.Offset, Size: page.Size, Keyword: params.Keyword})
2020-09-30 17:46:38 +08:00
default:
page = this.NewPage(countAll)
2020-12-10 09:18:23 +08:00
listResp, err = this.RPC().SSLCertRPC().ListSSLCerts(this.AdminContext(), &pb.ListSSLCertsRequest{
Keyword: params.Keyword,
Offset: page.Offset,
Size: page.Size,
2020-12-10 09:18:23 +08:00
})
2020-09-30 17:46:38 +08:00
}
if err != nil {
this.ErrorPage(err)
return
}
certConfigs := []*sslconfigs.SSLCertConfig{}
err = json.Unmarshal(listResp.SslCertsJSON, &certConfigs)
2020-09-30 17:46:38 +08:00
if err != nil {
this.ErrorPage(err)
return
}
this.Data["certs"] = certConfigs
certMaps := []maps.Map{}
nowTime := time.Now().Unix()
for _, certConfig := range certConfigs {
countServersResp, err := this.RPC().ServerRPC().CountAllEnabledServersWithSSLCertId(this.AdminContext(), &pb.CountAllEnabledServersWithSSLCertIdRequest{SslCertId: certConfig.Id})
2020-09-30 17:46:38 +08:00
if err != nil {
this.ErrorPage(err)
return
}
certMaps = append(certMaps, maps.Map{
2020-10-02 17:22:24 +08:00
"isOn": certConfig.IsOn,
2020-09-30 17:46:38 +08:00
"beginDay": timeutil.FormatTime("Y-m-d", certConfig.TimeBeginAt),
"endDay": timeutil.FormatTime("Y-m-d", certConfig.TimeEndAt),
"isExpired": nowTime > certConfig.TimeEndAt,
"isAvailable": nowTime <= certConfig.TimeEndAt,
"countServers": countServersResp.Count,
})
}
this.Data["certInfos"] = certMaps
this.Data["page"] = page.AsHTML()
2020-09-13 20:37:07 +08:00
this.Show()
}