Ever Wanted to Own and Operate a
Fully Featured Dynamic DNS Service?
Now You Can With MintDNS 2008 Enterprise - - Our Award
Winning Dynamic DNS (DDNS) Server Suite!!!
It's never been easier to run your own DDNS
service.
Looking for free Dynamic DNS (DDNS) services? Please use our free DDNS
service at
http://www.dynddns.us
MintDNS API Overview
- Using the MintDNS COM+ Component
- DNS Failover
- Multithreading
- Standard Update Format.
- Domain List in XML format.
- Check to see if a user exists.
- The MintDNS C++ ISAPI
MintDNS COM + Component
Introduction
The COM+ component is responsible for all DNS management functions and Base64 encoding/decoding. The component can be used in any common programming language that supports COM access. Below you find a basic break down of the COM+ components functions. Usage examples in multiple programming languages are also provided.
The Component is written in Microsoft C++ v8.0, and is an Isolated Application that makes use of Side-by-side Assemblies ( http://msdn.microsoft.com/en-us/library/ms235531(VS.80).aspx ). The COM+ also makes use of Semaphores to avoid race conditions and has been tested at load in a live production environment at 125,000,000 updates in a 24 hour period with zero failures.
Component Functions
Update an IPv4 DNS IP.
'Classic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
sd.UpdateARecord(“www”,
“mydomain.com”, “24.116.98.21”)
'ASP.NET example. Add a reference
to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
sd.UpdateARecord(“www”,
“mydomain.com”, “24.116.98.21”)
Returns OK or
FAIL
Create an IPv4 DNS Record.
'Classic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
sd.CreateARecord(“www”,
“mydomain.com”, “24.116.98.21”)
'ASP.NET example. Add a reference
to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
sd.CreateARecord(“www”,
“mydomain.com”, “24.116.98.21”)
Returns OK or FAIL
Remove an IPv4 DNS Record.
'Classic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
sd.DeleteARecord(“www”,
“mydomain.com”, “24.116.98.21”)
'ASP.NET example. Add a reference
to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
sd.DeleteARecord(“www”,
“mydomain.com”, “24.116.98.21”)
Returns OK or FAIL
Update an Ipv4 DNS IP.
Classic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
sd.UpdateARecord(“www”,
“mydomain.com”, “24.116.98.21”)
ASP.NET example.
Add a reference to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
sd.UpdateARecord(“www”,
“mydomain.com”, “24.116.98.21”)
Returns OK or FAIL
Create an IPv6 DNS Record.
Classic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
sd.CreateIP6(“www”, “mydomain.com”,
“2001:0db8:85a3:0000:0000:8a2e:0370:7334”)
ASP.NET example.
Add a
reference to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
sd.CreateIP6(“www”, “mydomain.com”,
“2001:0db8:85a3:0000:0000:8a2e:0370:7334”)
Returns OK or FAIL
Remove an IPv6 DNS Record.
CClassic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
sd.DeleteIP6(“www”, “mydomain.com”,
“2001:0db8:85a3:0000:0000:8a2e:0370:7334”)
ASP.NET example.
Add a
reference to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
sd.DeleteIP6(“www”, “mydomain.com”,
“2001:0db8:85a3:0000:0000:8a2e:0370:7334”)
Returns OK or FAIL
Update an IPv6 DNS IP.
CClassic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
sd.UpdateIP6(“www”, “mydomain.com”,
“2001:0db8:85a3:0000:0000:8a2e:0370:7334”)
ASP.NET example.
Add a
reference to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
sd.UpdateIP6(“www”, “mydomain.com”,
“2001:0db8:85a3:0000:0000:8a2e:0370:7334”)
Returns OK or FAIL
Base64 encoding decoding.
CClassic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
Encoded = sd. base64_encode (“This
is a test”)
Decoded = sd. base64_decode
(Encoded)
ASP.NET example.
Add a
reference to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
Encoded = sd. base64_encode (“This
is a test”)
Decoded = sd. base64_decode
(Encoded)
Returns Base64 Encoded-Decoded String.
IP Address Validation.
CClassic ASP example
Set sd = Server.CreateObject("MintDNS.DNSMAN")
IsVal = sd.IsValidIPAddress(“24.116.98.21”)
ASP.NET example.
Add a
reference to mintdns.dll
Using MintDNS.DNSMAN;
DNSMAN sd = new DNSMAN ();
IsVal = sd.IsValidIPAddress(“24.116.98.21”)
Returns True False
Component Multi Threading Capabilities.
The COM+ component makes use of
Semaphores to support an unlimited
number of concurrent connections.
The COM+ limits its self to 10
active threads per instance; other
requests are pooled and processed in
a first in first out basis.
This threading setup could be
compared to a set of public
restrooms each of which require a
key. Let’s say we have 10 bathrooms
and 10 bathroom keys. We have a line
of 20,000 people waiting to use the
bathroom. As people finish in the
bathroom they pass their key to the
next person in line.
Current setup with 10 active threads
limits itself at around 1000
requests per second; above this rate
the request buildup will begin to
fill the servers’ memory. Note: You
can add addition instances by
increasing worker processes under
IIS application Pool settings.
Not used with single server setup.
The COM+ Component will first
attempt to work with the local DNS
server instance. Upon failure or
timeout, the COM will select another
from the list of DNS server IP’s.
You can specify DNS server IP’s in
the c:/mintdata/mintdns.ini
unsigned long IP1;
unsigned long IP2;
unsigned long IP3;
unsigned long IP4;
IP1 = inet_addr("127.0.0.1");
IP2 = inet_addr("10.0.0.103");
IP3 = inet_addr("10.0.0.104");
IP4 = inet_addr("10.0.0.105");
pSrvList = (PIP4_ARRAY) malloc(sizeof(IP4_ARRAY));
if(!pSrvList){
return FALSE;
}
pSrvList->AddrCount = 4;
pSrvList->AddrArray[0] = IP1;
//DNS
server IP address 1
pSrvList->AddrArray[1] = IP2;
//DNS
server IP address 2
pSrvList->AddrArray[2] = IP3;
//DNS
server IP address 3
pSrvList->AddrArray[3] = IP4;
//DNS
server IP address 4
free(pSrvList);
Standard NIC 2.0 Update Format (dyndns.org format)
http://username:password@yourservice.com/nic/update?
hostname=yourhost.domain.com&myip=ipaddress
myip is optional. If myip is null the server derives the clients IP address.
Must use basic authentication, and the username and password must be base 64 encoded.
GET /nic/update?
hostname=yourhost.domain.com,yourhost2.domain.com&myip=ipaddress
Host: yourservice.com Authorization: Basic username:password
myip is optional. If myip is null the server derives the clients IP address.
All other standard update strings are optional.
username and password must be base 64 encoded.
Possible Return Values: good
nochg
badauth
nohost
badsys
!donator
911
User Domains Lookup (Used to display registered domains, IP address and status within your application.)
http://username:password@yourservice.com/Client/Domlook.asp
GET yourservice.com/Client/Domlook.asp
Host: yourservice.com Authorization:
Basic username:password
username and password must be base 64 encoded.
Returns Domain List in XML Format:

![]()
User Check (Determine if a user exists, and if a password is correct.)
http://username:password@yourservice.com/Client/UserCheck.asp
GET yourservice.com/Client/UserCheck.asp
Host: yourservice.com Authorization:
Basic username:password
username and password must be base 64 encoded.
Possible Returns: okuser
nouser
The MintDNS ISAPI (Download Source)
The ISAPI is responsible for update captures and redirects. The ISAPI
also addresses a problem with IIS that blocks access to most all Linux/Unix
update clients.
The ISAPI can be modified to support any existing third party client.
If you are going to use an existing non standard firmware client, you can use
the ISAPI to redirect requests for .php or .pl pages(Or any page type from
other servers.) to an appropriate asp page on your server.
The ISAPI is written in Visual C++ v8.0 and compiles with Visual Studio 2005 or later.
Modifications are provided by our team, if you are unable to make required
changes.