forked from yunionio/cloudmux
/
loadbalancerservercertificate.go
139 lines (115 loc) · 4.87 KB
/
loadbalancerservercertificate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package aliyun
import (
"fmt"
"strings"
"time"
"yunion.io/x/cloudmux/pkg/multicloud"
)
type SubjectAlternativeNames struct {
SubjectAlternativeName []string
}
type SLoadbalancerServerCertificate struct {
multicloud.SResourceBase
AliyunTags
region *SRegion
ServerCertificateId string // 服务器证书ID。
ServerCertificateName string // 服务器证书名称。
Fingerprint string // 服务器证书的指纹。
CreateTime string // 服务器证书上传的时间。
CreateTimeStamp uint64 // 服务器证书上传的时间戳。
IsAliCloudCertificate int // 是否是阿里云证书。0代表不是阿里云证书。
AliCloudCertificateName string // 阿里云证书名称。
AliCloudCertificateId string // 阿里云证书ID。
ExpireTime time.Time // 过期时间。
ExpireTimeStamp uint64 // 过期时间戳。
CommonName string // 域名,对应证书的CommonName字段。
SubjectAlternativeNames SubjectAlternativeNames // 数组格式,返回证书的备用域名列表,对应证书的Subject Alternative Name字段,详情请参见SubjectAlternativeNames。
ResourceGroupId string // 实例的企业资源组ID
RegionId string // 负载均衡实例的地域。
}
func (certificate *SLoadbalancerServerCertificate) GetPublickKey() string {
return ""
}
func (certificate *SLoadbalancerServerCertificate) GetPrivateKey() string {
return ""
}
func (certificate *SLoadbalancerServerCertificate) GetName() string {
return certificate.ServerCertificateName
}
func (certificate *SLoadbalancerServerCertificate) GetId() string {
return certificate.ServerCertificateId
}
func (certificate *SLoadbalancerServerCertificate) GetGlobalId() string {
return certificate.GetId()
}
func (certificate *SLoadbalancerServerCertificate) GetStatus() string {
return ""
}
func (certificate *SLoadbalancerServerCertificate) IsEmulated() bool {
return false
}
func (certificate *SLoadbalancerServerCertificate) GetCommonName() string {
return certificate.CommonName
}
func (certificate *SLoadbalancerServerCertificate) GetSubjectAlternativeNames() string {
return strings.Join(certificate.SubjectAlternativeNames.SubjectAlternativeName, ",")
}
func (certificate *SLoadbalancerServerCertificate) GetFingerprint() string {
return fmt.Sprintf("sha1:%s", strings.Replace(certificate.Fingerprint, ":", "", -1))
}
func (certificate *SLoadbalancerServerCertificate) GetExpireTime() time.Time {
return certificate.ExpireTime
}
func (certificate *SLoadbalancerServerCertificate) Refresh() error {
return nil
}
func (region *SRegion) UpdateServerCertificateName(certId, name string) error {
params := map[string]string{}
params["RegionId"] = region.RegionId
params["ServerCertificateId"] = certId
params["ServerCertificateName"] = name
_, err := region.lbRequest("SetServerCertificateName", params)
return err
}
func (certificate *SLoadbalancerServerCertificate) Sync(name string, privateKey string, publicKey string) error {
if certificate.ServerCertificateName != name {
return certificate.region.UpdateServerCertificateName(certificate.ServerCertificateId, name)
}
return nil
}
func (certificate *SLoadbalancerServerCertificate) Delete() error {
return certificate.region.DeleteServerCertificate(certificate.ServerCertificateId)
}
func (region *SRegion) DeleteServerCertificate(certId string) error {
params := map[string]string{}
params["RegionId"] = region.RegionId
params["ServerCertificateId"] = certId
_, err := region.lbRequest("DeleteServerCertificate", params)
return err
}
func (region *SRegion) GetLoadbalancerServerCertificates() ([]SLoadbalancerServerCertificate, error) {
params := map[string]string{}
params["RegionId"] = region.RegionId
body, err := region.lbRequest("DescribeServerCertificates", params)
if err != nil {
return nil, err
}
certificates := []SLoadbalancerServerCertificate{}
return certificates, body.Unmarshal(&certificates, "ServerCertificates", "ServerCertificate")
}
func (certificate *SLoadbalancerServerCertificate) GetProjectId() string {
return certificate.ResourceGroupId
}