53 lines
1.6 KiB
Go
53 lines
1.6 KiB
Go
package SafeLine
|
|
|
|
import (
|
|
"SafeLine-Acme/internal/app/logger"
|
|
"SafeLine-Acme/pkg/utils"
|
|
"bytes"
|
|
"io"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
func (safeLine *Object) GetCertNodes() []Nodes {
|
|
header := http.Header{
|
|
"X-SLCE-API-TOKEN": []string{safeLine.ApiToken},
|
|
}
|
|
resp, err := utils.Request("GET", safeLine.SSLCertUrl(), nil, header)
|
|
if err != nil {
|
|
logger.Error.Printf("请求接口 %s/api/open/cert%s 时发生错误: %s%s%s", logger.Cyan, logger.Reset, logger.Red, err, logger.Reset)
|
|
os.Exit(0)
|
|
}
|
|
defer resp.Body.Close()
|
|
data, _ := io.ReadAll(resp.Body)
|
|
var listResp ListResp
|
|
listResp.Unmarshal(data)
|
|
return listResp.Data.Nodes
|
|
}
|
|
|
|
func (safeLine *Object) UpdateCert(email string, Certificate, PrivateKey []byte, cert Nodes) ([]string, []string) {
|
|
|
|
header := http.Header{
|
|
"X-SLCE-API-TOKEN": []string{safeLine.ApiToken},
|
|
"Content-Type": []string{"application/json"},
|
|
}
|
|
var updateReq UpdateReq
|
|
updateReq.Create(Certificate, PrivateKey, cert.Domains, email, cert.Id, cert.Type)
|
|
resp, err := utils.Request("POST", safeLine.SSLCertUrl(), bytes.NewReader(updateReq.Marshal()), header)
|
|
if err != nil {
|
|
logger.Error.Printf("更新证书时发生错误: %s%s%s", logger.Red, err, logger.Reset)
|
|
return nil, nil
|
|
}
|
|
defer resp.Body.Close()
|
|
data, _ := io.ReadAll(resp.Body)
|
|
var updateResp UpdateResp
|
|
updateResp.Unmarshal(data)
|
|
if updateResp.Msg != "" {
|
|
logger.Error.Printf("域名 %s%s%s 证书更新失败: %s%s%s", logger.Cyan, cert.Domains, logger.Reset, logger.Red, updateResp.Msg, logger.Reset)
|
|
return nil, cert.Domains
|
|
}
|
|
logger.Success.Printf("域名 %s%s%s 证书更新成功!", logger.Cyan, cert.Domains, logger.Reset)
|
|
return cert.Domains, nil
|
|
|
|
}
|