inadyn-mt - Simple DYNAMIC DNS client.
Version 02.12.24, July 2008
INADYN Advanced Help
INADYN Advanced is a dynamic DNS client. That is, it maintains the IP address
of a host name. It
periodically checks whether the IP address stored by the DNS server is
the real current address of the machine that is running INADYN Advanced.
inadyn-mt 02.00.00 adds built in Windows service installation and management, connection event trapping, unicode, and a few other things.
inadyn-mt source, and binaries can be found at
http://sourceforge.net/projects/inadyn-mt/
Download
Features:
- supports the following dynamic DNS services:
- dyndns.org (in all three flavors: dynamic, static, custom)
- freedns.afraid.org
- zoneedit.com
- no-ip.com
- 3322.org
- easydns.com
- maintains up multiple aliases of the same IP address
- runs as a service (Windows 2000/XP, Linux) sans MS utilities as of inadyn-mt ver. 02.00.00
- or runs as a console application
- updates the correct IP address even behind a NAT router.
- supports access via http proxy
- does not perform unnecessary updates.
- has 'install and forget it feature'. That is, after install one
can completely forget about
it. No maintenance required. (as long as no bugs are found;-)
Installation
For Windows:
-
As of version 02.00.00 inadyn-mt, MS service related files aren't needed (but, still work if desired). The
program can be started as a service (Windows NT) without these files, either from the command line, or the Windows service interface
after command line installation. The service is named 'inadyn-mt'.
Install
inadyn-mt -i ["My Service Description"]
Installation gives a default registry setup. The registry entry can be found at:
HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Services\inadyn-mt
Edit the Parameters\AppParameters default string value to customize to your dynamic dns system, and preferences. See below
for a full list of parameters, or simply type the program name, with no commands to see a listing.
Post installation configuration can also be done using the registry files method listed in step 2 below (edit the "mt" registry
file for inadyn-mt -i install method).
Start
inadyn-mt -s
Assuming a configuration file of say, d:\inadyn-mt\inadyn-mt.cfg, the service can be installed, and started
from the command line, with:
inadyn-mt -i ["My Service Description"] -s --input_file d:\inadyn-mt\inadyn-mt.cfg
The optional service description command option is commited to Windows registry. Other parameters are not commited to
the Windows registry, and still need setting up as listed in step 2 (edit the "mt" registry file for inadyn-mt -i install
method), or by editing installation registry defaults directly, as described in Install section above.
Command line parameters override registry, parameters. Configuration file parameters are inserted
at point configuration file command appears.
Exit
inadyn-mt -e
Uninstall
inadyn-mt -x
Restart (if the service is not running, this command will start it):
inadyn-mt -r
If it appears commands are not carried out according to parameters given on command line, try closing other service
related programs such as the Windows Services interface.
See inadyn-mt\bin\win32 for registry, and batch files named corresponding to the present program version, and function
corresponding to registry, and batch files mentioned in the present html page. The batch files are convenient for service
installation, or removal without the command line -- just double click.
Windows 95/98
This program runs on Windows 95/98 with no need of recompilation.
For unicode compatibility on Windows 95/98, in MS VC6 Project Settings, C/C++ tab, define
preprocessor definition, UNICOWS, link with unicows.lib, and place the dll, unicows.dll in
program executable directory.
- Edit the registry file with the correct
name for your service (e.g. 'configure_inadyn-mt_service_dyndns.reg') in order to pass your
username,
password, aliases, and other params to inadyn-mt. After you have finished
double click on the reg
file.
Notes:
- The correct path to inadyn-mt binary has to be entered in the
config file.
- The log file is located in %System%\system32 by default
- Beware of the double backslashes '\\' and the correct paths!
After you have finished double click on the reg file.
- Go to ControlPanel/AdministrativeTools/Services/inadyn-mt and START
the service. Also make
sure that the startup mode is 'automatic'.
For Linux:
- No
installation necessary. The inadyn-mt executable found in bin/linux/inadyn-mt is self contained
and can be launched at any time
For MAC (thanks to Rob.S)
-
Put the binary somewhere in path (e.g. ~/bin),
Start it with the following AppleScript saved as an Application and dragged to
System Preferences -> Accounts -> Login Items:
do shell script "~/bin/inadyn-mt -a HOST.dyndns.org -u USER -p PASSWORD"
Alternatively, one can put it in the system startup scripts.
For other operating systems:
- Adjust the
makefile - change the architecture to yours. (e.g. solaris)
- Recompile - make clean all
Command line options
They are automatically printed if inadyn-mt gets wrong parameters or if
--help option is
used.
Typical usage:
-for dyndns.org system:
inadyn-mt -u username -p password -a
my.registered.name
-for freedns.afraid.org:
inadyn-mt --dyndns_system
default@freedns.afraid.org -a my.registered.name,hash -a
anothername,hash2
'hash' is extracted from the grab url batch
file that is downloaded
from freedns.afraid.org
Parameters:
'--help': help
'-h': help
'--username': your membername/ hash
'-u': your membername / hash
'--password': your password. Optional.
'-p': your password
'--alias': alias host name. this option
can appear multiple
times. (for each domain that has the same IP)
'-a': alias host name. this option can appear multiple times.
'--debug': debug level 1..7 (higher = more output)
'-d': debug level 1..7 (higher = more output).
'-i [quoted service description]': install service
'-s': start service
'-e': exit service
'-r': restart service
'-x': remove service
'--input_file': input file name that
contains
inadyn-mt command options (adds to those already present in the cmd line).
The default configuration file name is '/etc/inadyn-mt.conf'. It is only
used if inadyn-mt is called without any command line options. This allows
inadyn-mt to be called without any arguments. The format is as expected
for a **NIX config file. See below for details.
'--ip_server_name[:port] url': The client
IP is detected by calling 'url' from this 'ip_server_name:port'.
Defaults to checkip.dyndns.org:80 /.
'--dyndns_server_name': [[:port]]
The server that receives the update DNS
request.
If no proxy is wanted, then it is enough to set the dyndns system. The
default servers will be
taken.
'--dyndns_server_url'
full URL relative to DynDNS server root.
'--dyndns_system': [NAME] - optional
DYNDNS service type. SHOULD
be one of the following:
-For dyndns.org DNS system:
dyndns@dyndns.org OR
statdns@dyndns.org OR custom@dyndns.org.
-For freedns.afraid.org DNS system: default@freedns.afraid.org .
-For the servcie ofered by zoneedit.com: default@zoneedit.com. .
-For no-ip.com: default@no-ip.com
-For easydns.com: default@easydns.com
-For 3322.org: dyndns@3322.org
-For generic DNS system: custom@http_svr_basic_auth
DEFAULT value is intended for default service at dyndns.org:
dyndns@dyndns.org
'--proxy_server': [NAME[:port]] - the
http proxy server name and
port. Default is none.
'--update_period': how often the IP is checked. The period is in [ms].
Default is about 1 min.
Max is 10 days
'--update_period_sec': how often the IP is checked. The period is in
[sec]. Default is about 1
min. Max is 10 days
'--forced_update_period': how often the IP is updated even if it is not
changed. [in sec] If account cancelation is concern, it's safest to set
this just beyond account inactivity cancelation period, as failed updates
may cause forced update to be detected late.
'--log_file': log file path abd name
'--background': runs in background. Output to syslog or to log
file [if specified].
'--verbose': set dbg level. 0 to 5
'--iterations': set the number of DNS updates. Default is 0, which
means infinity.
'--syslog': explicit set output to syslog. (e.g. /var/log/messages).
Works on **NIX systems only.
'--change_persona uid[:gid]': After init changes user ID and group ID
to the provided ones. This allows dropping unneeded [root] privileges
after startup. Works for **NIX only.
'--exec': external command to exec after an IP update. Include the full path.
'--cache_dir': cache directory name. (e.g. /tmp/ddns). Defaults to /tmp on **NIX systems.
'--wildcard': enable domain wildcarding for dyndns.org, 3322.org, or easydns.com.
'--retries': network comm retry attempts. 0 to 100, default 0.
'--retry_interval': network comm miliseconds retry interval. 0 to 30,000, default 1,000.
'--lang_file': language file path, and file name. defaults to either ../inadyn-mt/lang/en.lng,
or /etc/inadyn-mt/en.lng.
SPECIAL NOTE: Cache file :
There are two cache files: inadyn_time.cache and inadyn_ip.cache. They store the time and IP address when an update last occurred. Under **NIX systems, the cache directory defaults to /tmp, under windows it defaults to the directory where inadyn-mt.exe was launched. Both of these cache files must be maunally deleted if you ever change your dyndns provider.
Example usage:
1. Update every minute, in console mode, for a dyndns.org system.
inadyn-mt --username test --password test --update_period 60000 --alias
test.homeip.net --alias my.second.domain
2. Update every minute, in demon mode (background task), with log file, of an dyndns.org address:
inadyn-mt --background -u test -p test --update_period 60000 --alias
inarcis.homeip.net --alias my.second.domain --log_file
inadyn_srv.log
3. Update every minute, in daemon mode, with configuration read from file of an address from freedns.afraid.org
Config file (can be placed anywhere, but in linux is convenient in default location: /etc/inadyn-mt.conf
Content of cfg file:
--update_period 60000
--alias test.homeip.net,hash_for_host1
--log_file /var/log/inadyn.log
--change_persona 10012 #to change to another user id after init. (less rights, more secure)
Launching of inadyn-mt does not need any params. It looks for /etc/inadyn.config
4. Freedns update in console
inadyn-mt --update_period 60000 --alias test.homeip.net,hash_for_host1 -a
my.second.domain,hash2 --dyndns_system default@freedns.afraid.org
Configuration file
inadyn-mt can read the very same options which can be present in the
command line from a configuration file. This feature allows the user to
write the options only once, and avoids frequent retyping.
Default configuration file is /etc/inadyn.conf under Unix systems.
The location of the config file can be given to inadyn-mt via --input_file option
The format :
- '#' is a comment sign.
- the long options (those with '--' in front) can also be placed at the
beginning of the line without
'--' signs
Examples:
1.
#Some comment about inadyn-mt cfg file
--username test --password test --update_period 60000 --alias
test.homeip.net --alias my.second.domain
2.
--username test #user
--password test
update_period 60000 #some other param without '--'
alias test.homeip.net
LOG Output
inadyn-mt prints some message when the ip is updated. If no update is
needed by default it prints a '.' every time when it performs a name
check. So typically you will see a lot of dots in the log file. (only
if verbose level is greater than 0).
When the connection goes down it is possible that inadyn-mt displays some
errors. But they should
be followed by 'OK' messages after the connection is up again.
Special notes for freedns.afraid.org
They prefer to get as parameter a single hashed (base64 encoded) value
instead username,
password.
This saves some computing resources apparently. The hash cannot be
computed by inadyn-mt because
it involve the database index of your username in freedns database
which is not known.
The simplest solution seems to be the copy-paste action from the
graburl batch file offered on
their website.
Example: The batch file looks like this:
graburl
http://freedns.afraid.org/dynamic/update.php?YUGIUGSEIUFGOUIHEOIFEOIHJFEIO=
The user has to copy and paste the hash value after the '?' until the
end of line.
The hash will be used as additional param in --alias option. (see
typical usage above)
Support and Bug reports
Since this is free software the support [for free] is quite thin.
However, the bugs are usually
fixed very fast if they are reported.
No active testing is performed so without user feedback the bugs won't
get discovered and
fixed.
Contact info:

Original Inadyn Web: inadyn.ina-tech.net
Inadyn Advanced Web: inadyn-adv.stevehorbachuk.com
inadyn-mt: bhoover@wecs.com
HISTORY
Ver. inadyn-mt 2.12.24 - July 2008
Changes:
- program abort flag check fixed
- GNU GPL related issues addressed
- calloc safe_mem wrap
Ver. inadyn-mt 2.12.22 - July 2008
Changes:
- Windows log file pointer check
- added sitelutions.com dynamic dns server
- simplified Windows service installation default registry parameters
- memory alloc error abort wrapper potential stack overflow
because of error log output memory alloc, changed to printf string literal output
- added to program root directory, gpl.txt, GNU GPL license text file
Ver. inadyn-mt 2.12.20 - June 2008
Changes:
- default configuration backward compatible with inadyn
- usage help restored
Ver. inadyn-mt 2.12.18 - June 2008
Changes:
- Windows version latent ras/main thread synchronization details completed
- forced update period adjusted accordingly in event of USR1
Ver. inadyn-mt 2.12.16 - June 2008
Changes:
- fixed obscure Windows RAS thread orphaning potential
(iterations condition true) in main program loop
- obscure Windows RAS thread, and main loop race condition fixed
- main loop iterations condition rendered so increment,
and related exit, on success only, as in original inadyn
Ver. inadyn-mt 2.12.06 - May 2008
Changes:
- Windows service shutdown on client initiated exit
- RAS thread initialization to separate function
- Windows ip update retries exited on network down
- added ip update trigger, via SIGUSR1
- Windows Unicode ip cache file dir
Ver. inadyn-mt 2.12.04 - May 2008
Changes:
- removed old MSVC project files, replaced
with fixed new inadyn-mt version project files
Ver. inadyn-mt 2.12.02 - May 2008
Changes:
- executable, and related output changed from inadyn to
inadyn-mt
- updated inadyn-mt man files' original inadyn homepage
to http://www.inatech.eu/inadyn/
- changed default config file from /etc/inadyn.conf to
/etc/inadyn-mt/inadyn-mt.conf
Ver. inadyn-mt 2.12.01 - May 2008
Changes:
- safer memory, with program abort on allocation error
- couple unchecked pointers, checked
- language strings file default override parameter, --lang_file
- fixed program version parameter output
Ver. inadyn-mt 2.11.98 - March, April 2008
Changes:
- added network communication --retries parameter, and
--retry_interval parameter
- centralized dns update routine relative to main loop,
and RAS events trapping
- linux, unix DEBUG startup output conditional compile added
- Windows QUIET debug startup output conditional compile added
Ver. inadyn-mt 2.11.96 - March 2008
Changes:
- cwd/root path search overshoot fixed
- default Unix locale/lang file fixed
- some minor refactoring
Ver. inadyn-mt 2.11.94 - Feb 2008
Changes:
- wrong version number reported fixed.
- minor control flow logic error fixed.
Ver. inadyn-mt 2.11.93 - Feb 2008
Changes:
- bad program root directory fault fixed.
Ver. inadyn-mt 2.11.92 - Feb 2008
Changes:
- linux lang file search seg fault fixed.
- lang strings hash table key computation fixed.
- lang, path routines factored to modules.
Ver. inadyn-mt 2.11.89 - Feb 2008
New features:
- tighter memory management, buffer checking.
- Win Service language strings.
Ver. inadyn-mt 2.11.88 - Feb 2008
New features:
- indexed language strings.
Ver. inadyn-mt 2.11.87 - Feb 2008
New features:
- language strings files support.
Ver. inadyn-mt 2.11.80 - Jan 2008
New features:
- Unicode.
Ver. inadyn-mt 2.01.02 - Dec 2007
New features:
- registry string value for separate service server log file.
Ver. inadyn-mt 2.01.00 - Nov/Dec 2007
New features:
- options file commands/parameters inserted "in place" in command line.
- built in Windows service management.
- Windows RAS events (modem connection) trapping.
- debug level command option.
Ver. 1.96 - 09 September 2005
New features:
- zoneedit.com supported.
- no-ip.com supported.
- support for generic DNS services that support HTTP updates
Fixes:
- immediate exit in case of --iterations=1 (not after a sleep period)
- added missing option for specifying the path in the DNS server
Ver. 1.95 - 20 July 2005
New features:
- UNIX signals supported - inadyn will
stop gracefully in case of ALRM, HUP, INT, ...
- new dynamic dns service supported -
www.zoneedit.com - Not tested!
- makefile adjusted for Solaris -
compilable under Solaris.
- support for generic DYNDNS service
that supports update via HTTP with basic authentication
- not yet fully
complete. Not known where might be applicable.
Ver. 1.90 - 24 February 2005
New features/enhancements:
- new option '--change_persona uid:gid'
- inadyn can switch the user after launch. Typical feature for daemons.
- addition to '--ip_server_name'
feature, now it has another parameter: the URL to read from the
given server name.
- reduced some error
messages
- manual pages updated. (thanks to
Shaul Karl)
Bugfixes:
- typo fixed (--ip_server_name option)
Ver. 1.86 - 30 January 2005
Updated UNIX man pages for inadyn. Even a page for
inadyn.conf! (thanks to Shaul Karl)
Enhancement: - Inadyn doesn't print anything (e.g.
ver. number) anymore when goes to background.
Enhancement: - new config file parser. Accepts
ESCAPE character: '\'.
Bugfix: - Corrected check of the return code from
socket() call.
Ver. 1.85 - 10 January 2005
Config file related enhancements:
- a default location for the config
file in case of no arguments for inadyn
- a more **NIX like format for the
config file. Thanks to Jerome Benoit.
Small bugfix:
- in case when 'iterations' option is
specified as being '1', inadyn exits immediately after first update,
not after the sleep period as before.
Ver. 1.81 - 23 November 2004
No new features. Just a better integration with
Linux OS:
Reviewed usage of syslog and fork to background in 'daemon mode',
thanks to Shaul Karl.
Ver. 1.80 - 16 October 2004
New feature:
--syslog: output to syslog for
Linux (should work for all **nix systems)
New feature:
run in background for Linux
(should work for all **nix systems)
Minor compile warnings removed.
Ver. 1.70 - 5 July 2004
Bugfix:
custom dns from dyndns option was
not accepted by the cmd line parser. "Copy-paste" error :-( !
New option: (not tested. It was a debug option now
made accessible via cmd line. It should work)
--iterations. Now one can run
inadyn with only one iteration.
Ver. 1.60 - 5 June 2004
On users' request the inadyn can read the options
from file. Ver. 1.5 - 1 May 2004
- Support for dynamic DNS service offered by freedns.afraid.org
- support for http proxy
- GPL Copyright notice added.
Ver. 1.4 - 1 March 2004
- Support for custom DNS and static DNS services offered by dyndns.org.
- support for forced IP update (so the account will not expire even
though the IP never
changes)
Ver. 1.35 - 04 february, 2004
- Bugfixes: - It supports AGAIN the multiple aliases for the same IP
address
- Under Windows the OS signal handler is installed only once no matter
if IP update errors
occur
Ver. 1.34 - 6 Novemeber 2003
- first port *NIX (Linux)
- Linux version running as console app
- bugfixes
Ver. 1.2 - June 2003
- port to embedded system pSOS. Runs on the Remote management card.
Note:
No DNS support under pSOS -> input params are the IP addresses of
the servers used (DynDNS,
CGI)
Ver. 1.0 - 20 May 2003 - first stable version.
main features ready:
- DYNDNS client
- free
- works fine behind a NAT router
- runs fine as a service
- has a nice log file
- it is MINE ;)
Future plans:
- port to some other DNS services.