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:
2024-04-01 11:50:27 +02:00
committed by t.behrendt
parent 90369bf147
commit 99361a5ccd
23 changed files with 1521 additions and 0 deletions

View File

@@ -1,2 +1,55 @@
# realDynDNS
RealDynDNS aims to be a replacement to "classical" dynDNS solutions that offer a subdomain. Instead realDynDns actually changes your DNS entries.
This service requires your DNS provider to expose an API that allows your DNS entries to be changed.
A service that provides your current external IP is also required.
## Configuration
The configuration is done via a YAML file called `config.yaml`. The following example shows the configuration for a domain with two subdomains.
Configuration of the IP provider and the DNS provider is mandatory.
The `check_interval` is mandatory and follows the cron syntax including seconds. It defines how often the IP is checked and the DNS entries are updated. If you don't own the external ip provider, please be nice and don't set the interval too low.
You may configure multiple top level domains with multiple subdomains. If you also want the top level domain to be updated, add it to the subdomains list with an `@`.
```yaml
ip_provider:
type: plain
config:
url: https://ifconfig.me
dns_provider:
type: ionos
config:
api_key: <your-api-key>
base_url: https://api.hosting.ionos.com/dns
domains:
- tld: example.com
subdomains:
- "@"
- www
check_interval: 0 0 0/6 * * * *
```
## DNS Providers
The DNS provider abstracts the API of your DNS provider. Currently the following providers are supported:
### IONOS
IONOS requires two configuration parameters. You can get your API key [here](https://developer.hosting.ionos.com/docs/getstarted).
```yaml
api_key: <your-api-key>
base_url: https://api.hosting.ionos.com/dns
```
## External IP Providers
The external IP provider is used to get your current external IP. Currently the following providers are supported:
### Plain
Any provider that returns your IP as plain text can be used. The following configuration is required:
```yaml
url: <your-providers-URL>
```
Examples for providers are:
- https://ifconfig.me
- https://api.ipify.org