mirror of https://github.com/allinssl/allinssl
godaddy
parent
fe363955d8
commit
c557293c78
|
@ -17,6 +17,7 @@ import (
|
||||||
"github.com/go-acme/lego/v4/providers/dns/alidns"
|
"github.com/go-acme/lego/v4/providers/dns/alidns"
|
||||||
"github.com/go-acme/lego/v4/providers/dns/baiducloud"
|
"github.com/go-acme/lego/v4/providers/dns/baiducloud"
|
||||||
"github.com/go-acme/lego/v4/providers/dns/cloudflare"
|
"github.com/go-acme/lego/v4/providers/dns/cloudflare"
|
||||||
|
"github.com/go-acme/lego/v4/providers/dns/godaddy"
|
||||||
"github.com/go-acme/lego/v4/providers/dns/huaweicloud"
|
"github.com/go-acme/lego/v4/providers/dns/huaweicloud"
|
||||||
"github.com/go-acme/lego/v4/providers/dns/tencentcloud"
|
"github.com/go-acme/lego/v4/providers/dns/tencentcloud"
|
||||||
"github.com/go-acme/lego/v4/providers/dns/volcengine"
|
"github.com/go-acme/lego/v4/providers/dns/volcengine"
|
||||||
|
@ -92,7 +93,12 @@ func GetDNSProvider(providerName string, creds map[string]string) (challenge.Pro
|
||||||
config.AccessKey = creds["access_key"]
|
config.AccessKey = creds["access_key"]
|
||||||
config.SecretKey = creds["secret_key"]
|
config.SecretKey = creds["secret_key"]
|
||||||
return volcengine.NewDNSProviderConfig(config)
|
return volcengine.NewDNSProviderConfig(config)
|
||||||
|
case "godaddy":
|
||||||
|
config := godaddy.NewDefaultConfig()
|
||||||
|
config.APIKey = creds["api_key"]
|
||||||
|
config.APISecret = creds["api_secret"]
|
||||||
|
return godaddy.NewDNSProviderConfig(config)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("不支持的 DNS Provider: %s", providerName)
|
return nil, fmt.Errorf("不支持的 DNS Provider: %s", providerName)
|
||||||
}
|
}
|
||||||
|
@ -123,7 +129,7 @@ func GetAcmeClient(db *public.Sqlite, email, algorithm, proxy, eabId string, log
|
||||||
}
|
}
|
||||||
ca = eabData["ca"].(string)
|
ca = eabData["ca"].(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
user, err := LoadUserFromDB(db, email, ca)
|
user, err := LoadUserFromDB(db, email, ca)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Debug("acme账号不存在,注册新账号")
|
logger.Debug("acme账号不存在,注册新账号")
|
||||||
|
@ -172,7 +178,7 @@ func GetAcmeClient(db *public.Sqlite, email, algorithm, proxy, eabId string, log
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
user.Registration = reg
|
user.Registration = reg
|
||||||
|
|
||||||
err = SaveUserToDB(db, user, ca)
|
err = SaveUserToDB(db, user, ca)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -250,7 +256,7 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
email, ok := cfg["email"].(string)
|
email, ok := cfg["email"].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("参数错误:email")
|
return nil, fmt.Errorf("参数错误:email")
|
||||||
|
@ -296,7 +302,7 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
|
||||||
default:
|
default:
|
||||||
eabId = ""
|
eabId = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
var providerID string
|
var providerID string
|
||||||
switch v := cfg["provider_id"].(type) {
|
switch v := cfg["provider_id"].(type) {
|
||||||
case float64:
|
case float64:
|
||||||
|
@ -322,7 +328,7 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
|
||||||
return nil, fmt.Errorf("参数错误:name_server")
|
return nil, fmt.Errorf("参数错误:name_server")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var skipCheck bool
|
var skipCheck bool
|
||||||
if cfg["skip_check"] == nil {
|
if cfg["skip_check"] == nil {
|
||||||
// 默认跳过预检查
|
// 默认跳过预检查
|
||||||
|
@ -357,12 +363,12 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
|
||||||
return nil, fmt.Errorf("参数错误:skip_check")
|
return nil, fmt.Errorf("参数错误:skip_check")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
domainArr := strings.Split(domains, ",")
|
domainArr := strings.Split(domains, ",")
|
||||||
for i := range domainArr {
|
for i := range domainArr {
|
||||||
domainArr[i] = strings.TrimSpace(domainArr[i])
|
domainArr[i] = strings.TrimSpace(domainArr[i])
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取上次申请的证书
|
// 获取上次申请的证书
|
||||||
runId, ok := cfg["_runId"].(string)
|
runId, ok := cfg["_runId"].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -395,13 +401,13 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// DNS 验证
|
// DNS 验证
|
||||||
provider, err := GetDNSProvider(providerStr, providerConfig)
|
provider, err := GetDNSProvider(providerStr, providerConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("创建 DNS provider 失败: %v", err)
|
return nil, fmt.Errorf("创建 DNS provider 失败: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if skipCheck {
|
if skipCheck {
|
||||||
// 跳过预检查
|
// 跳过预检查
|
||||||
err = client.Challenge.SetDNS01Provider(provider,
|
err = client.Challenge.SetDNS01Provider(provider,
|
||||||
|
@ -418,7 +424,7 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// fmt.Println(strings.Split(domains, ","))
|
// fmt.Println(strings.Split(domains, ","))
|
||||||
request := certificate.ObtainRequest{
|
request := certificate.ObtainRequest{
|
||||||
Domains: domainArr,
|
Domains: domainArr,
|
||||||
|
@ -428,18 +434,18 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
certStr := string(certObj.Certificate)
|
certStr := string(certObj.Certificate)
|
||||||
keyStr := string(certObj.PrivateKey)
|
keyStr := string(certObj.PrivateKey)
|
||||||
issuerCertStr := string(certObj.IssuerCertificate)
|
issuerCertStr := string(certObj.IssuerCertificate)
|
||||||
|
|
||||||
// 保存证书和私钥
|
// 保存证书和私钥
|
||||||
data := map[string]any{
|
data := map[string]any{
|
||||||
"cert": certStr,
|
"cert": certStr,
|
||||||
"key": keyStr,
|
"key": keyStr,
|
||||||
"issuerCert": issuerCertStr,
|
"issuerCert": issuerCertStr,
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = cert.SaveCert("workflow", keyStr, certStr, issuerCertStr, runId)
|
_, err = cert.SaveCert("workflow", keyStr, certStr, issuerCertStr, runId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -28,9 +28,9 @@ func init() {
|
||||||
fmt.Fprintf(os.Stderr, "切换目录失败: %v\n", err)
|
fmt.Fprintf(os.Stderr, "切换目录失败: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
os.MkdirAll("data", os.ModePerm)
|
os.MkdirAll("data", os.ModePerm)
|
||||||
|
|
||||||
dbPath := "data/data.db"
|
dbPath := "data/data.db"
|
||||||
_, _ = filepath.Abs(dbPath)
|
_, _ = filepath.Abs(dbPath)
|
||||||
// fmt.Println("数据库路径:", absPath)
|
// fmt.Println("数据库路径:", absPath)
|
||||||
|
@ -201,15 +201,15 @@ func init() {
|
||||||
INSERT INTO access_type (name, type) VALUES ('ssh', 'host');
|
INSERT INTO access_type (name, type) VALUES ('ssh', 'host');
|
||||||
INSERT INTO access_type (name, type) VALUES ('btpanel', 'host');
|
INSERT INTO access_type (name, type) VALUES ('btpanel', 'host');
|
||||||
INSERT INTO access_type (name, type) VALUES ('1panel', 'host');`)
|
INSERT INTO access_type (name, type) VALUES ('1panel', 'host');`)
|
||||||
|
|
||||||
uuidStr := public.GenerateUUID()
|
uuidStr := public.GenerateUUID()
|
||||||
randomStr := public.RandomString(8)
|
randomStr := public.RandomString(8)
|
||||||
|
|
||||||
port, err := public.GetFreePort()
|
port, err := public.GetFreePort()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
port = 20773
|
port = 20773
|
||||||
}
|
}
|
||||||
|
|
||||||
Isql := fmt.Sprintf(
|
Isql := fmt.Sprintf(
|
||||||
`INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ('log_path', 'logs/ALLinSSL.log', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);
|
`INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ('log_path', 'logs/ALLinSSL.log', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);
|
||||||
INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ( 'workflow_log_path', 'logs/workflows/', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);
|
INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ( 'workflow_log_path', 'logs/workflows/', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);
|
||||||
|
@ -218,26 +218,28 @@ INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES
|
||||||
INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ('session_key', '%s', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);
|
INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ('session_key', '%s', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);
|
||||||
INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ('secure', '/%s', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);
|
INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ('secure', '/%s', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);
|
||||||
INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ('port', '%d', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);`, uuidStr, randomStr, port)
|
INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES ('port', '%d', '2025-04-15 15:58', '2025-04-15 15:58', 1, null);`, uuidStr, randomStr, port)
|
||||||
|
|
||||||
insertDefaultData(db, "settings", Isql)
|
insertDefaultData(db, "settings", Isql)
|
||||||
|
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "cloudflare", "type": "host"}, []string{"name", "type"}, []any{"cloudflare", "host"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "cloudflare", "type": "host"}, []string{"name", "type"}, []any{"cloudflare", "host"})
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "cloudflare", "type": "dns"}, []string{"name", "type"}, []any{"cloudflare", "dns"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "cloudflare", "type": "dns"}, []string{"name", "type"}, []any{"cloudflare", "dns"})
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "huaweicloud", "type": "host"}, []string{"name", "type"}, []any{"huaweicloud", "host"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "huaweicloud", "type": "host"}, []string{"name", "type"}, []any{"huaweicloud", "host"})
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "huaweicloud", "type": "dns"}, []string{"name", "type"}, []any{"huaweicloud", "dns"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "huaweicloud", "type": "dns"}, []string{"name", "type"}, []any{"huaweicloud", "dns"})
|
||||||
|
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "baidu", "type": "host"}, []string{"name", "type"}, []any{"baidu", "host"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "baidu", "type": "host"}, []string{"name", "type"}, []any{"baidu", "host"})
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "baidu", "type": "dns"}, []string{"name", "type"}, []any{"baidu", "dns"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "baidu", "type": "dns"}, []string{"name", "type"}, []any{"baidu", "dns"})
|
||||||
|
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "btwaf", "type": "host"}, []string{"name", "type"}, []any{"btwaf", "host"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "btwaf", "type": "host"}, []string{"name", "type"}, []any{"btwaf", "host"})
|
||||||
|
|
||||||
// 雷池
|
// 雷池
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "safeline", "type": "host"}, []string{"name", "type"}, []any{"safeline", "host"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "safeline", "type": "host"}, []string{"name", "type"}, []any{"safeline", "host"})
|
||||||
// 西部数码
|
// 西部数码
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "westcn", "type": "dns"}, []string{"name", "type"}, []any{"westcn", "dns"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "westcn", "type": "dns"}, []string{"name", "type"}, []any{"westcn", "dns"})
|
||||||
// 火山引擎
|
// 火山引擎
|
||||||
InsertIfNotExists(db, "access_type", map[string]any{"name": "volcengine", "type": "dns"}, []string{"name", "type"}, []any{"volcengine", "dns"})
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "volcengine", "type": "dns"}, []string{"name", "type"}, []any{"volcengine", "dns"})
|
||||||
|
// godaddy
|
||||||
|
InsertIfNotExists(db, "access_type", map[string]any{"name": "godaddy", "type": "dns"}, []string{"name", "type"}, []any{"godaddy", "dns"})
|
||||||
|
|
||||||
err = sqlite_migrate.EnsureDatabaseWithTables(
|
err = sqlite_migrate.EnsureDatabaseWithTables(
|
||||||
"data/site_monitor.db",
|
"data/site_monitor.db",
|
||||||
"data/data.db",
|
"data/data.db",
|
||||||
|
@ -246,7 +248,7 @@ INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("错误:", err)
|
fmt.Println("错误:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
db1, err := sql.Open("sqlite", "data/site_monitor.db")
|
db1, err := sql.Open("sqlite", "data/site_monitor.db")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// fmt.Println("创建数据库失败:", err)
|
// fmt.Println("创建数据库失败:", err)
|
||||||
|
@ -289,7 +291,7 @@ func insertDefaultData(db *sql.DB, table, insertSQL string) {
|
||||||
// fmt.Println("检查数据行数失败:", err)
|
// fmt.Println("检查数据行数失败:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果表为空,则插入默认数据
|
// 如果表为空,则插入默认数据
|
||||||
if count == 0 {
|
if count == 0 {
|
||||||
// fmt.Println("表为空,插入默认数据...")
|
// fmt.Println("表为空,插入默认数据...")
|
||||||
|
@ -323,7 +325,7 @@ func InsertIfNotExists(
|
||||||
whereArgs = append(whereArgs, val)
|
whereArgs = append(whereArgs, val)
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 判断是否存在
|
// 2. 判断是否存在
|
||||||
query := fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM %s WHERE %s)", table, whereClause)
|
query := fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM %s WHERE %s)", table, whereClause)
|
||||||
var exists bool
|
var exists bool
|
||||||
|
@ -334,7 +336,7 @@ func InsertIfNotExists(
|
||||||
if exists {
|
if exists {
|
||||||
return nil // 已存在
|
return nil // 已存在
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 构建 INSERT 语句
|
// 3. 构建 INSERT 语句
|
||||||
columnList := ""
|
columnList := ""
|
||||||
placeholderList := ""
|
placeholderList := ""
|
||||||
|
@ -347,11 +349,11 @@ func InsertIfNotExists(
|
||||||
placeholderList += "?"
|
placeholderList += "?"
|
||||||
}
|
}
|
||||||
insertSQL := fmt.Sprintf("INSERT INTO %s (%s) VALUES (%s)", table, columnList, placeholderList)
|
insertSQL := fmt.Sprintf("INSERT INTO %s (%s) VALUES (%s)", table, columnList, placeholderList)
|
||||||
|
|
||||||
_, err = db.Exec(insertSQL, insertValues...)
|
_, err = db.Exec(insertSQL, insertValues...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("insert failed: %w", err)
|
return fmt.Errorf("insert failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue