Hello community, here is the log from the commit of package ddclient for openSUSE:Factory checked in at Wed Jan 28 23:32:38 CET 2009. -------- --- ddclient/ddclient.changes 2009-01-27 18:12:50.000000000 +0100 +++ ddclient/ddclient.changes 2009-01-28 14:22:01.728627000 +0100 @@ -1,0 +2,15 @@ +Wed Jan 28 14:18:40 CET 2009 - kssingvo@suse.de + +- new version 3.8.0: + * better password handling + * ddclient wrapper now included + * some remarks concerning postscript in sample config file + * support for multiple IP adresses + * namecheap patch + * Preventing error while reading cache when ip wasn't set correctly + before + * Preventing an error when trying to send a message on mail-failure + * mail-on-kill functionality + * documentation changes + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- ddclient-3.7.3.tar.bz2 New: ---- ddclient-3.8.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ddclient.spec ++++++ --- /var/tmp/diff_new_pack.VJ1089/_old 2009-01-28 23:30:20.000000000 +0100 +++ /var/tmp/diff_new_pack.VJ1089/_new 2009-01-28 23:30:20.000000000 +0100 @@ -1,5 +1,5 @@ # -# spec file for package ddclient (Version 3.7.3) +# spec file for package ddclient (Version 3.8.0) # # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -25,8 +25,8 @@ Suggests: perl-IO-Socket-SSL PreReq: %fillup_prereq AutoReqProv: on -Version: 3.7.3 -Release: 73 +Version: 3.8.0 +Release: 1 Url: http://ddclient.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: A Perl Client to Update Dynamic DNS Entries @@ -114,6 +114,18 @@ %doc COPY* README* sample* %changelog +* Wed Jan 28 2009 kssingvo@suse.de +- new version 3.8.0: + * better password handling + * ddclient wrapper now included + * some remarks concerning postscript in sample config file + * support for multiple IP adresses + * namecheap patch + * Preventing error while reading cache when ip wasn't set correctly + before + * Preventing an error when trying to send a message on mail-failure + * mail-on-kill functionality + * documentation changes * Tue Jan 27 2009 kukuk@suse.de - Add PreRequires * Thu Aug 30 2007 kssingvo@suse.de ++++++ ddclient-3.7.3.tar.bz2 -> ddclient-3.8.0.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/Changelog new/ddclient-3.8.0/Changelog --- old/ddclient-3.7.3/Changelog 2007-07-30 22:04:35.000000000 +0200 +++ new/ddclient-3.8.0/Changelog 2008-06-13 22:26:59.000000000 +0200 @@ -300,5 +300,5 @@ network connectivity problems or a DynDNS server outage ------------------------------------------------------------------------------- -$Id: Changelog 72 2007-07-30 20:04:30Z wimpunk $ +$Id: Changelog 98 2008-06-13 20:26:56Z wimpunk $ ------------------------------------------------------------------------ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/ChangeLog new/ddclient-3.8.0/ChangeLog --- old/ddclient-3.7.3/ChangeLog 2007-08-07 08:36:11.000000000 +0200 +++ new/ddclient-3.8.0/ChangeLog 2009-01-27 20:14:39.000000000 +0100 @@ -1,81 +1,292 @@ +2008-12-04 wimpunk + + * [r106] ddclient: help about postscript added + +2008-11-19 wimpunk + + * [r105] ddclient, patches/password.patch: Added better password + handling sended by Ingo Schwarze + * [r104] TODO, sample-ddclient-wrapper.sh: Added ddclient wrapper + script + * [r103] ddclient: Extra fix for multiple IP's + +2008-11-01 wimpunk + + * [r102] sample-etc_ddclient.conf: Added some remarks concerning + the postscript. See + https://sourceforge.net/forum/message.php?msg_id=5550545 + +2008-09-30 wimpunk + + * [r101] ddclient, patches/multiple-ip.patch: Added support for + multiple IP adresses. See + http://permalink.gmane.org/gmane.network.dns.ddclient.user/17 + * [r100] patches/namecheap.patch: extra comments added to namecheap + patch + +2008-07-04 wimpunk + + * [r99] patches/namecheap.patch: namecheap patch added to patches + section + +2008-06-13 wimpunk + + * [r98] .: New trunk created based on the old trunk/svn + * [r96] svn: Moved old trunk/svn to ddclient and it will be the new + trunk + * [r95] svn: Ignoring test configuration + * [r94] svn/.cvsignore, svn/RELEASENOTE, svn/UPGRADE: Added some + release related files + * [r93] svn/patches/no-host.patch: Added not used no-host patch to + patches section + +2008-06-05 wimpunk + + * [r90] svn/ddclient: Added more info about the daemon interval + * [r89] svn/ddclient: Preventing error while reading cache when ip + wasn't set correctly before + * [r88] svn/ddclient: Preventing an error when trying to send a + message on mail-failure + +2008-06-02 wimpunk + + * [r87] svn/ddclient, svn/sample-etc_ddclient.conf: Modified + documentation about zoneedit based on the comments from Oren Held + +2008-03-04 wimpunk + + * [r86] svn/patches/ddclient.daemon-timeout.patch: Added patch + which was applied to rev 27 (posted by James deBoer) + +2008-02-19 wimpunk + + * [r85] svn/patches/eurodns.patch: Patch modified to apply on + ddclient 3.7.3 + +2008-02-08 wimpunk + + * [r84] svn/patches/mail-on-kill.patch: Added mail-on-kill patch to + patches section + +2008-02-05 wimpunk + + * [r83] svn/ddclient: Sending mail when killed, not after + TERM-signal + * [r82] svn/README: Added creation of cache dir + +2007-10-29 wimpunk + + * [r81] svn/ddclient, svn/patches/ubuntu/default-timeout.patch: + Added and applied default timeout patch from + https://bugs.launchpad.net/ubuntu/+source/ddclient/+bug/116066 + +2007-08-29 wimpunk + + * [r80] svn/ddclient, svn/patches/ddclient-noip.patch: Added + ddclient-noip.patch send by Kurt Bussche. + 2007-08-07 wimpunk - * [r78] ddclient: Updated version number to 3.7.3 + * [r78] svn/ddclient: Updated version number to 3.7.3 2007-08-01 wimpunk - * [r77] ddclient, patches/typo_dnspark.patch: Applied + * [r77] svn/ddclient, svn/patches/typo_dnspark.patch: Applied typo_dnspark.patch send by Marco 2007-07-31 wimpunk - * [r76] README.ssl: Renamed dyndns.org to dyndns.com - * [r75] README: Removed ^M at line 37 - * [r74] ddclient: Removed line 183, comments on Vigor 2200 USB + * [r76] svn/README.ssl: Renamed dyndns.org to dyndns.com + * [r75] svn/README: Removed ^M at line 37 + * [r74] svn/ddclient: Removed line 183, comments on Vigor 2200 USB 2007-07-30 wimpunk - * [r73] .: Ignoring ChangeLog since autogenerated - * [r72] Changelog: Notification about changed ChangeLog + * [r73] svn: Ignoring ChangeLog since autogenerated + * [r72] svn/Changelog: Notification about changed ChangeLog configuration - * [r71] patches/ubuntu/dyndns_com.diff: Removed patch since it's - invalid - * [r70] patches/opendns.patch: Added not applied opendns.patch, see - tracker #1758564 - * [r69] patches/debianpatches, - patches/debianpatches/abuse_msg.diff, - patches/debianpatches/cachedir.diff, - patches/debianpatches/cisco_fw.diff, - patches/debianpatches/config_path.diff, - patches/debianpatches/daemon_check.diff, - patches/debianpatches/daemon_interval.diff, - patches/debianpatches/help_nonroot(2).diff, - patches/debianpatches/help_nonroot.diff, - patches/debianpatches/ip-up_run-parts.diff, - patches/debianpatches/maxinterval.diff, - patches/debianpatches/readme.txt, - patches/debianpatches/sample_path.diff, - patches/debianpatches/smc-barricade-7401bra.patch, - patches/debianpatches/smc-barricade-fw-alt.diff, - patches/debianpatches/update-new-config.patch, patches/ubuntu, - patches/ubuntu/checked_ssl_load.diff, - patches/ubuntu/config_path.diff, - patches/ubuntu/daemon_interval.diff, - patches/ubuntu/dyndns_com.diff, - patches/ubuntu/sample_ubuntu.diff, patches/ubuntu/series, - patches/ubuntu/smc-barricade-fw-alt.diff: Added debian and ubuntu - patches + * [r71] svn/patches/ubuntu/dyndns_com.diff: Removed patch since + it's invalid + * [r70] svn/patches/opendns.patch: Added not applied opendns.patch, + see tracker #1758564 + * [r69] svn/patches/debianpatches, + svn/patches/debianpatches/abuse_msg.diff, + svn/patches/debianpatches/cachedir.diff, + svn/patches/debianpatches/cisco_fw.diff, + svn/patches/debianpatches/config_path.diff, + svn/patches/debianpatches/daemon_check.diff, + svn/patches/debianpatches/daemon_interval.diff, + svn/patches/debianpatches/help_nonroot(2).diff, + svn/patches/debianpatches/help_nonroot.diff, + svn/patches/debianpatches/ip-up_run-parts.diff, + svn/patches/debianpatches/maxinterval.diff, + svn/patches/debianpatches/readme.txt, + svn/patches/debianpatches/sample_path.diff, + svn/patches/debianpatches/smc-barricade-7401bra.patch, + svn/patches/debianpatches/smc-barricade-fw-alt.diff, + svn/patches/debianpatches/update-new-config.patch, + svn/patches/ubuntu, svn/patches/ubuntu/checked_ssl_load.diff, + svn/patches/ubuntu/config_path.diff, + svn/patches/ubuntu/daemon_interval.diff, + svn/patches/ubuntu/dyndns_com.diff, + svn/patches/ubuntu/sample_ubuntu.diff, svn/patches/ubuntu/series, + svn/patches/ubuntu/smc-barricade-fw-alt.diff: Added debian and + ubuntu patches 2007-07-29 wimpunk - * [r68] TODO: Added url to feature request dyndns + * [r68] svn/TODO: Added url to feature request dyndns 2007-07-12 wimpunk - * [r67] README, patches/readme.patch: Run dos2unix on readme and - it's patch which Marco Rodrigues submitted. - * [r66] README, patches/readme.patch: Partial applied readme.patch. - See tracker #1752931 + * [r67] svn/README, svn/patches/readme.patch: Run dos2unix on + readme and it's patch which Marco Rodrigues submitted. + * [r66] svn/README, svn/patches/readme.patch: Partial applied + readme.patch. See tracker #1752931 2007-07-10 wimpunk - * [r65] ddclient: signature modified - * [r64] ddclient: Added website to ddclient comments - * [r63] patches/regex_vlan.patch: Added extra comments to the + * [r65] svn/ddclient: signature modified + * [r64] svn/ddclient: Added website to ddclient comments + * [r63] svn/patches/regex_vlan.patch: Added extra comments to the patch. - * [r62] ddclient, patches/create_patch.sh, - patches/regex_vlan.patch, patches/typo_namecheap_patch.diff.new: - Added patches and applied regex_vlan.patch. See bug #1747337 - * [r61] ddclient: Applied typo_namecheap_patch.diff send by Marco - Rodrigues + * [r62] svn/ddclient, svn/patches/create_patch.sh, + svn/patches/regex_vlan.patch, + svn/patches/typo_namecheap_patch.diff.new: Added patches and + applied regex_vlan.patch. See bug #1747337 + * [r61] svn/ddclient: Applied typo_namecheap_patch.diff send by + Marco Rodrigues 2007-07-07 wimpunk - * [r60] sample-etc_ppp_ip-up.local: Reverted the patch from + * [r60] svn/sample-etc_ppp_ip-up.local: Reverted the patch from torsten. See [ 1749470 ] Bug in Script sample-etc_ppp_ip-up.local 2007-07-04 wimpunk - * [r59] release, release/readme.txt: Adding some release + * [r59] svn/release, svn/release/readme.txt: Adding some release documentation +2007-06-14 wimpunk + + * [r57] svn/Changelog, svn/ddclient: Changed version number + * [r55] svn/patches, svn/patches/3com-oc-remote812.patch, + svn/patches/easydns.patch, svn/patches/eurodns.patch: Patches + directory added + +2007-06-12 wimpunk + + * [r54] svn/ddclient: 3com-oc-remote812 patch by The_Beast via IRC: + see patches/3com-oc-remote812.patch + +2007-06-05 wimpunk + + * [r53] svn/ddclient: Applied easydns.patch, patch 117054 + +2007-05-28 wimpunk + + * [r52] svn/ddclient: Changed nic_namecheap_update following the + suggestion of edmdude on the forum + (https://sourceforge.net/forum/message.php?msg_id=4316938) + +2007-05-19 wimpunk + + * [r48] svn/ddclient: Cosmetic change about checkip + * [r47] svn/ddclient: Applied checked_ssl_load.diff from ubuntu + * [r46] svn/ddclient: Removed the two empty lines at the end of + ddclient + +2007-02-26 wimpunk + + * [r44] svn/TODO: added a TODO list + +2007-02-21 wimpunk + + * [r43] svn/Changelog, svn/ddclient: Preventing unitialized values, + check https://sourceforge.net/forum/message.php?msg_id=4167772 + +2007-01-24 wimpunk + + * [r40] svn/Changelog, svn/ddclient: Changed max-interval to + 25days. See https://www.dyndns.com/services/dns/dyndns/faq.html + +2006-12-03 wimpunk + + * [r39] svn/Changelog, svn/ddclient: Applied maxinterval.diff: + Increase max interval for updates. + See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129370 + http://www.dyndns.com/support/services/dyndns/faq.html#q15 + * [r38] svn/ddclient: Applied cisco_fw.diff: Use configured + hostname for firewall access with + -use=cisco (closes: #345712). Thanks to Per Carlson for the + patch! + See http://bugs.debian.org/345712. + +2006-12-02 wimpunk + + * [r37] svn/Changelog, svn/ddclient: Applied + smc-barricade-7401bra.patch: Support for SMC Barricade 7401BRA FW + firewall (submitted by Torsten) + Changelog modified for all previous patches from Torsten + * [r36] svn/ddclient: Applied update-new-config.patch: Force update + if config has changed + (submitted by Torsten) + * [r35] svn/sample-etc_ppp_ip-up.local: Applied + ip-up_run-parts.diff: Fix parameter in ip-up script. + (submitted by Torsten) + * [r34] svn/ddclient: Applied help_nonroot.diff: Allow calling the + help function as non-root. + (submitted by Torsten) + * [r33] svn/ddclient: Applied cachedir.diff: Original ddclient + stores a cache file in /etc which + would belong in /var/cache in my opinion and according to the + FHS. Patch + changes that. (submitted by Torsten) + * [r32] svn/ddclient: Applied abuse_msg.diff: ddclient still + reports the email to contact dyndns.org + but they prefer a web form today (IIRC). This patch adjusts the + abuse warning + printed by ddclient. (submitted by Torsten) + * [r31] svn/Changelog: Changed Changelog syntax + +2006-11-27 wimpunk + + * [r30] svn/Changelog, svn/ddclient: Don't send any mail when in + not running daemon mode (patch submitted by Daniel Thaler) + +2006-11-03 wimpunk + + * [r28] svn/Changelog, svn/ddclient: Added patch "Patch: Treat + --daemon values as intervals" + (submitted by James deBoer) + +2006-09-30 wimpunk + + * [r22] svn/Changelog, svn/sample-etc_rc.d_init.d_ddclient.ubuntu: + Added initscript for Ubuntu (posted by Paolo Martinelli) + +2006-09-14 wimpunk + + * [r21] svn/Changelog, svn/ddclient: URL of zoneedit has changed + (see bug #1558483) + +2006-06-14 wimpunk + + * [r11] svn/Changelog, svn/ddclient: Changed version number + * [r8] ., html, svn, xml: Created trunk and tags, moved directories + to it + * [r6] Changed the order of perl and update of README.ssl + +2006-06-11 ddfisher + + * [r5] see Changelog + +2006-06-10 ddfisher + + * [r4] updated changelog + * [r3] See Changelog + +2006-05-22 wimpunk + + * [r2] Reorganise + diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/ddclient new/ddclient-3.8.0/ddclient --- old/ddclient-3.7.3/ddclient 2007-08-07 08:35:56.000000000 +0200 +++ new/ddclient-3.8.0/ddclient 2009-01-27 20:14:02.000000000 +0100 @@ -1,7 +1,7 @@ #!/usr/bin/perl -w #!/usr/local/bin/perl -w ###################################################################### -# $Id: ddclient 78 2007-08-07 06:35:55Z wimpunk $ +# $Id: ddclient 106 2008-12-04 18:05:23Z wimpunk $ # # DDCLIENT - a Perl client for updating DynDNS information # @@ -10,6 +10,9 @@ # # website: http://ddclient.sf.net # +# Support for multiple IP numbers added by +# Astaro AG, Ingo Schwarze <ischwarze-OOs/4mkCeqbQT0dZR+AlfA@public.gmane.org> September 16, 2008 +# ###################################################################### require 5.004; use strict; @@ -17,7 +20,7 @@ use Sys::Hostname; use IO::Socket; -my $version = "3.7.3"; +my $version = "3.8.0"; my $programd = $0; $programd =~ s%^.*/%%; my $program = $programd; @@ -323,7 +326,7 @@ 'cmd' => setv(T_PROG, 0, 0, 1, '', undef), 'cmd-skip' => setv(T_STRING,1, 0, 1, '', undef), - 'timeout' => setv(T_DELAY, 0, 0, 1, 0, interval('120s')), + 'timeout' => setv(T_DELAY, 0, 0, 1, interval('120s'), interval('120s')), 'retry' => setv(T_BOOL, 0, 0, 0, 0, undef), 'force' => setv(T_BOOL, 0, 0, 0, 0, undef), 'ssl' => setv(T_BOOL, 0, 0, 0, 0, undef), @@ -349,6 +352,19 @@ 'login' => setv(T_LOGIN, 1, 0, 1, '', undef), 'password' => setv(T_PASSWD, 1, 0, 1, '', undef), 'host' => setv(T_STRING, 1, 1, 1, '', undef), + + 'use' => setv(T_USE, 0, 0, 1, 'ip', undef), + 'if' => setv(T_IF, 0, 0, 1, 'ppp0', undef), + 'if-skip' => setv(T_STRING,0, 0, 1, '', undef), + 'web' => setv(T_STRING,0, 0, 1, 'dyndns', undef), + 'web-skip' => setv(T_STRING,0, 0, 1, '', undef), + 'fw' => setv(T_ANY, 0, 0, 1, '', undef), + 'fw-skip' => setv(T_STRING,0, 0, 1, '', undef), + 'fw-login' => setv(T_LOGIN, 0, 0, 1, '', undef), + 'fw-password' => setv(T_PASSWD,0, 0, 1, '', undef), + 'cmd' => setv(T_PROG, 0, 0, 1, '', undef), + 'cmd-skip' => setv(T_STRING,0, 0, 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), @@ -376,6 +392,25 @@ 'mx' => setv(T_OFQDN, 0, 1, 1, '', undef), 'mxpri' => setv(T_NUMBER, 0, 0, 1, 5, undef), }, + 'noip-common-defaults' => { + 'static' => setv(T_BOOL, 0, 1, 1, 0, undef), + }, + 'noip-service-common-defaults' => { + 'server' => setv(T_FQDNP, 1, 0, 1, 'dynupdate.no-ip.com', undef), + 'login' => setv(T_LOGIN, 1, 0, 1, '', undef), + 'password' => setv(T_PASSWD, 1, 0, 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('25d'), 0), + 'min-error-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0), + 'warned-min-interval' => setv(T_ANY, 0, 1, 0, 0, undef), + 'warned-min-error-interval' => setv(T_ANY, 0, 1, 0, 0, undef), + }, ); my %services = ( 'dyndns1' => { @@ -398,6 +433,16 @@ $variables{'service-common-defaults'}, ), }, + 'noip' => { + 'updateable' => undef, + 'update' => \&nic_noip_update, + 'examples' => \&nic_noip_examples, + 'variables' => merge( + { 'custom' => setv(T_BOOL, 0, 1, 1, 0, undef), }, + $variables{'noip-common-defaults'}, + $variables{'noip-service-common-defaults'}, + ), + }, 'concont' => { 'updateable' => undef, 'update' => \&nic_concont_update, @@ -489,7 +534,7 @@ my @opt = ( "usage: ${program} [options]", "options are:", - [ "daemon", "=s", "-daemon delay : run as a daemon" ], + [ "daemon", "=s", "-daemon delay : run as a daemon, specify delay as an interval." ], [ "proxy", "=s", "-proxy host : use 'host' as the HTTP proxy" ], [ "server", "=s", "-server host : update DNS information on 'host'" ], [ "protocol", "=s", "-protocol type : update protocol used" ], @@ -537,6 +582,7 @@ [ "verbose", "!", "-{no}verbose : print {no} verbose information" ], [ "quiet", "!", "-{no}quiet : print {no} messages for unnecessary updates" ], [ "help", "", "-help : this message" ], + [ "postscript", "", "-postscript : script to run after updating ddclient, has new IP as param" ], [ "query", "!", "-{no}query : print {no} ip addresses and exit" ], [ "test", "!", "" ], ## hidden @@ -573,8 +619,10 @@ } my $caught_hup = 0; my $caught_term = 0; +my $caught_kill = 0; $SIG{'HUP'} = sub { $caught_hup = 1; }; $SIG{'TERM'} = sub { $caught_term = 1; }; +$SIG{'KILL'} = sub { $caught_kill = 1; }; if (opt('daemon') && !opt('force')) { $SIG{'CHLD'} = 'IGNORE'; my $pid = fork; @@ -594,7 +642,7 @@ } umask 077; -my ($daemon, $ip); +my $daemon; do { $now = time; $result = 'OK'; @@ -617,26 +665,14 @@ $daemon = $opt{'daemon'}; $daemon = 0 if opt('force'); - ## obtain the IP address to use. - $ip = get_ip(opt('use')); - - ## a little sanity check and then update the NICs.. - if (!defined $ip || !$ip) { - warning("unable to determine IP address") if !$daemon || opt('verbose'); - - } elsif ($ip !~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { - warning("malformed IP address (%s)", $ip); - - } else { - update_nics(); - } + update_nics(); if ($daemon) { debug("sleep %s", $daemon); sendmail(); my $left = $daemon; - while (($left > 0) && !$caught_hup && !$caught_term) { + while (($left > 0) && !$caught_hup && !$caught_term && !$caught_kill) { my $delay = $left > 10 ? 10 : $left; $0 = sprintf("%s - sleeping for %s seconds", $program, $left); @@ -652,9 +688,9 @@ } else { $result = $result eq 'OK' ? 0 : 1; } -} while ($daemon && !$result && !$caught_term); +} while ($daemon && !$result && !$caught_term && !$caught_kill); -warning("caught SIGTERM; exiting") if $caught_term; +warning("caught SIGKILL; exiting") if $caught_kill; unlink_pid(); sendmail(); @@ -683,20 +719,34 @@ my %examined = (); foreach my $s (sort keys %services) { - my @hosts = (); + my (@hosts, %ips) = (); my $updateable = $services{$s}{'updateable'}; my $update = $services{$s}{'update'}; foreach my $h (sort keys %config) { next if $config{$h}{'protocol'} ne lc($s); $examined{$h} = 1; + my $use = $config{$h}{'use'} || opt('use'); + local $opt{$use} = $config{$h}{$use} if $config{$h}{$use}; + my $ip = get_ip($use); + if (!defined $ip || !$ip) { + warning("unable to determine IP address") + if !$daemon || opt('verbose'); + next; + } + if ($ip !~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) { + warning("malformed IP address (%s)", $ip); + next; + } + $config{$h}{'wantip'} = $ip; next if !nic_updateable($h, $updateable); push @hosts, $h; + $ips{$ip} = $h; } if (@hosts) { $0 = sprintf("%s - updating %s", $program, join(',', @hosts)); &$update(@hosts); - runpostscript($ip); + runpostscript(join ' ', keys %ips); } } foreach my $h (sort keys %config) { @@ -888,6 +938,7 @@ local $lineno = 0; my $continuation = ''; + my %passwords = (); while (<FD>) { s/[\r\n]//g; @@ -903,10 +954,17 @@ } $content .= "$_\n" unless /^#/; - # lines contain passwords are a special case, we don't want to - # arbitrarily strip out '#' - if (/^(\S*password\S*)\s*=\s*(\S+)/i) { $_ = "$1=$2"; } - if (/^#/ || !(/password/i) || /#.*password/i) { s/#.*//; } # remove comments + + ## parsing passwords is special + if (/^([^#]*\s)?([^#]*?password\S*?)\s*=\s*('.*'|[^']\S*)(.*)/) { + my ($head, $key, $value, $tail) = ($1 || '', $2, $3, $4); + $value = $1 if $value =~ /^'(.*)'$/; + $passwords{$key} = $value; + $_ = "${head}${key}=dummy${tail}"; + } + + ## remove comments + s/#.*//; ## handle continuation lines $_ = "$continuation$_"; @@ -931,6 +989,7 @@ ## verify that keywords are valid...and check the value foreach my $k (keys %locals) { + $locals{$k} = $passwords{$k} if defined $passwords{$k}; if (!exists $variables{'merged'}{$k}) { warning("unrecognized keyword '%s' (ignored)", $k); delete $locals{$k}; @@ -969,6 +1028,7 @@ $config{$h}{'host'} = $h; } } + %passwords = (); } close(FD); @@ -1372,7 +1432,7 @@ sub sendmail { my $recipients = opt('mail'); - if (opt('mail-failure') && ($result ne 'OK' && $result != 0)) { + if (opt('mail-failure') && ($result ne 'OK' && $result ne '0')) { $recipients = opt('mail-failure'); } if ($msgs && $recipients && $msgs ne $last_msgs) { @@ -1885,7 +1945,7 @@ my %groups = (); foreach my $h (@$hosts) { - my @keys = @$attributes; + my @keys = (@$attributes, 'wantip'); map { $config{$h}{$_} = '' unless exists $config{$h}{$_} } @keys; my $sig = join(',', map { "$_=$config{$h}{$_}" } @keys); @@ -1928,7 +1988,8 @@ specifies that ${program} should operate as a daemon, checking the eth0 interface for an IP address change every 5 minutes and use the -'dyndns2' protocol by default. +'dyndns2' protocol by default. The daemon interval can be specified +as seconds (600s), minutes (5m), hours (1h) or days (1d). Host definitions look like: [name=value [,name=value]*]* a.host.domain [,b.host.domain] [login] [password] @@ -1964,6 +2025,7 @@ my $host = shift; my $sub = shift; my $update = 0; + my $ip = $config{$host}{'wantip'}; if ($config{$host}{'login'} eq '') { warning("null login name specified for host %s.", $host); @@ -1995,8 +2057,10 @@ ); $update = 1; - } elsif ($cache{$host}{'ip'} ne $ip) { - if (($cache{$host}{'status'} eq 'good') && !interval_expired($host, 'mtime', 'min-interval')) { + } elsif ((!exists($cache{$host}{'ip'})) || + ("$cache{$host}{'ip'}" ne "$ip")) { + if (($cache{$host}{'status'} eq 'good') && + !interval_expired($host, 'mtime', 'min-interval')) { warning("skipping update of %s from %s to %s.\nlast updated %s.\nWait at least %s between update attempts.", $host, @@ -2122,6 +2186,7 @@ debug("\nnic_dyndns1_update -------------------"); ## update each configured host foreach my $h (@_) { + my $ip = delete $config{$h}{'wantip'}; info("setting IP address to %s for %s", $ip, $h); verbose("UPDATE:","updating %s", $h); @@ -2266,6 +2331,8 @@ my @hosts = @{$groups{$sig}}; my $hosts = join(',', @hosts); my $h = $hosts[0]; + my $ip = $config{$h}{'wantip'}; + delete $config{$_}{'wantip'} foreach @hosts; info("setting IP address to %s for %s", $ip, $hosts); verbose("UPDATE:","updating %s", $hosts); @@ -2359,6 +2426,139 @@ if $state ne 'results2'; } } + + +###################################################################### +## nic_noip_update +## Note: uses same features as nic_dyndns2_update, less return codes +###################################################################### +sub nic_noip_update { + debug("\nnic_noip_update -------------------"); + + ## group hosts with identical attributes together + my %groups = group_hosts_by([ @_ ], [ qw(login password server static custom wildcard mx backupmx) ]); + + my %errors = ( + 'badauth' => 'Invalid username or password', + 'badagent' => 'Invalid user agent', + 'nohost' => 'The hostname specified does not exist in the database', + '!donator' => 'The offline setting was set, when the user is not a donator', + 'abuse', => 'The hostname specified is blocked for abuse; open a trouble ticket at http://www.no-ip.com', + 'numhost' => 'System error: Too many or too few hosts found. open a trouble ticket at http://www.no-ip.com', + 'dnserr' => 'System error: DNS error encountered. Contact support@dyndns.org', + 'nochg' => 'No update required; unnecessary attempts to change to the current address are considered abusive', + ); + + ## 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]; + my $ip = $config{$h}{'wantip'}; + delete $config{$_}{'wantip'} foreach @hosts; + + info("setting IP address to %s for %s", $ip, $hosts); + verbose("UPDATE:","updating %s", $hosts); + + my $url = "http://$config{$h}{'server'}/nic/update?system="; + $url .= 'noip'; + $url .= "&hostname=$hosts"; + $url .= "&myip="; + $url .= $ip if $ip; + + + print "here..." . $config{$h}{'login'} . " --> " . $config{$h}{'password'} . "\n"; + + + my $reply = geturl(opt('proxy'), $url, $config{$h}{'login'}, $config{$h}{'password'}); + if (!defined($reply) || !$reply) { + failed("updating %s: Could not connect to %s.", $hosts, $config{$h}{'server'}); + last; + } + last if !header_ok($hosts, $reply); + + my @reply = split /\n/, $reply; + my $state = 'header'; + foreach my $line (@reply) { + if ($state eq 'header') { + $state = 'body'; + + } elsif ($state eq 'body') { + $state = 'results' if $line eq ''; + + } elsif ($state =~ /^results/) { + $state = 'results2'; + + my ($status, $ip) = split / /, lc $line; + my $h = shift @hosts; + + $config{$h}{'status'} = $status; + if ($status eq 'good') { + $config{$h}{'ip'} = $ip; + $config{$h}{'mtime'} = $now; + success("updating %s: %s: IP address set to %s", $h, $status, $ip); + + } elsif (exists $errors{$status}) { + if ($status eq 'nochg') { + warning("updating %s: %s: %s", $h, $status, $errors{$status}); + $config{$h}{'ip'} = $ip; + $config{$h}{'mtime'} = $now; + $config{$h}{'status'} = 'good'; + + } else { + failed("updating %s: %s: %s", $h, $status, $errors{$status}); + } + + } elsif ($status =~ /w(\d+)(.)/) { + my ($wait, $units) = ($1, lc $2); + my ($sec, $scale) = ($wait, 1); + + ($scale, $units) = (1, 'seconds') if $units eq 's'; + ($scale, $units) = (60, 'minutes') if $units eq 'm'; + ($scale, $units) = (60*60, 'hours') if $units eq 'h'; + + $sec = $wait * $scale; + $config{$h}{'wtime'} = $now + $sec; + warning("updating %s: %s: wait $wait $units before further updates", $h, $status, $ip); + + } else { + failed("updating %s: %s: unexpected status (%s)", $h, $line); + } + } + } + failed("updating %s: Could not connect to %s.", $hosts, $config{$h}{'server'}) + if $state ne 'results2'; + } +} +###################################################################### +## nic_noip_examples +###################################################################### +sub nic_noip_examples { + return <<EoEXAMPLE; +o 'noip' + +The 'No-IP Compatible' protocol is used to make dynamic dns updates +over an http request. Details of the protocol are outlined at: +http://www.no-ip.com/integrate/ + +Configuration variables applicable to the 'noip' protocol are: + protocol=noip ## + server=fqdn.of.service ## defaults to dynupdate.no-ip.com + login=service-login ## login name and password registered with the service + password=service-password ## + fully.qualified.host ## the host registered with the service. + +Example ${program}.conf file entries: + ## single host update + protocol=noip, \\ + login=userlogin\@domain.com, \\ + password=noip-password \\ + myhost.no-ip.biz + + +EoEXAMPLE +} + ###################################################################### ## nic_concont_examples ###################################################################### @@ -2398,6 +2598,7 @@ ## update each configured host foreach my $h (@_) { + my $ip = delete $config{$h}{'wantip'}; info("setting IP address to %s for %s", $ip, $h); verbose("UPDATE:","updating %s", $h); @@ -2480,6 +2681,7 @@ debug("\nnic_dslreports1_update -------------------"); ## update each configured host foreach my $h (@_) { + my $ip = delete $config{$h}{'wantip'}; info("setting IP address to %s for %s", $ip, $h); verbose("UPDATE:","updating %s", $h); @@ -2555,6 +2757,7 @@ ## update each configured host foreach my $h (@_) { + my $ip = delete $config{$h}{'wantip'}; info("setting IP address to %s for %s", $ip, $h); verbose("UPDATE:","updating %s", $h); @@ -2605,7 +2808,7 @@ Example ${program}.conf file entries: ## single host update protocol=zoneedit1, \\ - server=www.zoneedit.com, \\ + server=dynamic.zoneedit.com, \\ login=my-zoneedit-login, \\ password=my-zoneedit-password \\ my.domain.name @@ -2636,6 +2839,8 @@ my @hosts = @{$groups{$sig}}; my $hosts = join(',', @hosts); my $h = $hosts[0]; + my $ip = $config{$h}{'wantip'}; + delete $config{$_}{'wantip'} foreach @hosts; info("setting IP address to %s for %s", $ip, $hosts); verbose("UPDATE:","updating %s", $hosts); @@ -2778,6 +2983,9 @@ my @hosts = @{$groups{$sig}}; my $hosts = join(',', @hosts); my $h = $hosts[0]; + my $ip = $config{$h}{'wantip'}; + delete $config{$_}{'wantip'} foreach @hosts; + info("setting IP address to %s for %s", $ip, $hosts); verbose("UPDATE:","updating %s", $hosts); @@ -2935,6 +3143,9 @@ my @hosts = @{$groups{$sig}}; my $hosts = join(',', @hosts); my $h = $hosts[0]; + my $ip = $config{$h}{'wantip'}; + delete $config{$_}{'wantip'} foreach @hosts; + info("setting IP address to %s for %s", $ip, $hosts); verbose("UPDATE:","updating %s", $hosts); @@ -3050,6 +3261,7 @@ ## update each configured host foreach my $h (@_) { + my $ip = delete $config{$h}{'wantip'}; info("setting IP address to %s for %s", $ip, $h); verbose("UPDATE:","updating %s", $h); @@ -3132,6 +3344,7 @@ ## update each configured host foreach my $h (@_) { + my $ip = delete $config{$h}{'wantip'}; info("setting IP address to %s for %s", $ip, $h); verbose("UPDATE:","updating %s", $h); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/README new/ddclient-3.8.0/README --- old/ddclient-3.7.3/README 2007-07-31 09:05:21.000000000 +0200 +++ new/ddclient-3.8.0/README 2008-06-13 22:26:59.000000000 +0200 @@ -51,6 +51,7 @@ cp ddclient /usr/sbin/ mkdir /etc/ddclient + mkdir /var/cache/ddclient cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf vi /etc/ddclient/ddclient.conf -- and change hostnames, logins, and passwords appropriately @@ -58,6 +59,7 @@ ## For those using Redhat style rc files and using daemon-mode: cp sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient ## enable automatic startup when booting + ## check your distribution /sbin/chkconfig --add ddclient ## start the first time by hand /etc/rc.d/init.d/ddclient start @@ -170,4 +172,4 @@ and monitor your ethernet interface. ------------------------------------------------------------------------------- -$Id: README 75 2007-07-31 07:05:20Z wimpunk $ +$Id: README 98 2008-06-13 20:26:56Z wimpunk $ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/README.cisco new/ddclient-3.8.0/README.cisco --- old/ddclient-3.7.3/README.cisco 2006-06-14 21:51:48.000000000 +0200 +++ new/ddclient-3.8.0/README.cisco 2008-06-13 22:26:59.000000000 +0200 @@ -1,4 +1,4 @@ -$Id: README.cisco 8 2006-06-14 19:51:39Z wimpunk $ +$Id: README.cisco 98 2008-06-13 20:26:56Z wimpunk $ Method 1 ------------------------------------------------------ The following config will allow the Linux machine (10.1.1.2) to read diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/README.ssl new/ddclient-3.8.0/README.ssl --- old/ddclient-3.7.3/README.ssl 2007-07-31 09:06:49.000000000 +0200 +++ new/ddclient-3.8.0/README.ssl 2008-06-13 22:26:59.000000000 +0200 @@ -1,4 +1,4 @@ -$Id: README.ssl 76 2007-07-31 07:06:48Z wimpunk $ +$Id: README.ssl 98 2008-06-13 20:26:56Z wimpunk $ Since 3.7.0, ddclient support ssl-updates To use ssl, put "ssl=yes" in your configuration and make sure diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/RELEASENOTE new/ddclient-3.8.0/RELEASENOTE --- old/ddclient-3.7.3/RELEASENOTE 1970-01-01 01:00:00.000000000 +0100 +++ new/ddclient-3.8.0/RELEASENOTE 2009-01-27 20:33:14.000000000 +0100 @@ -0,0 +1,11 @@ +It's been a while but here is new release of ddclient. There are some important +changes and some documentation is modified. A detailed overview can be found +in ChangeLog but here's a quick overview: + + * Added ddclient-noip.patch send by Kurt Bussche. + * Added and applied default timeout patch from + https://bugs.launchpad.net/ubuntu/+source/ddclient/+bug/116066 + * Sending mail when killed, not after TERM-signal + * Added support for multiple IP adresses. + + diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/sample-ddclient-wrapper.sh new/ddclient-3.8.0/sample-ddclient-wrapper.sh --- old/ddclient-3.7.3/sample-ddclient-wrapper.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/ddclient-3.8.0/sample-ddclient-wrapper.sh 2008-11-19 22:03:43.000000000 +0100 @@ -0,0 +1,15 @@ +#!/bin/bash +# +# This wrapper should be usefull for people who want to run a postscript with +# multiple arguments. Currently ddclient has a feature which doesn't allow +# multiple arguments. +# This example has been written to be able to update multiple domains with +# multiple login. It expects a /etc/ddclient/ddclient-domain2.conf with the +# configuration of the extra domain + +# the second domain who has to be updated +: ${SECONDCONFIG:=/etc/ddclient/ddclient-domain2.conf} +# ddclient adds the new IP as argument +IP=$1 + +ddclient -ip ${IP} -file ${SECONDCONFIG} -daemon 0 diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/sample-etc_cron.d_ddclient new/ddclient-3.8.0/sample-etc_cron.d_ddclient --- old/ddclient-3.7.3/sample-etc_cron.d_ddclient 2006-06-14 21:51:48.000000000 +0200 +++ new/ddclient-3.8.0/sample-etc_cron.d_ddclient 2008-06-13 22:26:59.000000000 +0200 @@ -1,6 +1,6 @@ ###################################################################### ## ddclient is an IP address updater for www.dyndns.org -## $Id: sample-etc_cron.d_ddclient 8 2006-06-14 19:51:39Z wimpunk $ +## $Id: sample-etc_cron.d_ddclient 98 2008-06-13 20:26:56Z wimpunk $ ###################################################################### ## minute 0-59 ## hour 0-23 diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/sample-etc_ddclient.conf new/ddclient-3.8.0/sample-etc_ddclient.conf --- old/ddclient-3.7.3/sample-etc_ddclient.conf 2006-06-14 21:51:48.000000000 +0200 +++ new/ddclient-3.8.0/sample-etc_ddclient.conf 2008-11-19 21:20:34.000000000 +0100 @@ -1,6 +1,6 @@ ###################################################################### ## -## $Id: sample-etc_ddclient.conf 8 2006-06-14 19:51:39Z wimpunk $ +## $Id: sample-etc_ddclient.conf 102 2008-11-01 11:23:03Z wimpunk $ ## ## Define default global variables with lines like: ## var=value [, var=value]* @@ -25,6 +25,8 @@ pid=/var/run/ddclient.pid # record PID in file. ssl=yes # use ssl-support. Works with # ssl-library +# postscript=script # run script after updating. The + # new IP is added as argument. # #use=watchguard-soho, fw=192.168.111.1:80 # via Watchguard's SOHO FW #use=netopia-r910, fw=192.168.111.1:80 # via Netopia R910 FW @@ -98,7 +100,7 @@ ## ## ZoneEdit (zoneedit.com) ## -# server=www.zoneedit.com, \ +# server=dynamic.zoneedit.com, \ # protocol=zoneedit1, \ # login=your-zoneedit-login, \ # password=your-zoneedit-password \ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/sample-etc_dhclient-exit-hooks new/ddclient-3.8.0/sample-etc_dhclient-exit-hooks --- old/ddclient-3.7.3/sample-etc_dhclient-exit-hooks 2006-06-14 21:51:48.000000000 +0200 +++ new/ddclient-3.8.0/sample-etc_dhclient-exit-hooks 2008-06-13 22:26:59.000000000 +0200 @@ -1,6 +1,6 @@ #!/bin/sh ###################################################################### -## $Id: sample-etc_dhclient-exit-hooks 8 2006-06-14 19:51:39Z wimpunk $ +## $Id: sample-etc_dhclient-exit-hooks 98 2008-06-13 20:26:56Z wimpunk $ ###################################################################### # The /etc/dhclient-enter-hooks script is run by the ISC DHCP client's standard # update script whenever dhclient obtains or renews an address. diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/sample-etc_dhcpc_dhcpcd-eth0.exe new/ddclient-3.8.0/sample-etc_dhcpc_dhcpcd-eth0.exe --- old/ddclient-3.7.3/sample-etc_dhcpc_dhcpcd-eth0.exe 1970-01-01 01:00:00.000000000 +0100 +++ new/ddclient-3.8.0/sample-etc_dhcpc_dhcpcd-eth0.exe 2008-06-13 22:26:59.000000000 +0200 @@ -0,0 +1,20 @@ +#!/bin/sh +###################################################################### +## $Id: sample-etc_dhcpc_dhcpcd-eth0.exe 98 2008-06-13 20:26:56Z wimpunk $ +###################################################################### +PATH=/usr/sbin:${PATH} + +## update the DNS server unless the IP address is a private address +## that may be used as an internal LAN address. This may be true if +## other interfaces are assigned private addresses from internal +## DHCP server. + +case "$1" in +10.*) ;; +172.1[6-9].* | 172.2[0-9].* | 172.3[0-1].*) ;; +192.168.*) ;; +*) + logger -t dhcpcd IP address changed to $1 + ddclient -daemon=0 -syslog -use=ip -ip=$1 >/dev/null 2>&1 + ;; +esac diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/sample-etc_ppp_ip-up.local new/ddclient-3.8.0/sample-etc_ppp_ip-up.local --- old/ddclient-3.7.3/sample-etc_ppp_ip-up.local 2007-07-07 14:37:47.000000000 +0200 +++ new/ddclient-3.8.0/sample-etc_ppp_ip-up.local 2008-06-13 22:26:59.000000000 +0200 @@ -1,6 +1,6 @@ #!/bin/sh ###################################################################### -## $Id: sample-etc_ppp_ip-up.local 60 2007-07-07 12:37:42Z wimpunk $ +## $Id: sample-etc_ppp_ip-up.local 98 2008-06-13 20:26:56Z wimpunk $ ###################################################################### ## ## On my host, pppd invokes this script with args: diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/sample-etc_rc.d_init.d_ddclient.lsb new/ddclient-3.8.0/sample-etc_rc.d_init.d_ddclient.lsb --- old/ddclient-3.7.3/sample-etc_rc.d_init.d_ddclient.lsb 2006-06-14 21:51:48.000000000 +0200 +++ new/ddclient-3.8.0/sample-etc_rc.d_init.d_ddclient.lsb 2008-06-13 22:26:59.000000000 +0200 @@ -21,7 +21,7 @@ # can be used on many types of firewalls ### END INIT INFO # -# $Id: sample-etc_rc.d_init.d_ddclient.lsb 8 2006-06-14 19:51:39Z wimpunk $ +# $Id: sample-etc_rc.d_init.d_ddclient.lsb 98 2008-06-13 20:26:56Z wimpunk $ # ### diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/sample-etc_rc.d_init.d_ddclient.redhat new/ddclient-3.8.0/sample-etc_rc.d_init.d_ddclient.redhat --- old/ddclient-3.7.3/sample-etc_rc.d_init.d_ddclient.redhat 2006-06-14 21:51:48.000000000 +0200 +++ new/ddclient-3.8.0/sample-etc_rc.d_init.d_ddclient.redhat 2008-06-13 22:26:59.000000000 +0200 @@ -1,5 +1,5 @@ #!/bin/sh -# $Id: sample-etc_rc.d_init.d_ddclient.redhat 8 2006-06-14 19:51:39Z wimpunk $ +# $Id: sample-etc_rc.d_init.d_ddclient.redhat 98 2008-06-13 20:26:56Z wimpunk $ # ddclient This shell script takes care of starting and stopping # ddclient. # diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/ddclient-3.7.3/TODO new/ddclient-3.8.0/TODO --- old/ddclient-3.7.3/TODO 2007-07-30 09:10:32.000000000 +0200 +++ new/ddclient-3.8.0/TODO 2008-11-06 10:42:11.000000000 +0100 @@ -10,3 +10,5 @@ * FAQ: bad hostname (checkip) * note about init-scripts. * request from dyndns: http://tinyurl.com/2l3twf + +* check bugs ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org