Merge branch 'main' into feat/cloud-load-balance

This commit is contained in:
Fu Diwei
2024-10-20 16:48:06 +08:00
78 changed files with 831 additions and 139 deletions

View File

@@ -7,7 +7,7 @@ import (
"github.com/go-acme/lego/v4/providers/dns/alidns"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type aliyun struct {

View File

@@ -9,6 +9,9 @@ import (
"fmt"
"strings"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/app"
"github.com/go-acme/lego/v4/certcrypto"
"github.com/go-acme/lego/v4/certificate"
"github.com/go-acme/lego/v4/challenge"
@@ -16,9 +19,6 @@ import (
"github.com/go-acme/lego/v4/lego"
"github.com/go-acme/lego/v4/registration"
"github.com/pocketbase/pocketbase/models"
"certimate/internal/domain"
"certimate/internal/utils/app"
)
const (
@@ -29,6 +29,8 @@ const (
configTypeCloudflare = "cloudflare"
configTypeNamesilo = "namesilo"
configTypeGodaddy = "godaddy"
configTypePdns = "pdns"
configTypeHttpreq = "httpreq"
)
const defaultSSLProvider = "letsencrypt"
@@ -136,6 +138,10 @@ func Get(record *models.Record) (Applicant, error) {
return NewNamesilo(option), nil
case configTypeGodaddy:
return NewGodaddy(option), nil
case configTypePdns:
return NewPdns(option), nil
case configTypeHttpreq:
return NewHttpreq(option), nil
default:
return nil, errors.New("unknown config type")
}

View File

@@ -7,7 +7,7 @@ import (
"github.com/go-acme/lego/v4/providers/dns/route53"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type aws struct {

View File

@@ -7,7 +7,7 @@ import (
cf "github.com/go-acme/lego/v4/providers/dns/cloudflare"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type cloudflare struct {

View File

@@ -7,7 +7,7 @@ import (
godaddyProvider "github.com/go-acme/lego/v4/providers/dns/godaddy"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type godaddy struct {

View File

@@ -0,0 +1,38 @@
package applicant
import (
"encoding/json"
"fmt"
"os"
"github.com/go-acme/lego/v4/providers/dns/httpreq"
"github.com/usual2970/certimate/internal/domain"
)
type httpReq struct {
option *ApplyOption
}
func NewHttpreq(option *ApplyOption) Applicant {
return &httpReq{
option: option,
}
}
func (a *httpReq) Apply() (*Certificate, error) {
access := &domain.HttpreqAccess{}
json.Unmarshal([]byte(a.option.Access), access)
os.Setenv("HTTPREQ_ENDPOINT", access.Endpoint)
os.Setenv("HTTPREQ_MODE", access.Mode)
os.Setenv("HTTPREQ_USERNAME", access.Username)
os.Setenv("HTTPREQ_PASSWORD", access.Password)
os.Setenv("HTTPREQ_PROPAGATION_TIMEOUT", fmt.Sprintf("%d", a.option.Timeout))
dnsProvider, err := httpreq.NewDNSProvider()
if err != nil {
return nil, err
}
return apply(a.option, dnsProvider)
}

View File

@@ -7,7 +7,7 @@ import (
huaweicloudProvider "github.com/go-acme/lego/v4/providers/dns/huaweicloud"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type huaweicloud struct {

View File

@@ -7,7 +7,7 @@ import (
namesiloProvider "github.com/go-acme/lego/v4/providers/dns/namesilo"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type namesilo struct {

View File

@@ -0,0 +1,36 @@
package applicant
import (
"encoding/json"
"fmt"
"os"
"github.com/go-acme/lego/v4/providers/dns/pdns"
"github.com/usual2970/certimate/internal/domain"
)
type powerdns struct {
option *ApplyOption
}
func NewPdns(option *ApplyOption) Applicant {
return &powerdns{
option: option,
}
}
func (a *powerdns) Apply() (*Certificate, error) {
access := &domain.PdnsAccess{}
json.Unmarshal([]byte(a.option.Access), access)
os.Setenv("PDNS_API_URL", access.ApiUrl)
os.Setenv("PDNS_API_KEY", access.ApiKey)
os.Setenv("PDNS_PROPAGATION_TIMEOUT", fmt.Sprintf("%d", a.option.Timeout))
dnsProvider, err := pdns.NewDNSProvider()
if err != nil {
return nil, err
}
return apply(a.option, dnsProvider)
}

View File

@@ -7,7 +7,7 @@ import (
"github.com/go-acme/lego/v4/providers/dns/tencentcloud"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type tencent struct {

View File

@@ -10,8 +10,8 @@ import (
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"certimate/internal/domain"
"certimate/internal/utils/rand"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/rand"
)
type AliyunCDNDeployer struct {

View File

@@ -1,7 +1,7 @@
/*
* @Author: Bin
* @Date: 2024-09-17
* @FilePath: /certimate/internal/deployer/aliyun_esa.go
* @FilePath: /github.com/usual2970/certimate/internal/deployer/aliyun_esa.go
*/
package deployer
@@ -15,8 +15,8 @@ import (
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"certimate/internal/domain"
"certimate/internal/utils/rand"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/rand"
)
type AliyunESADeployer struct {

View File

@@ -7,7 +7,7 @@ import (
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type AliyunOSSDeployer struct {

View File

@@ -9,9 +9,9 @@ import (
"github.com/pocketbase/pocketbase/models"
"certimate/internal/applicant"
"certimate/internal/domain"
"certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/applicant"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/app"
)
const (

View File

@@ -11,8 +11,8 @@ import (
cdnModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v2/model"
cdnRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v2/region"
"certimate/internal/domain"
uploaderImpl "certimate/internal/pkg/core/uploader/impl"
"github.com/usual2970/certimate/internal/domain"
uploaderImpl "github.com/usual2970/certimate/internal/pkg/core/uploader/impl"
)
type HuaweiCloudCDNDeployer struct {

View File

@@ -9,7 +9,7 @@ import (
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type K8sSecretDeployer struct {

View File

@@ -9,7 +9,7 @@ import (
"path/filepath"
"runtime"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type LocalDeployer struct {

View File

@@ -10,8 +10,8 @@ import (
"github.com/qiniu/go-sdk/v7/auth"
"certimate/internal/domain"
xhttp "certimate/internal/utils/http"
"github.com/usual2970/certimate/internal/domain"
xhttp "github.com/usual2970/certimate/internal/utils/http"
)
const qiniuGateway = "http://api.qiniu.com"

View File

@@ -5,7 +5,7 @@ import (
"github.com/qiniu/go-sdk/v7/auth"
"certimate/internal/applicant"
"github.com/usual2970/certimate/internal/applicant"
)
func Test_qiuniu_uploadCert(t *testing.T) {

View File

@@ -11,7 +11,7 @@ import (
"github.com/pkg/sftp"
sshPkg "golang.org/x/crypto/ssh"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
type SSHDeployer struct {

View File

@@ -12,8 +12,8 @@ import (
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
ssl "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl/v20191205"
"certimate/internal/domain"
"certimate/internal/utils/rand"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/rand"
)
type TencentCDNDeployer struct {

View File

@@ -7,8 +7,8 @@ import (
"fmt"
"net/http"
"certimate/internal/domain"
xhttp "certimate/internal/utils/http"
"github.com/usual2970/certimate/internal/domain"
xhttp "github.com/usual2970/certimate/internal/utils/http"
)
type WebhookDeployer struct {

View File

@@ -41,6 +41,18 @@ type GodaddyAccess struct {
ApiSecret string `json:"apiSecret"`
}
type PdnsAccess struct {
ApiUrl string `json:"apiUrl"`
ApiKey string `json:"apiKey"`
}
type HttpreqAccess struct {
Endpoint string `json:"endpoint"`
Mode string `json:"mode"`
Username string `json:"username"`
Password string `json:"password"`
}
type LocalAccess struct{}
type SSHAccess struct {

View File

@@ -7,9 +7,9 @@ import (
"github.com/pocketbase/pocketbase/models"
"certimate/internal/applicant"
"certimate/internal/deployer"
"certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/applicant"
"github.com/usual2970/certimate/internal/deployer"
"github.com/usual2970/certimate/internal/utils/app"
)
type Phase string

View File

@@ -6,7 +6,7 @@ import (
"github.com/pocketbase/pocketbase/models"
"certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/utils/app"
)
func create(ctx context.Context, record *models.Record) error {

View File

@@ -3,7 +3,7 @@ package domains
import (
"github.com/pocketbase/pocketbase/core"
"certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/utils/app"
)
const tableName = "domains"

View File

@@ -5,9 +5,9 @@ import (
"github.com/pocketbase/pocketbase/models"
"certimate/internal/applicant"
"certimate/internal/utils/app"
"certimate/internal/utils/xtime"
"github.com/usual2970/certimate/internal/applicant"
"github.com/usual2970/certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/utils/xtime"
)
type historyItem struct {

View File

@@ -3,8 +3,8 @@ package domains
import (
"context"
"certimate/internal/notify"
"certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/notify"
"github.com/usual2970/certimate/internal/utils/app"
)
func InitSchedule() {

View File

@@ -8,8 +8,8 @@ import (
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase/models"
"certimate/internal/utils/app"
"certimate/internal/utils/xtime"
"github.com/usual2970/certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/utils/xtime"
)
type msg struct {

View File

@@ -5,8 +5,8 @@ import (
"fmt"
"strconv"
"certimate/internal/domain"
"certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/app"
notifyPackage "github.com/nikoksr/notify"
"github.com/nikoksr/notify/service/dingding"

View File

@@ -4,7 +4,7 @@ import (
"context"
"fmt"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
)
const (

View File

@@ -3,8 +3,8 @@ package repository
import (
"context"
"certimate/internal/domain"
"certimate/internal/utils/app"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/app"
)
type SettingRepository struct{}

View File

@@ -3,8 +3,8 @@ package rest
import (
"context"
"certimate/internal/domain"
"certimate/internal/utils/resp"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/resp"
"github.com/labstack/echo/v5"
)

View File

@@ -1,9 +1,9 @@
package routes
import (
"certimate/internal/notify"
"certimate/internal/repository"
"certimate/internal/rest"
"github.com/usual2970/certimate/internal/notify"
"github.com/usual2970/certimate/internal/repository"
"github.com/usual2970/certimate/internal/rest"
"github.com/labstack/echo/v5"
"github.com/pocketbase/pocketbase/apis"

View File

@@ -3,7 +3,7 @@ package resp
import (
"net/http"
"certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain"
"github.com/labstack/echo/v5"
)