Send ip address updates to DNS services.
The following sections describe how to install and run update_dns_records.
Run the following shell commands:
git clone https://github.com/w-lfpup/update_dns_records
cargo install --path update_dns_recordsAll services are directly related to features.
All features (and therefore all services) are included by default.
Minimal installations should use the --features flag.
For example, the following script will install update_dns_records but only support dyndns2:
cargo install --path update_dns_records --features dyndns2The update_dns_records application requires a valid JSON configuration to run.
An example configuration example can be found at
./update_dns_records.example.json
{
"results_filepath": "./path_to_results.json",
"ip_services": [
["https://checkip.amazonaws.com/", "address_as_body"],
["https://api.ipify.org", "address_as_body"]
]
}The results_filepath and ip_services properties are required.
The results_filepath property can be relative to the location of the config file.
The ip_services property defines a list of services with a url and its response_type.
The update_dns_records application accepts one argument defining a path to a configuration file.
update_dns_records <path_to_json_config>
The results of the update_dns_records will be written to the results_filepath property of the config.
Paths can be absolute or relative to the configuration file.
The update_dns_records application provides support for the following services:
Use the following schema to add dyndns2 domains to the config.
{
"domain_services": {
"dyndns2": [{
"service_uri": "string",
"hostname": "string",
"username": "string",
"password": "string"
}]
}
}Standard dyndns2 path and parameters will be appended to the authority of the service_uri property.
So https://example-ddns-service.com will become:
https://example-ddns-service.com/nic/update?hostname=subdomain.yourdomain.com&myip=1.2.3.4
Use the following schema to add cloudflare domains to the config.
{
"domain_services": {
"cloudflare": [{
"name": "yourdomain.com",
"email": "string",
"zone_id": "string",
"dns_record_id": "string",
"api_token": "string",
"type": "string, record type ie: A",
"proxied": "bool | null",
"comment": "string | null",
"tags": "[]string | null",
"ttl": "number | null",
}]
}
}BSD 3-Clause License