Skip to content

poettig/HostingDE-DynDNS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HostingDE-DynDNS

This is a server that accepts GET requests with specific query parameters and interfaces with the hosting.de DNS API in order to update DNS records with regularly changing IP addresses automatically.

Running

Install requirements from requirements.txt either directly for the user or in a venv.

pip install -r requirements.txt

Execute with python, optionally with a different config path.

python3 dyndns.py
python3 dyndns.py -c /path/to/config.toml

An template for the config file is given in config.toml.template.

Instead of binding to an IP and port, technically there is an implementation for unix sockets. However, this was never tested - use at your own risk. The config variable for this is bind_socket.

Help output

> python3 dyndns.py -h
usage: dyndns.py [-h] [-c CONFIG]

DynDNS server providing an interface for updates via generic URL

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        Config file for the DynDNS server. Defaults to 'config.toml' in the current working directory.

Request Format

The format of the necessary GET request is

GET /dyndns?domain=<domain>&ipv4=<ipv4_address>&ipv6=<ipv6_address>&ttl=<ttl>

The query parameters are

parameter required value
domain yes The domain to update.
ipv4 one of [ipv4, ipv6] The IPv4 for the A record of the domain. Must exist in the DNS zone already.
ipv6 one of [ipv4, ipv6] The IPv6 for the AAAA record of the domain. Must exist in the DNS zone already.
ttl no The TTL of the record. If not given, a default value from the config file is used.

Security Considerations

  • This application is not written to run with SSL and does not provide any authentication. Using a reverse proxy for transport encryption and authentication is expected.
  • Records are only updated, never created. This is to prevent this server from creating arbitrary DNS records.
  • Additionally, you can provide a list of allowed domains in the config. This prevents editing different records from the ones you want for DynDNS via a simple GET request.
  • For the hosting.de API token, you can create one by clicking on the user icon on the top right next to your name → Profil → scroll down to "API Keys". You can only select DNS-Service → Zonen → Bearbeiten. There are no additional permissions required, I recommend creating such a least privileges token.

About

DynDNS Server interfacing with the hosting.de API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages