A dynamic DNS server to host the names of guests with changing IP addresses by providing an HTTP API for updating bind9 configurations.
Go to file
notplants a9171c5f21 Working devops 2021-12-18 17:58:48 -05:00
.cargo Working devops 2021-12-18 17:58:48 -05:00
debian Change to JSONRPC server 2021-05-22 19:36:34 +02:00
devops Working devops 2021-12-18 17:58:48 -05:00
docs Add documentation 2021-05-19 11:03:16 +02:00
src Reformatting 2021-05-25 16:14:29 +02:00
templates Integration between bind and dns is working 2021-05-17 20:15:36 +02:00
.gitignore Working devops 2021-12-18 17:58:48 -05:00
Cargo.lock Change to JSONRPC server 2021-05-22 19:36:34 +02:00
Cargo.toml Change to JSONRPC server 2021-05-22 19:36:34 +02:00
README.md Working devops 2021-12-18 17:58:48 -05:00
Rocket.toml Add rocket.toml and peach-dyndns-server.service 2021-05-19 11:55:33 +02:00
cross_compile.sh Working devops 2021-12-18 17:58:48 -05:00
deploy_binary.sh Working devops 2021-12-18 17:58:48 -05:00
deploy_prod.sh Add is_domain_available endpoint 2021-05-25 15:05:24 +02:00
setup_server.sh Working devops 2021-12-18 17:58:48 -05:00

README.md

peach-dyndns-host

a dynamic DNS server to host the names of guests with changing IP addresses by providing an http API for updating bind9 configurations.

Setup

The code in this repo assumes the existence of an installed and running bind9 server on the same server as is running peach-dyndns-server. Documentation for setting up bind9 can be found here.

The peach-dyndns-server code can be compiled with

cargo deb; sudo dpkg -i target/debian/peach-dyndns-server_0.1.0_amd64.deb

Development

sudo su peach-dyndns; ./target/release/main -vv

Prod Deployment

prod is deployed to /srv/peachcloud/peach-dyndns-server/prod-peach-dyndns

Staging Deployment

staging is deployed to /srv/peachcloud/peach-dyndns-server/dev-peach-dyndns

Test

ping

curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "ping", "id":1 }' 127.0.0.1:3002

register_domain

curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "register_domain", "params" : {"domain": "mirage.dyn.peachcloud.org" }, "id":1 }' 127.0.0.1:3002

is_domain_available

curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "is_domain_available", "params" : {"domain": "mirage.dyn.peachcloud.org" }, "id":1 }' 127.0.0.1:3002

test peach-bind9 is running,

# this returns version of bind running
dig -t txt -c chaos VERSION.BIND @IP_ADDRESS_OF_SERVER 

# this returns records for blue.dyn.peachcloud.org
nslookup blue.dyn.peachcloud.org YOUR_SERVER_IP_ADDRESS

# this returns records for blue.dyn.peachcloud.org
nslookup blue.dyn.peachcloud.org ns.peachcloud.org