rind
rind copied to clipboard
DNS server with REST interface for records management built on Golang
UNMAINTAINED, PLEASE SEE OTHER ALTERNATIVES BELOW
Rind
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:
- [x] DNS server
- [x] DNS forwarding
- [x] DNS caching
- [x] A record
- [x] NS record
- [x] CNAME record
- [x] SOA record
- [x] PTR record
- [x] MX record
- [x] AAAA record
- [x] SRV record
- [x] REST server
- [x] Create records
- [x] Read records
- [x] Update records
- [x] Delete records
Todo:
- [ ] Primary, secondary model