Files
realDynDNS/pkg/dnsProvider/ionos/ionos.go
Timo Behrendt 99361a5ccd feat: mvp (#1)
MVP including features:
* Detect IP change
* Configurable/generic external IP provider
* Configurable/generic DNS provider
* Impl. of plain external IP provider
* Impl. of Ionos DNS provider

Reviewed-on: #1
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2024-04-01 11:50:27 +02:00

41 lines
947 B
Go

package ionosDnsProvider
import (
"errors"
"net"
"realdnydns/model/common"
"realdnydns/pkg/dnsProvider"
ionosAPI "realdnydns/pkg/dnsProvider/ionos/api"
)
type IONOS struct {
API ionosAPI.IonosAPI
}
type IONOSConfig struct {
APIKey string `yaml:"api_key"`
BaseURL string `yaml:"base_url"`
}
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")
}
return &IONOS{
ionosAPI.New(config.APIKey, config.BaseURL),
}, 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)
}