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
 | 
						|
 | 
						|
}
 |