acme-mana-server-go/acme/resource_obj.go
ZhuoQinghui b1adda8a55 feat: 实现域名注册和管理功能
- 新增 ACME客户端功能,支持域名注册和证书申请
- 添加数据库模型和操作,用于存储和管理域名信息
- 实现 API 接口,提供域名注册、获取和分页查询功能
-集成全局错误处理和 panic捕获
- 添加单元测试和集成测试
2025-05-05 03:59:05 +08:00

74 lines
1.9 KiB
Go

package acme
import (
"encoding/base64"
"encoding/json"
"github.com/go-acme/lego/v4/certificate"
)
type ResourceObj struct {
Domain string `json:"domain"`
CertURL string `json:"certUrl"`
CertStableURL string `json:"certStableUrl"`
PrivateKey string `json:"privateKey"` // 使用base64编码
Certificate string `json:"certificate"`
IssuerCertificate string `json:"issuerCertificate"`
CSR string `json:"csr"`
}
func ResourceToJson(resource *certificate.Resource) []byte {
resourceObj := ResourceObj{
Domain: resource.Domain,
CertURL: resource.CertURL,
CertStableURL: resource.CertStableURL,
PrivateKey: base64.StdEncoding.EncodeToString(resource.PrivateKey),
Certificate: base64.StdEncoding.EncodeToString(resource.Certificate),
IssuerCertificate: base64.StdEncoding.EncodeToString(resource.IssuerCertificate),
CSR: base64.StdEncoding.EncodeToString(resource.CSR),
}
resourceJson, err := json.Marshal(resourceObj)
if err != nil {
panic(err)
}
return resourceJson
}
func ResourceFromJson(data []byte) certificate.Resource {
var resourceObj ResourceObj
err := json.Unmarshal(data, &resourceObj)
if err != nil {
panic(err)
}
privateKey, err := base64.StdEncoding.DecodeString(resourceObj.PrivateKey)
if err != nil {
panic(err)
}
cert, err := base64.StdEncoding.DecodeString(resourceObj.Certificate)
if err != nil {
panic(err)
}
issuerCertificate, err := base64.StdEncoding.DecodeString(resourceObj.IssuerCertificate)
if err != nil {
panic(err)
}
csr, err := base64.StdEncoding.DecodeString(resourceObj.CSR)
if err != nil {
panic(err)
}
return certificate.Resource{
Domain: resourceObj.Domain,
CertURL: resourceObj.CertURL,
CertStableURL: resourceObj.CertStableURL,
PrivateKey: privateKey,
Certificate: cert,
IssuerCertificate: issuerCertificate,
CSR: csr,
}
}