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>
This commit was merged in pull request #1.
This commit is contained in:
40
pkg/dnsProvider/ionos/ionos.go
Normal file
40
pkg/dnsProvider/ionos/ionos.go
Normal file
@@ -0,0 +1,40 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user