Go to file
publicmatt 0b128ee2e1 add manual crud commands.
refactor cli interface.
remove file handler.
2024-04-03 07:33:48 -07:00
docker Updated Dockerfile. 2021-12-26 18:07:22 +01:00
src add manual crud commands. 2024-04-03 07:33:48 -07:00
.env.example add manual crud commands. 2024-04-03 07:33:48 -07:00
.gitignore add manual crud commands. 2024-04-03 07:33:48 -07:00
Cargo.lock add manual crud commands. 2024-04-03 07:33:48 -07:00
Cargo.toml add manual crud commands. 2024-04-03 07:33:48 -07:00
readme.md Updated readme.md. 2021-12-27 01:12:32 +01:00

readme.md

GoDaddy DDNS

godaddy-ddns

What is this?

It's a Rust application to update GoDaddy DNS Records via REST API.

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:
{
  "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) :

{
  "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
    }
  ]
}