重构项目
This commit is contained in:
61
internal/moudle/ApplyCert.go
Normal file
61
internal/moudle/ApplyCert.go
Normal file
@ -0,0 +1,61 @@
|
||||
package moudle
|
||||
|
||||
import (
|
||||
"SafelineAPI/internal/app/logger"
|
||||
"SafelineAPI/internal/class/MyUser"
|
||||
"crypto/ecdsa"
|
||||
"crypto/elliptic"
|
||||
"crypto/rand"
|
||||
|
||||
"github.com/go-acme/lego/v4/certcrypto"
|
||||
"github.com/go-acme/lego/v4/certificate"
|
||||
"github.com/go-acme/lego/v4/challenge"
|
||||
"github.com/go-acme/lego/v4/lego"
|
||||
"github.com/go-acme/lego/v4/registration"
|
||||
)
|
||||
|
||||
func ApplyCert(domains []string, email string, provider challenge.Provider) ([]byte, []byte, bool) {
|
||||
privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
|
||||
if err != nil {
|
||||
logger.Error.Printf("申请 %s%s%s 证书时发生错误: %s%s%s", logger.Cyan, domains, logger.Reset, logger.Red, err, logger.Reset)
|
||||
return nil, nil, true
|
||||
}
|
||||
|
||||
myUser := MyUser.MyUser{
|
||||
Email: email,
|
||||
Key: privateKey,
|
||||
}
|
||||
|
||||
config := lego.NewConfig(&myUser)
|
||||
config.Certificate.KeyType = certcrypto.RSA2048
|
||||
client, err := lego.NewClient(config)
|
||||
if err != nil {
|
||||
logger.Error.Printf("申请 %s%s%s 证书时发生错误: %s%s%s", logger.Cyan, domains, logger.Reset, logger.Red, err, logger.Reset)
|
||||
return nil, nil, true
|
||||
}
|
||||
err = client.Challenge.SetDNS01Provider(provider)
|
||||
if err != nil {
|
||||
logger.Error.Printf("申请 %s%s%s 证书时发生错误: %s%s%s", logger.Cyan, domains, logger.Reset, logger.Red, err, logger.Reset)
|
||||
return nil, nil, true
|
||||
}
|
||||
|
||||
reg, err := client.Registration.Register(registration.RegisterOptions{TermsOfServiceAgreed: true})
|
||||
if err != nil {
|
||||
logger.Error.Printf("申请 %s%s%s 证书时发生错误: %s%s%s", logger.Cyan, domains, logger.Reset, logger.Red, err, logger.Reset)
|
||||
return nil, nil, true
|
||||
}
|
||||
|
||||
myUser.Registration = reg
|
||||
request := certificate.ObtainRequest{
|
||||
Domains: domains,
|
||||
Bundle: true,
|
||||
}
|
||||
|
||||
certResource, err := client.Certificate.Obtain(request)
|
||||
if err != nil {
|
||||
logger.Error.Printf("申请 %s%s%s 证书时发生错误: %s%s%s", logger.Cyan, domains, logger.Reset, logger.Red, err, logger.Reset)
|
||||
return nil, nil, true
|
||||
}
|
||||
|
||||
return certResource.Certificate, certResource.PrivateKey, false
|
||||
}
|
||||
23
internal/moudle/UpdateCert.go
Normal file
23
internal/moudle/UpdateCert.go
Normal file
@ -0,0 +1,23 @@
|
||||
package moudle
|
||||
|
||||
import (
|
||||
"SafelineAPI/internal/app/SafelineRequest"
|
||||
"SafelineAPI/internal/app/logger"
|
||||
"SafelineAPI/internal/class/config"
|
||||
"SafelineAPI/pkg/utils"
|
||||
"bytes"
|
||||
)
|
||||
|
||||
func UpdateCert(conf config.Config, email string, Certificate, PrivateKey []byte, cert SafelineRequest.Nodes) ([]string, []string) {
|
||||
var upsertReq SafelineRequest.UpsertReq
|
||||
upsertReq.Create(Certificate, PrivateKey, cert.Domains, email, cert.Id, cert.Type)
|
||||
|
||||
body := bytes.NewReader(upsertReq.Marshal())
|
||||
result := utils.Upsert(conf.Server.Host.Url(), conf.Server.ApiToken.String(), body)
|
||||
if result.Msg != "" {
|
||||
logger.Error.Printf("域名 %s%s%s 证书更新失败: %s%s%s", logger.Cyan, cert.Domains, logger.Reset, logger.Red, result.Msg, logger.Reset)
|
||||
return nil, cert.Domains
|
||||
}
|
||||
logger.Success.Printf("域名 %s%s%s 证书更新成功!", logger.Cyan, cert.Domains, logger.Reset)
|
||||
return cert.Domains, nil
|
||||
}
|
||||
18
internal/moudle/checkNodes.go
Normal file
18
internal/moudle/checkNodes.go
Normal file
@ -0,0 +1,18 @@
|
||||
package moudle
|
||||
|
||||
import (
|
||||
"SafelineAPI/internal/app/SafelineRequest"
|
||||
"time"
|
||||
)
|
||||
|
||||
func CheckNodes(nodes []SafelineRequest.Nodes, n int) []SafelineRequest.Nodes {
|
||||
var need []SafelineRequest.Nodes
|
||||
date := time.Now()
|
||||
for _, node := range nodes {
|
||||
days := int(node.ValidBefore.Sub(date).Hours() / 24)
|
||||
if days <= n {
|
||||
need = append(need, node)
|
||||
}
|
||||
}
|
||||
return need
|
||||
}
|
||||
18
internal/moudle/chooseDNSProvider.go
Normal file
18
internal/moudle/chooseDNSProvider.go
Normal file
@ -0,0 +1,18 @@
|
||||
package moudle
|
||||
|
||||
//func ChooseDNSProvider(config DNSProvider.Config) (challenge.Provider, error) {
|
||||
// if config.ProviderName == "TencentCloud" {
|
||||
// return config.TencentCloud.Provider()
|
||||
// } else if config.ProviderName == "AliCloud" {
|
||||
// return config.AliCloud.Provider()
|
||||
// } else if config.ProviderName == "HuaweiCloud" {
|
||||
// return config.HuaweiCloud.Provider()
|
||||
// } else if config.ProviderName == "WestCN" {
|
||||
// return config.WestCN.Provider()
|
||||
// } else if config.ProviderName == "RainYun" {
|
||||
// return config.RainYun.Provider()
|
||||
// } else if config.ProviderName == "Dode" {
|
||||
// return config.Dode.Provider()
|
||||
// }
|
||||
// return nil, errors.New("未正确设置 DNS 服务提供商")
|
||||
//}
|
||||
Reference in New Issue
Block a user