Files
realDynDNS/pkg/dnsProvider/ionos/ionos.go
Timo Behrendt f1458b005b
All checks were successful
CI / test (pull_request) Successful in 1m2s
tmp
2025-01-01 12:44:50 +01:00

62 lines
1.4 KiB
Go

package ionosDnsProvider
import (
"errors"
"net"
"realdnydns/model/common"
"realdnydns/pkg/dnsProvider"
ionosAPI "realdnydns/pkg/dnsProvider/ionos/api"
redis "github.com/redis/go-redis/v9"
)
type IONOS struct {
API ionosAPI.IonosAPI
Redis *redis.Client
}
type IONOSConfig struct {
APIKey string `yaml:"api_key"`
BaseURL string `yaml:"base_url"`
Redis *IONOSRedisConfig
}
type IONOSRedisConfig struct {
Address string `yaml:"host"`
Password string `yaml:"password"`
DB int `yaml:"db"`
}
func NewIonos(config *IONOSConfig) (dnsProvider.DNSProvider, error) {
if config.APIKey == "" {
return nil, errors.New("api_key is required")
}
if config.BaseURL == "" {
return nil, errors.New("base_url is required")
}
var redisClient *redis.Client = nil
if config.Redis != nil {
redisClient = redis.NewClient(&redis.Options{
Addr: config.Redis.Address,
Password: config.Redis.Password,
DB: config.Redis.DB,
})
}
return &IONOS{
ionosAPI.New(config.APIKey, config.BaseURL),
redisClient,
}, nil
}
func (ionos *IONOS) UpdateRecord(tld string, subdomain string, ip net.IP, ttl int, prio int, disabled bool) (*common.ARecord, error) {
return ionos.API.SetARecord(tld, subdomain, ip, ttl, prio, disabled)
}
func (ionos *IONOS) GetRecord(tld string, subdomain string) (*common.ARecord, error) {
return ionos.API.GetARecord(tld, subdomain)
}