owlwalks / rind

DNS server with REST interface for records management built on Golang
BSD 3-Clause "New" or "Revised" License
147 stars 48 forks source link
dns golang rest

UNMAINTAINED, PLEASE SEE OTHER ALTERNATIVES BELOW

Rind

GoDoc Build Status

Rind is a DNS server with REST interface for records management, best use is for your local service discovery, DNS forwarding and caching.

Examples

See complete example here

Start DNS server:

import github.com/owlwalks/rind

rind.Start("rw-dirpath", []net.UDPAddr{{IP: net.IP{1, 1, 1, 1}, Port: 53}})

Manage records

// Add a SRV record
curl -X POST \
  http://localhost/dns \
  -H 'Content-Type: application/json' \
  -d '{
    "Host": "_sip._tcp.example.com.",
    "TTL": 300,
    "Type": "SRV",
    "SRV": {
        "Priority": 0,
        "Weight": 5,
        "Port": 5060,
        "Target": "sipserver.example.com."
    }
}'

// Update an A record from 124.108.115.87 to 127.0.0.1
curl -X PUT \
  http://localhost/dns \
  -H 'Content-Type: application/json' \
  -d '{
    "Host": "example.com.",
    "TTL": 600,
    "Type": "A",
    "OldData": "124.108.115.87",
    "Data": "127.0.0.1"
}'

// Delete a record
curl -X DELETE \
  http://localhost/dns \
  -H 'Content-Type: application/json' \
  -d '{
    "Host": "example.com.",
    "Type": "A"
}'

Features:

Todo: