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>
41 lines
947 B
Go
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)
|
|
}
|