Files
goodBaby/drivers/alidns/tool.go
T

56 lines
1.9 KiB
Go
Raw Permalink Normal View History

2026-08-28 13:51:51 +08:00
package alidns
import (
2026-08-30 09:13:15 +08:00
"encoding/json"
2026-08-28 13:51:51 +08:00
alidns "github.com/alibabacloud-go/alidns-20150109/v5/client"
2026-08-30 09:13:15 +08:00
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
2026-08-28 13:51:51 +08:00
"github.com/alibabacloud-go/tea/tea"
"github.com/aliyun/credentials-go/credentials"
"github.com/ssdomei232/goodBaby/handler/db"
"github.com/ssdomei232/goodBaby/model"
)
2026-08-30 16:03:32 +08:00
// getAliDNSClient initializes and returns an Alibaba Cloud DNS client based on the provided rule's account configuration. It retrieves the account configuration from the database, sets up the necessary credentials, and creates a new client instance for interacting with Alibaba Cloud DNS services.
func getAliDNSClientFromRule(rule *model.Rule) (client *alidns.Client, err error) {
2026-08-28 13:51:51 +08:00
var accountConfig AliDNSAccount
// get config
if err := db.LoadAccountConfig(rule.AccountID, &accountConfig); err != nil {
return nil, err
}
2026-08-30 16:03:32 +08:00
return getAliDNSClient(accountConfig.AK, accountConfig.SK)
}
func getAliDNSClient(ak string, sk string) (client *alidns.Client, err error) {
2026-08-28 13:51:51 +08:00
// init aliyun account config
credentialsConfig := new(credentials.Config).
SetType("access_key").
2026-08-30 16:03:32 +08:00
SetAccessKeyId(ak).
SetAccessKeySecret(sk)
2026-08-28 13:51:51 +08:00
akCredential, err := credentials.NewCredential(credentialsConfig)
if err != nil {
return nil, err
}
config := &openapi.Config{}
config.Credential = akCredential
config.Endpoint = tea.String("alidns.aliyuncs.com")
// create aliyun account client
client, _ = alidns.NewClient(config)
return client, nil
}
2026-08-30 09:13:15 +08:00
2026-08-30 16:03:32 +08:00
// getDeleteRecordConfig retrieves the configuration for deleting DNS records from the provided rule. It unmarshals the rule's configuration JSON into a DeleteRecordConfig structure and returns it.
2026-08-30 09:13:15 +08:00
func getDeleteRecordConfig(rule *model.Rule) (*DeleteRecordConfig, error) {
var deleteRecordConfig DeleteRecordConfig
if err := json.Unmarshal([]byte(rule.ConfigJson), &deleteRecordConfig); err != nil {
return nil, err
}
return &deleteRecordConfig, nil
}