DynSite
Dynamic DNS Service
Plug-in Specifications
Revision: 1.08 / 1.11.799.1+ / June 2006
Revision: 1.07 / 1.11.758.5+ / June 2004
Revision: 1.06 / 1.11.731.4+ / September 2003
Revision: 1.05 / 1.11.723.3+ / June 2003
Revision: 1.04 / 1.11 / May 2002
(Note: DynSite V1.10 is only compatible with revision 1.03
of the plug-in specifications.)
Required Sections
Version Section
This section is used for the identification of the format (compatible with
the INF file format.) It must only contain the Signature line.
Example:
[Version]
Signature="$CHICAGO$"
Service Section
The parameters in this section describe the dynamic DNS service.
Syntax:
Account=<URL>
[Required] Specifies the URL of the login page of the service.
Name=<name of service>[,<previous name>]
[Required] Specifies the short name or the domain name of the service. This
string is used for the storage of the data in the Registry. This string must
not conflict with the names of other plug-ins. [1.04]
The <previous name> parameter is optional, it tells the
program to rename the registry key from the previous name to the new short
name. The new short name will also be used to export the settings.
WebSite=<URL>
[Required] Specifies the URL of the home page of the service.
Advanced=<0 | 1> [1.08]
[Optional] If this parameter is set to 1, this tells DynSite that the
service requires a service-specific parameter (usually a host id or a
record id) for the updates to complete successfully. In that case,
DynSite shows a message in the Account Assistant that invites the
user to open the Advanced properties to set the required parameter after
he/she has configured a new host name.
Default is false (0)
AppendPort=<0 | 1> [1.04]
[Optional] This parameter is only useful if the EnablePort parameter
is set to true (1). If a port number is not null then it will be appended to
the IP address during the update (e.g. if the IP address is 195.1.2.3
and the port number is 8080, the updated address will be in the form
195.1.2.3:8080.) If you want to use ports but not have them appended
to the address, do not add this parameter to the plug-in (or set it to 0)
and use the %port parameter explained below.
Default is false (0), HTTP ports are not appended to the addresses.
Authentication=<authentication> [1.04]
[Optional] Specifies the authentication method. This option can be set to
the following values:
0: No authentication. Login and password are passed as clear text.
1: Basic authentication, login and password are Base64 encoded. (default)
2: GnuDIP authentication. The password is encoded with the MD5 algorithm.
Compatibility=<version> [1.04]
[Optional] Specifies the minimal build number of the program which is
required to support this plug-in. If the user runs an older version, the
plug-in won't be loaded. If you use features available only in release
1.06 and later, you have to add this line to the service section:
Compatibility=1.11.731.4
Description=<service description> [1.04]
[Optional] This is the full name of the service like it will appear in the
tree of the Services tab in Setup. If this parameter is not
provided, the Name parameter will be used.
EnablePort=<0 | 1> [1.04]
[Optional] If this parameter is set to 1, DynSite will show HTTP port
configuration boxes in the user interface. This enables DynSite to not only
update IP addresses but also HTTP ports.
Default is false (0), HTTP ports are disabled and not visible in the
interface.
Format=<format>
[Optional] Specifies the way the parameters will be appended to the update
script. 3 different formats are supported. Default is 0. The supported
formats are:
0: http://.../update.asp?parm1=xxx&parm2=yyy
(default)
1: http://.../update.php3/xxx/yyy/
2: http://.../update.exe?xxx&yyy
IgnoreEmptyParams=<0 | 1>
[Optional] Set this parameter to 0 if you want DynSite to send empty
parameters (e.g. mx=) in HTTP updates.
Default is true (1), DynSite won't send any empty parameters.
MaxHostNames=<number>
[Optional] Specifies the maximum number of hosts that a user can defined
under a single account.
Default is (virtually) unlimited.
Transport=<transport>
[Optional] Specifies the update method for the service. Two transports are
supported either:
1: HTTP request (default)
2: Proprietary socket protocol, <cr> separated commands (not
documented)
Examples:
[Service]
Name="Domain Host Services"
WebSite=http://www.dhs.org
Account=http://members.dhs.org/nic/
MaxHostNames=6
IgnoreEmptyParams=0
Domains Section
This section enumerates the domain names available at the dynamic DNS
service or optionally *owndomain which specifies that the service can
update custom domain names. At least a Static or a
Dynamic
section must follow depending of the type of the domains listed.
Syntax:
<domain name | *owndomain>=<static | dynamic | both>[,default]
The left side of the line is the domain name and the right side is the
type of domain. both means that the domain or host may be
either static or dynamic (when available, this is configurable in your
account from the Web site of the DDNS service.) You can also append
default
at the end of the line to specify that a domain will be selected by default
in the Domain Name drop-down list of the Host or
Domain Properties.
Example:
[Domains]
dhs.org=static
dyndns.org=both,default
dyn.dhs.org=dynamic,default
*owndomain=dynamic
Optional Sections
The following sections are optional i.e. they are not all required but at
least one Static or Dynamic section must
be declared if a domain in the Domains section is defined
as static or dynamic respectively. If a domain is defined as both
then both a
Static and a Dynamic section must be
declared. A related Static-Common or Dynamic-Common
section is required if respectively a Static or a
Dynamic
section exists. On the other hand the Static-Online /
Static-Offline or Dynamic-Online /
Dynamic-Offline
sections are fully optional.
Static and Dynamic Sections
This section specifies the script used to update a static or a dynamic host
or domain name.
Syntax:
Script=<URL>
[Required] This parameter defines the URL of the script used to do the
update.
MetaTag=<meta-tag>
[Optional] This meta-tag will be parsed instead of the whole HTML file for
the reading of the completion status of the update. The content of this
meta-tag will be compared with the responses listed in this section.
Response=<completion string>[, <severity>[,
<interpretation>]]
[Optional] You may list one or many Response lines. If no
Response line is specified, DynSite will assume that the updates always
succeed. The
completion string defines a string to search for in the response
from the script and that will tell how the update completed.
Note: the # character is a placeholder in the completion string.
It can represent any character which appears at its position, the response
will be recognized as long as all the other characters match.
Severity. If the specified string indicates a success you don't
have to append any severity code, by default a response string is
assumed to represent a successful update. If the string specifies a failure
then you must specify a severity code. It will tell DynSite how to
handle the error and whether it must attempt other updates or to wait for
the host to be cleared first.
Value |
Meaning |
0 |
Successful update (may be omitted.) |
1 |
Failure, must try again. |
2 |
Severe failure, must not attempt any other update until the host is
cleared. |
Interpretation. (Revision 1.04 and later only) The
interpretation code describes the meaning of the completion string so
that DynSite can report a meaningful error message instead of a generic
update failed
message.
Value |
Meaning |
0 |
Successful update (may be omitted.) |
1 |
The update failed. |
2 |
The update request is invalid. |
3 |
The credentials for the account are invalid. |
4 |
The password for the account is incorrect. |
5 |
The user specified in the account is unknown. |
6 |
The account is blocked (usually because of abuse.) |
7 |
The host is blocked. |
8 |
Unauthorized host, the host does not belong to the user. |
9 |
The host was not found, it probably does not exist. |
10 |
The host name is invalid. |
11 |
The address is invalid. (This should never happen.) |
12 |
Some data are invalid. |
13 |
Updates are too frequent. |
14 |
Something failed on the server side. |
15 |
The server is in maintenance mode. |
Examples:
[Static]
Script=http://members.dhs.org/nic/hosts
Response="Host updated successfully"
Response="Invalid password",2,4
[Dynamic]
Script=http://members.dyndns.org/nic/update
MetaTag="update"
Response="good",0
Response="nochg",0
Response="badauth",2,3
Common, Online and Offline Sections
These are the sections that define the parameters to pass to the update
script. The Common section will be used in all updates. The Online and
Offline sections on the other hand will be used only when a host is going
online or offline respectively.
For static host updates, the parameters are defined under the following
sections:
Static-Common, Static-Online and
Static-Offline.
For dynamic host updates, the parameters are defined under the following
sections:
Dynamic-Common, Dynamic-Online and
Dynamic-Offline.
There are two kinds of parameters: non-editable parameters i.e. parameters
that cannot be changed by the user and editable parameters i.e. parameters
that will show in the Service-Specific Parameters list of
the
Host or Domain Properties.
Non-editable parameters
Syntax:
<parameter>=<value | %variable> [,,<options>]
There are two kinds of non-editable parameters, static parameters i.e.
parameters that have always the same values, and dynamic parameters i.e.
parameters that will be passed variable values. DynSite defines the
following variables:
Variable |
Definition |
challenge |
a challenge string in the hexadecimal
notation (if any). Same as salt in most cases. |
dnsname |
the fully qualified domain name of the host e.g.
myhost.dyndns.org. |
domain |
the domain name of a fully qualified domain name e.g.
dyndns.org. |
gtld |
the generic top-level domain e.g. org, net, fr, au, uk |
hostname |
the host name as defined in the Host Name
field of Host or Domain Properties e.g. myhost |
ipaddr |
either the detected IP address or an Alternate
or
Offline IP address as defined in
the
Addresses section of Host or Domain Properties. |
lastip |
[1.08] last IP address that was successfully
assigned to a host name or 0.0.0.0 |
login |
the login of the account to which the host belongs. |
loguser |
[1.07] the name of the user logged on to the
connection used to update the hostname. |
md5password |
[GnuDIP authentication] the MD5 digested
password (using the salt string) in the hexadecimal notation
[1.06] obsolete, use the syntax:
%password,,gnudip |
online |
update mode: 1 = online, 0 = offline |
owndomain |
flag which returns 1 if the domain is a personal domain.
It returns 0 if the domain is owned by the DDNS service. |
password |
the password of the account to which the host belongs.
[1.06] In this release, password accepts an optional options
parameter. This currently is the only type to accept options. It is used
to define the hash algorithm to apply to the password. If none is
specified the password is sent in cleartext.
Supported hash algorithms are: gnudip, md5, sha256,
sha384, sha512. |
port |
either the Default Port or an
Alternate
or Offline port as defined in the
Addresses section of Host or Domain Properties.
EnablePort must be set to 1 in the Service section for this
parameter to be meaningful. |
pswhash |
the 128-bit hash code of the password in
hexadecimal notation.
[1.06] obsolete, use the syntax:
%password,,md5 |
salt |
[GnuDIP authentication] the salt string |
sign |
[GnuDIP authentication] the signature
string |
state |
the update state, either "online" or "offline"
(without quotes) |
subdomain |
the domain name without the top-level domain e.g.
dyndns |
tick |
[1.07] the number of milliseconds that have
elapsed since the system was started (note: wraps after 49.7 days) |
timegen |
[GnuDIP authentication] the time of salt
generation |
tld |
the top-level domain e.g. org, net, fr,
com.au, co.uk |
uptime |
[1.07] the number of days, hours, minutes and
seconds that have elapsed since DynSite was started |
useragent |
the useragent string of the application e.g.
DynSite/1.11.620.4 |
Examples:
[Static-Common]
type=4
hostscmd=edit
domain=%domain
hostname=%hostname
pass=%password,,md5 [1.06]
Editable parameters
Syntax:
<parameter>=<value>,<number | string | boolean | cname | list>
There are 5 kinds of editable parameters, numeric or boolean
parameters and strings, cname or lists. For number and string, value
defines a default value for the parameter followed by number or
string
respectively.
For boolean, cname and list, value is a text
string between quotes. The options of the list are separated with a | sign.
An asterisk may precede the default value in the list if the default option
is not the frst one. If no asterisk is specified the first option will be
the default one.
Boolean must have only two options, the first one defines the true
state and the second one, the false state.
For cname, value may also be %ipaddr which means that
the current IP address will be passed as a parameter instead of a CNAME.
[1.05] A @ sign may be placed before the
parameter if its name must not appear in the URL passed to the server.
Examples:
[Dynamic-Common]
ttl=60,number
type="NS|*A|MX|NS|NONE",list
address=%paddr,cname
cloak="Y|*N",boolean
cloak_title="",string
@id="",string
String Section
This optional section specifies friendly names for the editable parameters.
If a friendly name is defined in this section for an editable parameter, the
parameter will appear with its friendly name in the Service-Specific
Parameters
list of the Host or Domain Properties.
Syntax:
<parameter>=<friendly name>
Example:
[Strings]
mx="Mail Exchanger"
|