46 lines
1.5 KiB
Markdown
46 lines
1.5 KiB
Markdown
# VYDNS
|
|
|
|
A simple DynDNS v2 client written in Python, compatible with providers such as OVH DynHost.
|
|
|
|
## Features
|
|
|
|
- Periodically checks the public IP address
|
|
- Updates DNS records only when the IP changes
|
|
- Uses a local cache to avoid unnecessary updates
|
|
- No external dependencies except `requests` module
|
|
|
|
## Usage
|
|
|
|
Run the script with Python. It will periodically:
|
|
|
|
- Query a web endpoint that returns the public IP in plain text
|
|
- Compare it with the cached IP
|
|
- If the IP has not changed, sleep for the configured delay
|
|
- If the IP has changed, update the DNS records and refresh the cache
|
|
- If no cache exists, create it and perform an initial update
|
|
|
|
## Configuration
|
|
|
|
The script relies on a JSON configuration file named `config.json` located in the working directory.
|
|
|
|
It must contain the following keys:
|
|
|
|
- `ip_server`: URL of the endpoint used to retrieve the public IP (must return plain text)
|
|
- `dns_endpoint`: DynDNS v2 API endpoint of the provider
|
|
- `username`: DynDNS account username
|
|
- `password`: DynDNS account password
|
|
- `domains`: list of domain names to update
|
|
- `delay`: interval in seconds between checks
|
|
|
|
You can find an example configuration file in this repo.
|
|
**Warning:** the password is stored in plain text. Changing config file permissions is recommended.
|
|
|
|
## Supported DynDNS providers
|
|
|
|
To this day, these DynDNS providers have been found to work well with the script:
|
|
- OVH
|
|
|
|
## License
|
|
|
|
This script and the provided examples are under the MIT license.
|