Skip to content

Commit 52e799c

Browse files
authored
Merge pull request #3 from eryajf/feat_domain_info
将公用工具移动到public目录,增加域名创建及到期日期的字段
2 parents 5e064b3 + 673e627 commit 52e799c

File tree

12 files changed

+179
-46
lines changed

12 files changed

+179
-46
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ domain_list{
6969
domain_name="域名",
7070
domain_remark="域名备注",
7171
domain_status="域名状态",
72-
create_time="域名创建时间"} 0
72+
create_data="域名创建日期",
73+
create_data="域名到期日期"} 99 (此value为域名距离到期的天数)
7374
7475
<!-- 域名记录列表 -->
7576
record_list{

go.mod

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ toolchain go1.22.4
77
require (
88
github.com/alibabacloud-go/alidns-20150109/v4 v4.5.5
99
github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.9
10+
github.com/alibabacloud-go/domain-20180129/v4 v4.2.0
1011
github.com/alibabacloud-go/tea v1.2.2
1112
github.com/allegro/bigcache/v3 v3.1.0
1213
github.com/charmbracelet/log v0.2.2
14+
github.com/golang-module/carbon/v2 v2.3.12
1315
github.com/prometheus/client_golang v1.16.0
1416
github.com/robfig/cron/v3 v3.0.1
1517
github.com/spf13/cobra v1.8.1
16-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.989
18+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.993
1719
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.989
20+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain v1.0.993
1821
)
1922

2023
require (

go.sum

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.9/go.mod h1:bb+Io8Sn2RuM3/R
77
github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY=
88
github.com/alibabacloud-go/debug v1.0.0 h1:3eIEQWfay1fB24PQIEzXAswlVJtdQok8f3EVN5VrBnA=
99
github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
10+
github.com/alibabacloud-go/domain-20180129/v4 v4.2.0 h1:PAEt76VDoXbQODWeN9PTwYhA5NoEbJSK/yzGX2DZXrQ=
11+
github.com/alibabacloud-go/domain-20180129/v4 v4.2.0/go.mod h1:q0n3wgGRndhuZsAXFVCFtiSR8+W0so85qYtKLzR2b18=
1012
github.com/alibabacloud-go/endpoint-util v1.1.0 h1:r/4D3VSw888XGaeNpP994zDUaxdgTSHBbVfZlzf6b5Q=
1113
github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
1214
github.com/alibabacloud-go/openapi-util v0.1.0 h1:0z75cIULkDrdEhkLWgi9tnLe+KhAFE/r5Pb3312/eAY=
@@ -48,6 +50,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
4850
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4951
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
5052
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
53+
github.com/golang-module/carbon/v2 v2.3.12 h1:VC1DwN1kBwJkh5MjXmTFryjs5g4CWyoM8HAHffZPX/k=
54+
github.com/golang-module/carbon/v2 v2.3.12/go.mod h1:HNsedGzXGuNciZImYP2OMnpiwq/vhIstR/vn45ib5cI=
5155
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
5256
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
5357
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
@@ -119,14 +123,23 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
119123
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
120124
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
121125
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
126+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
127+
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
128+
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
122129
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
123130
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
124-
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
125-
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
126-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.989 h1:jqwrVW8ZkPSAsGnpF9lLotmrkNunbC0cKrrTZRPksFY=
131+
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
132+
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
133+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
134+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
135+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
127136
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.989/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
137+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.993 h1:+iJMmF0q1MPyhLs0+J7CcJ47w/vq6ICsCxnV4gc0dKw=
138+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.993/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
128139
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.989 h1:EK4u1YQBGhgvZU0DeJEGX1oWEP/Gigq7sEwLdZBZLyA=
129140
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.989/go.mod h1:pPFLkcTX4Z+Exqd6dAQueimkvniIHzqUvvaf6o9uaa8=
141+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain v1.0.993 h1:v/L8pM1EjEhHudA6B/LduXN87QpoFZ5kgfpLcsMpLQs=
142+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain v1.0.993/go.mod h1:fRBKEOc+KFiglAiIHIozQiveI6O+unpw0qL95iunZxA=
130143
github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM=
131144
github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
132145
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -215,5 +228,6 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
215228
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
216229
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
217230
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
231+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
218232
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
219233
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

pkg/cmd/root.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import (
88
"runtime"
99

1010
"github.com/eryajf/cloud_dns_exporter/pkg/export"
11-
"github.com/eryajf/cloud_dns_exporter/pkg/logger"
11+
"github.com/eryajf/cloud_dns_exporter/public/logger"
12+
1213
"github.com/eryajf/cloud_dns_exporter/public"
1314
"github.com/prometheus/client_golang/prometheus"
1415
"github.com/prometheus/client_golang/prometheus/promhttp"
@@ -63,7 +64,8 @@ func RunServer() {
6364
<body>
6465
<h1>Cloud DNS Exporter</h1>
6566
<p><a href='/metrics'>Metrics</a></p>
66-
<p><a href='https://github.com/eryajf'>By Eryajf</a></p>
67+
<p><a href='https://github.com/eryajf/cloud_dns_exporter'>Source Repo</a></p>
68+
<p><a href='https://github.com/eryajf'>Create By Eryajf</a></p>
6769
</body>
6870
</html>`))
6971
if err != nil {

pkg/export/cron_cache.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import (
55
"fmt"
66
"sync"
77

8-
"github.com/eryajf/cloud_dns_exporter/pkg/logger"
8+
"github.com/eryajf/cloud_dns_exporter/public/logger"
9+
910
"github.com/eryajf/cloud_dns_exporter/pkg/provider"
1011
"github.com/eryajf/cloud_dns_exporter/public"
1112
"github.com/robfig/cron/v3"

pkg/export/export_gauge.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import (
55
"fmt"
66
"sync"
77

8-
"github.com/eryajf/cloud_dns_exporter/pkg/logger"
8+
"github.com/eryajf/cloud_dns_exporter/public/logger"
9+
910
"github.com/eryajf/cloud_dns_exporter/pkg/provider"
1011
"github.com/eryajf/cloud_dns_exporter/public"
1112
"github.com/prometheus/client_golang/prometheus"
@@ -40,7 +41,8 @@ func NewMetrics(namespace string) *Metrics {
4041
"domain_name",
4142
"domain_remark",
4243
"domain_status",
43-
"create_time",
44+
"created_date",
45+
"expiry_date",
4446
}),
4547
public.RecordList: newGlobalMetric(namespace,
4648
public.RecordList,
@@ -113,7 +115,7 @@ func (c *Metrics) Collect(ch chan<- prometheus.Metric) {
113115
}
114116
for _, v := range domains {
115117
ch <- prometheus.MustNewConstMetric(
116-
c.metrics[public.DomainList], prometheus.GaugeValue, 1, v.CloudProvider, v.CloudName, v.DomainID, v.DomainName, v.DomainRemark, v.DomainStatus, v.CreateTime)
118+
c.metrics[public.DomainList], prometheus.GaugeValue, float64(v.DaysUntilExpiry), v.CloudProvider, v.CloudName, v.DomainID, v.DomainName, v.DomainRemark, v.DomainStatus, v.CreatedDate, v.ExpiryDate)
117119
}
118120
// get record list from cache
119121
recordListCacheKey := public.RecordList + "_" + cloudProvider + "_" + cloudName

pkg/provider/aliyun.go

Lines changed: 66 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import (
88

99
alidns "github.com/alibabacloud-go/alidns-20150109/v4/client"
1010
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
11+
domain "github.com/alibabacloud-go/domain-20180129/v4/client"
1112
"github.com/alibabacloud-go/tea/tea"
13+
"github.com/golang-module/carbon/v2"
14+
15+
"github.com/eryajf/cloud_dns_exporter/public/logger"
1216

13-
"github.com/eryajf/cloud_dns_exporter/pkg/logger"
14-
"github.com/eryajf/cloud_dns_exporter/pkg/tools"
1517
"github.com/eryajf/cloud_dns_exporter/public"
1618
)
1719

@@ -64,15 +66,22 @@ func (a *AliyunDNS) ListDomains() ([]Domain, error) {
6466
if err != nil {
6567
return nil, err
6668
}
69+
domainNames, err := a.getDomainNameList()
70+
if err != nil {
71+
return nil, err
72+
}
6773
for _, v := range domains {
74+
domainCreateAndExpiryDate := a.getDomainCreateAndExpiryDate(domainNames, v)
6875
dataObj = append(dataObj, Domain{
69-
CloudProvider: a.account.CloudProvider,
70-
CloudName: a.account.CloudName,
71-
DomainID: tea.StringValue(v.DomainId),
72-
DomainName: tea.StringValue(v.DomainName),
73-
DomainRemark: tea.StringValue(v.Remark),
74-
DomainStatus: "enable",
75-
CreateTime: tea.StringValue(v.CreateTime),
76+
CloudProvider: a.account.CloudProvider,
77+
CloudName: a.account.CloudName,
78+
DomainID: tea.StringValue(v.DomainId),
79+
DomainName: tea.StringValue(v.DomainName),
80+
DomainRemark: tea.StringValue(v.Remark),
81+
DomainStatus: "enable",
82+
CreatedDate: domainCreateAndExpiryDate.CreatedDate,
83+
ExpiryDate: domainCreateAndExpiryDate.ExpiryDate,
84+
DaysUntilExpiry: domainCreateAndExpiryDate.DaysUntilExpiry,
7685
})
7786
}
7887
return dataObj, nil
@@ -135,7 +144,7 @@ func (a *AliyunDNS) ListRecords() ([]Record, error) {
135144
RecordWeight: fmt.Sprintf("%d", tea.Int32Value(v.Weight)),
136145
RecordStatus: oneStatus(tea.StringValue(v.Status)),
137146
RecordRemark: tea.StringValue(v.Remark),
138-
UpdateTime: tools.GetReadTimeMs(tea.Int64Value(v.UpdateTimestamp)),
147+
UpdateTime: carbon.CreateFromTimestampMilli(tea.Int64Value(v.UpdateTimestamp)).ToDateTimeString(),
139148
FullRecord: tea.StringValue(v.RR) + "." + domain,
140149
})
141150
}
@@ -189,3 +198,50 @@ func (a *AliyunDNS) getRecordList(domain string) (rst []*alidns.DescribeDomainRe
189198
}
190199
return
191200
}
201+
202+
// https://next.api.aliyun.com/document/Domain/2018-01-29/QueryDomainList
203+
// getDomainNameList 获取域名列表
204+
func (a *AliyunDNS) getDomainNameList() (rst []*domain.QueryDomainListResponseBodyDataDomain, err error) {
205+
config := openapi.Config{
206+
AccessKeyId: tea.String(a.account.SecretID),
207+
AccessKeySecret: tea.String(a.account.SecretKey),
208+
}
209+
config.Endpoint = tea.String("domain.aliyuncs.com")
210+
client, err := domain.NewClient(&config)
211+
if err != nil {
212+
return nil, err
213+
}
214+
var (
215+
pageNumber int32 = 1
216+
pageSize int32 = 500
217+
)
218+
for {
219+
resp, err := client.QueryDomainList(&domain.QueryDomainListRequest{
220+
PageNum: tea.Int32(pageNumber),
221+
PageSize: tea.Int32(pageSize),
222+
})
223+
if err != nil {
224+
return nil, err
225+
}
226+
rst = append(rst, resp.Body.Data.Domain...)
227+
if len(resp.Body.Data.Domain) < int(pageSize) {
228+
break
229+
}
230+
pageNumber++
231+
}
232+
return
233+
}
234+
235+
// getDomainCreateAndExpiryDate 获取域名的创建时间与到期时间
236+
func (a *AliyunDNS) getDomainCreateAndExpiryDate(domainList []*domain.QueryDomainListResponseBodyDataDomain, domain *alidns.DescribeDomainsResponseBodyDomainsDomain) (d Domain) {
237+
for _, v := range domainList {
238+
if tea.StringValue(v.DomainName) == tea.StringValue(domain.DomainName) {
239+
d.CreatedDate = tea.StringValue(v.RegistrationDate)
240+
d.ExpiryDate = tea.StringValue(v.ExpirationDate)
241+
if d.ExpiryDate != "" {
242+
d.DaysUntilExpiry = carbon.Now().DiffInDays(carbon.Parse(d.ExpiryDate))
243+
}
244+
}
245+
}
246+
return
247+
}

pkg/provider/provider.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ func init() {
3636

3737
// Doamin 域名信息
3838
type Domain struct {
39-
CloudProvider string `json:"cloud_provider"`
40-
CloudName string `json:"cloud_name"`
41-
DomainID string `json:"domain_id"`
42-
DomainName string `json:"domain_name"`
43-
DomainRemark string `json:"domain_remark"`
44-
DomainStatus string `json:"domain_status"`
45-
CreateTime string `json:"create_time"`
39+
CloudProvider string `json:"cloud_provider"`
40+
CloudName string `json:"cloud_name"`
41+
DomainID string `json:"domain_id"`
42+
DomainName string `json:"domain_name"`
43+
DomainRemark string `json:"domain_remark"`
44+
DomainStatus string `json:"domain_status"`
45+
CreatedDate string `json:"created_date"`
46+
ExpiryDate string `json:"expiry_date"`
47+
DaysUntilExpiry int64 `json:"days_until_expiry"`
4648
}
4749

4850
// Record 域名记录信息

pkg/provider/tencent.go

Lines changed: 68 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ import (
77
"time"
88

99
"github.com/alibabacloud-go/tea/tea"
10-
"github.com/eryajf/cloud_dns_exporter/pkg/logger"
10+
"github.com/eryajf/cloud_dns_exporter/public/logger"
11+
"github.com/golang-module/carbon/v2"
12+
1113
"github.com/eryajf/cloud_dns_exporter/public"
1214
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
1315
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1416
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
1517
dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323"
18+
domain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain/v20180808"
1619
)
1720

1821
type TencentCloudDNS struct {
@@ -62,15 +65,22 @@ func (t *TencentCloudDNS) ListDomains() ([]Domain, error) {
6265
if err != nil {
6366
return nil, err
6467
}
68+
domainNames, err := t.getDomainNameList()
69+
if err != nil {
70+
return nil, err
71+
}
6572
for _, v := range domains {
73+
domainCreateAndExpiryDate := t.getDomainCreateAndExpiryDate(domainNames, v)
6674
dataObj = append(dataObj, Domain{
67-
CloudProvider: t.account.CloudProvider,
68-
CloudName: t.account.CloudName,
69-
DomainID: fmt.Sprintf("%d", tea.Uint64Value(v.DomainId)),
70-
DomainName: tea.StringValue(v.Name),
71-
DomainRemark: tea.StringValue(v.Remark),
72-
DomainStatus: oneStatus(tea.StringValue(v.Status)),
73-
CreateTime: tea.StringValue(v.CreatedOn),
75+
CloudProvider: t.account.CloudProvider,
76+
CloudName: t.account.CloudName,
77+
DomainID: fmt.Sprintf("%d", tea.Uint64Value(v.DomainId)),
78+
DomainName: tea.StringValue(v.Name),
79+
DomainRemark: tea.StringValue(v.Remark),
80+
DomainStatus: oneStatus(tea.StringValue(v.Status)),
81+
CreatedDate: domainCreateAndExpiryDate.CreatedDate,
82+
ExpiryDate: domainCreateAndExpiryDate.ExpiryDate,
83+
DaysUntilExpiry: domainCreateAndExpiryDate.DaysUntilExpiry,
7484
})
7585
}
7686
return dataObj, nil
@@ -142,7 +152,7 @@ func (t *TencentCloudDNS) ListRecords() ([]Record, error) {
142152
}
143153

144154
// https://cloud.tencent.com/document/api/1427/56172
145-
// GetDomainList 获取云账号下域名列表
155+
// GetDomainList 获取云解析中域名列表
146156
func (t *TencentCloudDNS) getDomainList() ([]*dnspod.DomainListItem, error) {
147157
request := dnspod.NewDescribeDomainListRequest()
148158
response, err := t.client.DescribeDomainList(request)
@@ -185,3 +195,52 @@ func (t *TencentCloudDNS) getRecordList(domain string) ([]*dnspod.RecordListItem
185195
}
186196
return temp, nil
187197
}
198+
199+
// https://cloud.tencent.com/document/api/242/48941
200+
// getDomainNameList 获取域名列表(与云解析的域名列表注意区分)
201+
func (t *TencentCloudDNS) getDomainNameList() ([]*domain.DomainList, error) {
202+
var (
203+
offset uint64 = 0
204+
limit uint64 = 100
205+
temp []*domain.DomainList
206+
)
207+
cpf := profile.NewClientProfile()
208+
cpf.HttpProfile.Endpoint = "domain.tencentcloudapi.com"
209+
client, _ := domain.NewClient(common.NewCredential(
210+
t.account.SecretID,
211+
t.account.SecretKey,
212+
), "", cpf)
213+
214+
request := domain.NewDescribeDomainNameListRequest()
215+
for {
216+
request.Offset = common.Uint64Ptr(offset)
217+
request.Limit = common.Uint64Ptr(limit)
218+
response, err := client.DescribeDomainNameList(request)
219+
if _, ok := err.(*errors.TencentCloudSDKError); ok {
220+
return nil, err
221+
}
222+
if err != nil {
223+
return nil, err
224+
}
225+
temp = append(temp, response.Response.DomainSet...)
226+
if len(response.Response.DomainSet) == 0 {
227+
break
228+
}
229+
offset += limit
230+
}
231+
return temp, nil
232+
}
233+
234+
// getDomainCreateAndExpiryDate 获取域名的创建时间与到期时间
235+
func (t *TencentCloudDNS) getDomainCreateAndExpiryDate(domainList []*domain.DomainList, domain *dnspod.DomainListItem) (d Domain) {
236+
for _, v := range domainList {
237+
if tea.StringValue(v.DomainName) == tea.StringValue(domain.Name) {
238+
d.CreatedDate = tea.StringValue(v.CreationDate)
239+
d.ExpiryDate = tea.StringValue(v.ExpirationDate)
240+
if d.ExpiryDate != "" {
241+
d.DaysUntilExpiry = carbon.Now().DiffInDays(carbon.Parse(d.ExpiryDate))
242+
}
243+
}
244+
}
245+
return
246+
}

pkg/tools/time.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)