To aid developers in seeing how to use Domain Connect, we’ve built a simple example hosting service. This can be used by DNS Providers to test their implementation of Domain Connect, or by Service Providers to see how to implement Domain Connect.
The source code for this application can be found at https://github.com/Domain-Connect/python-dc-statelesshosting
This application is a simple Python Bottle application. It implements both the synchronous (with and without a signature) and asynchronous protocols using OAuth.
The application implements a fictitious hosting company called “Stateless Hosting”. The “consumer” enters their domain name and the text they want displayed on their website. Using Domain Connect, DNS is configured with the proper IP address for the apex A record. The message is also cleverly stored in DNS in a TXT record. Yes, we are using DNS as a distributed database and we don’t necessarily advocate this in real practice.
One of the trickier things to get right as a Service Provider is when signatures are used to verify synchronous calls. Testing that the signature is generated properly often involves guess work and back and forth with the DNS Providers.
We’ve built a simple testing tool as part of the example service.
We also built a tool that can generate the necessary DNS TXT record values for publishing the values in DNS.
We have some code that should help the DNS Provider get going. The github project DomainConnectApplyZone has code that takes a zone file and can apply a template. It handles conflict detection and signature checks, returning a new version of the zone file.
It doesn’t implement any authentication or UX, but does implement the core of applying a template.
As another example project we’ve built a Dynamic DNS Windows Service. This service uses the asynchronous OAuth protocol, and will keep a DNS A record current with a dynamic IP address assigned to a home network.
While similar protocols are built into some routers, these are proprietary. This application will work with any DNS Provider that supports the OAuth protocol and the service template.
The source code for this project can be found at:
The compiled version can be found at:
Plesk has built an extension that allows Plesk to operate as a DNS Provider (when Plesk is running DNS for the domain).
The code can be found at: