Comments for ddclient
26 May 2004 01:19
Bind Dynamic DNS Server Patch and DSLlinl 200U/E Support
This patch allows you to use ddclient as client for a bind dynamic dns server
it needs some fixes on the hosts code to allow more then a host to be updated, but my perl is terrible.
someone, please fix it !
you will need the nsupdate tool and the key files to your bind server.
ohh ,, this patch allows you too to use a DSlink 200U/E modem in PPPoE Mode ok!
sample config:
##
## BindDNS (isc.org)
##
#the dns server
server=200.200.200.200, \
protocol=binddns, \
#the domain zone you want to update
domain=pcunha.org, \
#The password key file to be passed to nsupdate program
password=/etc/Kuser.+157+08335.private \
#the host, it only work for one host for now
somehost.pcunha.org
The DIFF code for version 3.6.3 of ddclient script
<--- BEGIN --->
--- ddclient 2004-05-26 04:20:14.000000000 -0300
+++ old/ddclient 2003-06-14 14:39:16.000000000 -0300
@@ -151,11 +151,6 @@
'url' => '/st_devic.html',
'skip' => 'WAN',
},
- 'dslink200' => {
- 'name' => 'Dslink 200U/E',
- 'url' => '/MainPage',
- 'skip' => 'PPPoE',
- },
);
my %ip_strategies = (
'ip' => ": obtain IP from -ip {address}",
@@ -248,20 +243,6 @@
'mx' => setv(T_OFQDN, 0, 1, 1, '', undef),
'backupmx' => setv(T_BOOL, 0, 1, 1, 0, undef),
},
- 'binddns-common-defaults' => {
- 'server' => setv(T_FQDNP, 1, 0, 1, '', undef),
- 'password' => setv(T_PASSWD, 1, 0, 1, '', undef),
- 'domain' => setv(T_STRING, 1, 1, 1, '', undef),
- 'host' => setv(T_STRING, 1, 1, 1, '', undef),
- 'ip' => setv(T_IP, 0, 1, 0, undef, undef),
- 'wtime' => setv(T_DELAY, 0, 1, 1, 0, interval('30s')),
- 'mtime' => setv(T_NUMBER, 0, 1, 0, 0, undef),
- 'atime' => setv(T_NUMBER, 0, 1, 0, 0, undef),
- 'status' => setv(T_ANY, 0, 1, 0, '', undef),
- 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('30s'), 0),
- 'max-interval' => setv(T_DELAY, 0, 0, 1, interval('15d'), 0),
- 'min-error-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0),
- },
'dnspark-common-defaults' => {
'mx' => setv(T_OFQDN, 0, 1, 1, '', undef),
'mxpri' => setv(T_NUMBER, 0, 0, 1, 5, undef),
@@ -338,14 +319,6 @@
$variables{'service-common-defaults'},
),
},
- 'binddns' => {
- 'updateable' => undef,
- 'update' => \&nic_binddns_update,
- 'examples' => \&nic_binddns_examples,
- 'variables' => merge(
- $variables{'binddns-common-defaults'},
- ),
- },
);
$variables{'merged'} = merge($variables{'global-defaults'},
$variables{'service-common-defaults'},
@@ -1739,13 +1712,13 @@
my $sub = shift;
my $update = 0;
-# if ($config{$host}{'login'} eq '') {
-# warning("null login name specified for host %s.", $host);
+ if ($config{$host}{'login'} eq '') {
+ warning("null login name specified for host %s.", $host);
-# } elsif ($config{$host}{'password'} eq '') {
-# warning("null password specified for host %s.", $host);
+ } elsif ($config{$host}{'password'} eq '') {
+ warning("null password specified for host %s.", $host);
- if ($opt{'force'}) {
+ } elsif ($opt{'force'}) {
info("forcing update of %s.", $host);
$update = 1;
@@ -2686,83 +2659,3 @@
}
}
######################################################################
-
-######################################################################
-## nic_binddns_updateable
-######################################################################
-sub nic_binddns_updateable {
- my $host = shift;
- my $update = 0;
-
- if ($config{$host}{'mx'} ne $cache{$host}{'mx'}) {
- info("forcing updating %s because 'mx' has changed to %s.", $host, $config{$host}{'mx'});
- $update = 1;
-
- } elsif ($config{$host}{'mx'} && ($config{$host}{'mxpri'} ne $cache{$host}{'mxpri'})) {
- info("forcing updating %s because 'mxpri' has changed to %s.", $host, $config{$host}{'mxpri'});
- $update = 1;
- }
- return $update;
-}
-######################################################################
-## nic_dnspark_examples
-######################################################################
-sub nic_binddns_examples {
- return <<EoEXAMPLE;
-
-no help avaliable yet ...
-
-EoEXAMPLE
-}
-######################################################################
-## nic_binddns_update
-######################################################################
-sub nic_binddns_update {
- debug("\nnic_binddns_update -------------------");
-
- ## group hosts with identical attributes together
- ## my %groups = group_hosts_by([ @_ ], [ qw(login password server wildcard mx backupmx) ]);
-
- ## each host is in a group by itself
- my %groups = map { $_ => [ $_ ] } @_;
-
-
- ## update each set of hosts that had similar configurations
- foreach my $sig (keys %groups) {
- my @hosts = @{$groups{$sig}};
- my $hosts = join(',', @hosts);
- my $h = $hosts[0];
- info("setting IP address to %s for %s", $ip, $hosts);
- verbose("UPDATE:","updating %s", $hosts);
-
- #'www.dnspark.com:80/vis...;
-
- my $url;
- $url = "server $config{$h}{'server'}\n";
- $url .= "zone $config{$h}{'domain'}\n";
- $url .= "update delete $hosts\n";
- $url .= "update add $hosts 60 A $ip\n";
- $url .= "send\n";
-
- my $command;
-
- $command = "/usr/bin/nsupdate -k $config{$h}{'password'} ";
-
- verbose("UPDATE:","Bind Command is :%s", $command);
- verbose("UPDATE:","Bind Arguments is :%s", $url);
-
- my $status = pipecmd($command,$url);
-
-
-
- if ($status eq 1) {
- $config{$h}{'ip'} = $ip;
- $config{$h}{'mtime'} = $now;
- success("updating %s: %s: IP address set to %s", $h, $status, $ip);
- } else {
- failed("updating %s", $h );
- }
-
- }
-}
-######################################################################
<--- END --->
i hope it work for you, take a look at the end of the code of ddclient if you want to change anything ok !
Paulo Cunha
25 May 2004 01:42
South African Dynamic DNS
Hi
Your client does not connect to the following url for updates. dynamic-dns.co.za/dnsm...
Can this be added to your client as I have several people using Linux who want to use my Dynamic-DNS service in South Africa.
Info returned by the web server for a correct entry is as follows:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Tue, 25 May 2004 08:30:47 GMT
X-Powered-By: ASP.NET
Connection: Keep-Alive
Content-Length: 14
Content-Type: text/html
Expires: Tue, 25 May 2004 08:29:48 GMT
Set-Cookie: ASPSESSIONIDSATRTDAT=AKBEHKPBGBAOCIBFOGGEEAAA; path=/
Cache-control: private
165.165.33.110
Other string's returned are:
Successful
already updated
Bad UserID or Password
suspended for abuse
period has expired
Record Not Found
Domain is Disabled
Many thanks
Conrad
19 May 2004 18:52
v3.6.3 WARNING: caught SIGTERM; exiting
I am running ddclient v3.6.3 on a Fedora Core 1 system. It seems to work well most of the time, but when I reboot and restart it I get the following error report: "WARNING: caught SIGTERM; exiting". At this point my Dyndns domain is not updated correctly. I suspect this has to do with IP address cacheing in some way as telnetting to the router and forcing a change of the WAN address seems to eventually fix the problems after a couple of go rounds. Is this a known problem...? Tnx.. Bill
30 Apr 2004 12:51
Mutiple domain updates
Is it possible to get ddclient to update mutple subdomains at once?
For testing reasons I have 3 domains
testsite.domain.com
testsite2.domain.com
testsite3.domain.com
All point to the same IP, but in order to get virtual domains to work properly in apache I can't simply have one point to another... any suggestions?
21 Apr 2004 22:59
Re: dyndns abuse
> ddclient runs fine and does it's updates
> perfectly. But it does them every 5
> minutes regardless of whether my IP
> address has changed. Dyndns has
> correctly bumped me for abuse. How do I
> get ddclient to not update if nothing
> changed?
>
> I'm running
> ddclient 3.6.2
> Lindows (debian)
> Linksys router
> Verizon DSL
>
> here's my /etc/ddclient.conf
> daemon=0
> pid=/var/run/ddclient.pid
> protocol=dyndns2
> use=linksys
> server=members.dyndns.org
> login=tomcerul
> password= is my password on dyndns.org
> cerul.dyndns.org
> fw-skip=WAN.*?IP Address
> fw-password= is my password on my
> router
>
> ps -ef gives me this:
> /usr/bin/perl -w /usr/sbin/ddclient
>
> Someone mentioned a FAQ, where is it?
> Thanks in advance.
>
>
In /etc/ddclient.conf there is an entry that reads
daemon=xxx
Where xxx is the frequency of the updates, in seconds. Set this to a suitable value.
Hope this helps
09 Mar 2004 10:54
dyndns abuse
ddclient runs fine and does it's updates perfectly. But it does them every 5 minutes regardless of whether my IP address has changed. Dyndns has correctly bumped me for abuse. How do I get ddclient to not update if nothing changed?
I'm running
ddclient 3.6.2
Lindows (debian)
Linksys router
Verizon DSL
here's my /etc/ddclient.conf
daemon=0
pid=/var/run/ddclient.pid
protocol=dyndns2
use=linksys
server=members.dyndns.org
login=tomcerul
password= is my password on dyndns.org
cerul.dyndns.org
fw=192.168.1.1/Status.htm
fw-skip=WAN.*?IP Address
fw-password= is my password on my router
ps -ef gives me this:
/usr/bin/perl -w /usr/sbin/ddclient
Someone mentioned a FAQ, where is it?
Thanks in advance.
01 Mar 2004 11:22
Re: Added Feature
Great!! Thanks alot, that's exactly what I was looking for. So far it seems to work perfectly.
I have one last problem though:
I run ddclient as a daemon. It seems like the script runs every 5mins (the time interval the daemon waits, before he tests again). I think this is because the runpostscript($ip); command is in the wrong place after update_nics(); . Unfortunately I'm not very experienced with PERL, so I would be really greatful for some advise.
Thanks again for this great contribution ;)
19 Feb 2004 12:48
Re: entry for the netgear rp614 cable/dsl router
Hi,
I didnt activate the entry in ddclient.conf which way ddclient will use to perform the update: in my case I use the web, so I activated the entry #use web ... and then it works ...
regards
Thomas
> Hi.
> I am using RH8 with netgear rp614
> router.
> I have configured my ddclient exactly as
> you explained, but it does not work.
> I may have other issues.
> When I do
> $ ddclient -daemon=0 -debug -verbose
> -noquiet
> I get something like
> ==cache==
> DEBUG: get_ip: using ip, ip reports
> WARNING: unable to determine IP address
> What kind of setting should I fix to
> solve this issue?
> I am sorry. I am a newbie, and this
> ddclient thing is a bit difficult for
> me. I appreciate any comment.
> Shin1
09 Jan 2004 01:22
change required to work with Linksys router firmware 2.45.5
in the 'linksys' section at line ~95 change the line that reads:
'url' => '/Status.htm',
to:
'url' => '/Status_Router.htm',
cache file not working ver 3.6.3: Slackware 9.1
ddclient installed and gets the WAN IP form SOHO router; have not uncommented lines in ddclient.conf to allow updates to Dynamic Service Provider until I know all is working. Problem I have is the ddclient.cache file is not being created. Without this file my guest is that ddclient will update the Dynamic Service Provider on ever check (5 min.). Anyone know what may be the problem.
See ddclient.config:
daemon=300 # check every 300 seconds = 5 min.
syslog=yes # log update msgs to syslog
mail=root # mail all msgs to root, mail=root
mail-failure # mail failed update msgs to root, mail-failure=root
pid=/var/run/ddclient.pid # record PID in file.
use=linksys, fw=192.168.1.1:80 # via Linksys's internet FW
fw-login=admin, fw-password=XXXXX # FW login and password