godaddy_ddns/readme.md

69 lines
1.8 KiB
Markdown
Raw Normal View History

2021-12-21 05:47:47 -08:00
# GoDaddy DDNS
2021-12-26 16:12:32 -08:00
![godaddy-ddns](https://user-images.githubusercontent.com/4237627/147422997-f72018be-7f60-4e56-9a52-d2ac81e0dbd5.png)
2021-12-21 05:47:47 -08:00
2021-12-26 16:12:32 -08:00
## What is this?
It's a Rust application to update GoDaddy DNS Records via REST API.
2021-12-26 04:00:39 -08:00
2021-12-26 16:12:32 -08:00
## Usage
It order for the application to work, there needs to be:
* Environment variables:
* `DOMAIN` - The domain to update
* `KEY` - GoDaddy API Key
* `SECRET` - GoDaddy API SECRET
Info about how to generate the **KEY** and the **SECRET** can be found here: https://developer.godaddy.com/getstarted
* A file called `records.json` placed in `$HOME/.godaddy-ddns` with the following structure:
2021-12-26 04:00:39 -08:00
```json
{
"records":
[
{
"name": string,
"record_type": string,
"data": string, // Optional
"port": number, // Optional - SRV Only.
"priority": number, // Optional - MX and SRV Only.
"protocol": string, // Optional - SRV Only.
"service": string, // Optional - SRV Only.
"ttl": number,
"interpolate": boolean, // Optional
"weight": number // Optional - SRV Only.
}
]
}
```
### Fields of interest
* name: `{string}` - Name of the record.
* record_type: `{string}` - Type of the record (A, AAAA, CAA, CNAME, MX, NS, SRV, TXT).
* data: `{string}` (optional) - Value of the record. (Useful in case of a hard-coded record or interpolation)
* interpolate: `{boolean}` (optional) - When set to true, the application will write the current ip in the {ip} tag of the data field.
Example of use (with a given IP of 8.8.8.8) :
```json
{
"records": [
{
"name": "@",
"record_type": "A",
"ttl": 600
},
{
"name": "@",
"record_type": "TXT",
"ttl": 3600,
"data": "\"v=spf1 ip4:{ip} -all\"", // Result: "v=spf1 ip4:8.8.8.8 -all"
"interpolate": true
}
]
}
```