packages: ddclient/ddclient.spec, ddclient/branch.diff (NEW), ddclient/bran...
glen
glen at pld-linux.org
Mon Dec 20 19:25:23 CET 2010
Author: glen Date: Mon Dec 20 18:25:23 2010 GMT
Module: packages Tag: HEAD
---- Log message:
- add branch diff up to r122, adds freedns (freedns.afraid.org) support
---- Files affected:
packages/ddclient:
ddclient.spec (1.25 -> 1.26) , branch.diff (NONE -> 1.1) (NEW), branch.sh (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/ddclient/ddclient.spec
diff -u packages/ddclient/ddclient.spec:1.25 packages/ddclient/ddclient.spec:1.26
--- packages/ddclient/ddclient.spec:1.25 Mon Dec 20 09:21:09 2010
+++ packages/ddclient/ddclient.spec Mon Dec 20 19:25:18 2010
@@ -5,13 +5,14 @@
Summary(pt_BR.UTF-8): Cliente para atualizar entradas DNS dinâmicas no DynDNS.org
Name: ddclient
Version: 3.8.0
-Release: 4
+Release: 5
Epoch: 1
License: GPL v2
Group: Networking
Source0: http://downloads.sourceforge.net/ddclient/%{name}-%{version}.tar.bz2
# Source0-md5: 6cac7a5eb1da781bfd4d98cef0b21f8e
Source1: %{name}.init
+Patch0: branch.diff
Source2: %{name}.NetworkManager
URL: http://ddclient.sourceforge.net/
BuildRequires: rpm-perlprov
@@ -61,6 +62,7 @@
%prep
%setup -q
+%patch0 -p0
%install
rm -rf $RPM_BUILD_ROOT
@@ -107,6 +109,9 @@
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log$
+Revision 1.26 2010/12/20 18:25:18 glen
+- add branch diff up to r122, adds freedns (freedns.afraid.org) support
+
Revision 1.25 2010/12/20 08:21:09 glen
- NM support (script from fedora)
================================================================
Index: packages/ddclient/branch.diff
diff -u /dev/null packages/ddclient/branch.diff:1.1
--- /dev/null Mon Dec 20 19:25:23 2010
+++ packages/ddclient/branch.diff Mon Dec 20 19:25:18 2010
@@ -0,0 +1,730 @@
+# Revision 122
+Index: release/readme.txt
+===================================================================
+
+Property changes on: release
+___________________________________________________________________
+Added: svn:ignore
+ + ddclient-*
+
+
+Index: sample-etc_ddclient.conf
+===================================================================
+--- sample-etc_ddclient.conf (.../tags/release-3.8.0)
++++ sample-etc_ddclient.conf (.../trunk)
+@@ -50,6 +50,10 @@
+ #use=fw, fw=192.168.1.254/status.htm, fw-skip='IP Address' # found after IP Address
+ #
+ ## To obtain an IP address from Web status page (using the proxy if defined)
++## by default, checkip.dyndns.org is used if you use the dyndns protocol.
++## Using use=web is enough to get it working.
++## WARNING: set deamon at least to 600 seconds if you use checkip or you could
++## get banned from their service.
+ #use=web, web=checkip.dyndns.org/, web-skip='IP Address' # found after IP Address
+ #
+ #use=ip, ip=127.0.0.1 # via static IP's
+@@ -160,3 +164,17 @@
+ # login=my-namecheap.com-login, \
+ # password=my-namecheap.com-password \
+ # myhost.namecheap.com
++
++##
++##
++## Loopia (loopia.se)
++##
++# use=web
++# web=loopia
++# protocol=dyndns2
++# server=dns.loopia.se
++# script=/XDynDNSServer/XDynDNS.php
++# login=my-loopia.se-login
++# password=my-loopia.se-password
++# my.domain.tld,other.domain.tld
++
+Index: ddclient
+===================================================================
+--- ddclient (.../tags/release-3.8.0)
++++ ddclient (.../trunk)
+@@ -20,7 +20,9 @@
+ use Sys::Hostname;
+ use IO::Socket;
+
+-my $version = "3.8.0";
++my ($VERSION) = q$Revision$ =~ /(\d+)/;
++
++my $version = "3.8.0-r". $VERSION;
+ my $programd = $0;
+ $programd =~ s%^.*/%%;
+ my $program = $programd;
+@@ -63,6 +65,7 @@
+ 'dyndns' => { 'url' => 'http://checkip.dyndns.org/', 'skip' =>
+ 'Current IP Address:', },
+ 'dnspark' => { 'url' => 'http://ipdetect.dnspark.com/', 'skip' => 'Current Address:', },
++ 'loopia' => { 'url' => 'http://dns.loopia.se/checkip/checkip.php', 'skip' => 'Current Address:', },
+ );
+ my %builtinfw = (
+ 'watchguard-soho' => {
+@@ -283,6 +286,7 @@
+ 'if' => ": obtain IP from the -if {interface}",
+ 'cmd' => ": obtain IP from the -cmd {external-command}",
+ 'cisco' => ": obtain IP from Cisco FW at the -fw {address}",
++ 'cisco-asa' => ": obtain IP from Cisco ASA at the -fw {address}",
+ map { $_ => sprintf ": obtain IP from %s at the -fw {address}", $builtinfw{$_}->{'name'} } keys %builtinfw,
+ );
+ sub ip_strategies_usage {
+@@ -292,6 +296,7 @@
+ my %web_strategies = (
+ 'dyndns'=> 1,
+ 'dnspark'=> 1,
++ 'loopia'=> 1,
+ );
+
+ sub setv {
+@@ -307,6 +312,7 @@
+ my %variables = (
+ 'global-defaults' => {
+ 'daemon' => setv(T_DELAY, 0, 0, 1, 0, interval('60s')),
++ 'foreground' => setv(T_BOOL, 0, 0, 1, 0, undef),
+ 'file' => setv(T_FILE, 0, 0, 1, "$etc$program.conf", undef),
+ 'cache' => setv(T_FILE, 0, 0, 1, "$cachedir$program.cache", undef),
+ 'pid' => setv(T_FILE, 0, 0, 1, "", undef),
+@@ -428,6 +434,7 @@
+ 'examples' => \&nic_dyndns2_examples,
+ 'variables' => merge(
+ { 'custom' => setv(T_BOOL, 0, 1, 1, 0, undef), },
++ { 'script' => setv(T_STRING, 1, 1, 1, '/nic/update', undef), },
+ # { 'offline' => setv(T_BOOL, 0, 1, 1, 0, undef), },
+ $variables{'dyndns-common-defaults'},
+ $variables{'service-common-defaults'},
+@@ -524,6 +531,16 @@
+ $variables{'service-common-defaults'},
+ ),
+ },
++ 'freedns' => {
++ 'updateable' => undef,
++ 'update' => \&nic_freedns_update,
++ 'examples' => \&nic_freedns_examples,
++ 'variables' => merge(
++ { 'server' => setv(T_FQDNP, 1, 0, 1, 'freedns.afraid.org', undef) },
++ { 'min-interval' => setv(T_DELAY, 0, 0, 1, 0, interval('5m')),},
++ $variables{'service-common-defaults'},
++ ),
++ },
+ );
+ $variables{'merged'} = merge($variables{'global-defaults'},
+ $variables{'service-common-defaults'},
+@@ -535,6 +552,7 @@
+ "usage: ${program} [options]",
+ "options are:",
+ [ "daemon", "=s", "-daemon delay : run as a daemon, specify delay as an interval." ],
+++ [ "foreground", "!", "-foreground : do not fork" ],
+ [ "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" ],
+@@ -623,7 +641,10 @@
+ $SIG{'HUP'} = sub { $caught_hup = 1; };
+ $SIG{'TERM'} = sub { $caught_term = 1; };
+ $SIG{'KILL'} = sub { $caught_kill = 1; };
+-if (opt('daemon') && !opt('force')) {
++# don't fork() if foreground or force is on
++if (opt('foreground') || opt('force')) {
++ ;
++} elsif (opt('daemon')) {
+ $SIG{'CHLD'} = 'IGNORE';
+ my $pid = fork;
+ if ($pid < 0) {
+@@ -633,12 +654,15 @@
+ exit 0;
+ }
+ $SIG{'CHLD'} = 'DEFAULT';
+- $opt{'syslog'} = 1;
+ open(STDOUT, ">/dev/null");
+ open(STDERR, ">/dev/null");
+ open(STDIN, "</dev/null");
++}
+
++# write out the pid file if we're daemon'ized
++if(opt('daemon')) {
+ write_pid();
++ $opt{'syslog'} = 1;
+ }
+
+ umask 077;
+@@ -716,47 +740,58 @@
+ ## update_nics
+ ######################################################################
+ sub update_nics {
+- my %examined = ();
++ my %examined = ();
++ my %iplist = ();
+
+- foreach my $s (sort keys %services) {
+- my (@hosts, %ips) = ();
+- my $updateable = $services{$s}{'updateable'};
+- my $update = $services{$s}{'update'};
++ foreach my $s (sort keys %services) {
++ 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};
++ # bug #13: we should only do this once
++ # use isn't enough, we have to save the origin to.
++ # this will break the multiple ip stuff if use has
++ # been used twice for the same device.
++ my $ip = "";
++ if (defined $iplist{$use}) {
++ $ip = $iplist{$use};
++ } else {
++ $ip = get_ip($use, $h);
++ 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;
++ }
++ $iplist{$use} = $ip;
++ }
++ $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(join ' ', keys %ips);
++ }
++ }
+ 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 (!exists $examined{$h}) {
++ failed("%s was not updated because protocol %s is not supported.",
++ $h, define($config{$h}{'protocol'}, '<undefined>')
++ );
++ }
+ }
+- if (@hosts) {
+- $0 = sprintf("%s - updating %s", $program, join(',', @hosts));
+- &$update(@hosts);
+- runpostscript(join ' ', keys %ips);
+- }
+- }
+- foreach my $h (sort keys %config) {
+- if (!exists $examined{$h}) {
+- failed("%s was not updated because protocol %s is not supported.",
+- $h, define($config{$h}{'protocol'}, '<undefined>')
+- );
+- }
+- }
+- write_cache(opt('cache'));
++ write_cache(opt('cache'));
+ }
+ ######################################################################
+ ## unlink_pid()
+@@ -841,9 +876,9 @@
+ %opt = %saved;
+
+ foreach my $h (keys %cache) {
+- if (exists $config{$h}) {
++ if (exists $config->{$h}) {
+ foreach (qw(atime mtime wtime ip status)) {
+- $config{$h}{$_} = $cache{$h}{$_} if exists $cache{$h}{$_};
++ $config->{$h}{$_} = $cache{$h}{$_} if exists $cache{$h}{$_};
+ }
+ }
+ }
+@@ -1055,7 +1090,7 @@
+ $opt{'use'} = 'web' if !define($opt{'use'}) && defined($opt{'web'});
+
+ ## sanity check
+- $opt{'max-interval'} = max(interval(opt('max-interval')), interval(default('max-interval')));
++ $opt{'max-interval'} = min(interval(opt('max-interval')), interval(default('max-interval')));
+ $opt{'min-interval'} = max(interval(opt('min-interval')), interval(default('min-interval')));
+ $opt{'min-error-interval'} = max(interval(opt('min-error-interval')), interval(default('min-error-interval')));
+
+@@ -1093,7 +1128,7 @@
+ ## merge options into host definitions or globals
+ if (@hosts) {
+ foreach my $h (@hosts) {
+- $config{$h} = %{ merge(\%options, $config{$h}) };
++ $config{$h} = merge(\%options, $config{$h});
+ }
+ $opt{'host'} = join(',', @hosts);
+ } else {
+@@ -1157,6 +1192,8 @@
+ $proto = $config{$h}{'protocol'};
+ $proto = opt('protocol') if !defined($proto);
+
++ load_sha1_support() if ($proto eq "freedns");
++
+ if (!exists($services{$proto})) {
+ warning("skipping host: %s: unrecognized protocol '%s'", $h, $proto);
+ delete $config{$h};
+@@ -1481,6 +1518,8 @@
+ }
+ sub opt {
+ my $v = shift;
++ my $h = shift;
++ return $config{$h}{$v} if defined($h && $config{$h}{$v});
+ return $opt{$v} if defined $opt{$v};
+ return $globals{$v} if defined $globals{$v};
+ return default($v) if defined default($v);
+@@ -1696,11 +1735,6 @@
+ # fix padding at the end
+ my $padding = (3 - length($_[0]) % 3) % 3;
+ $res =~ s/.{$padding}$/'=' x $padding/e if $padding;
+-
+- # break encoded string into lines of no more than 76 characters each
+- if (length $eol) {
+- $res =~ s/(.{1,76})/$1$eol/g;
+- }
+ $res;
+ }
+ ######################################################################
+@@ -1712,12 +1746,26 @@
+ fatal(<<"EOM");
+ Error loading the Perl module IO::Socket::SSL needed for SSL connect.
+ On Debian, the package libio-socket-ssl-perl must be installed.
++On Red Hat, the package perl-IO-Socket-SSL must be installed.
+ EOM
+ }
+ import IO::Socket::SSL;
+ { no warnings; $IO::Socket::SSL::DEBUG = 0; }
+ }
+ ######################################################################
++## load_sha1_support
++######################################################################
++sub load_sha1_support {
++ my $sha1_loaded = eval {require Digest::SHA1};
++ unless ($sha1_loaded) {
++ fatal(<<"EOM");
++Error loading the Perl module Digest::SHA1 needed for freedns update.
++On Debian, the package libdigest-sha1-perl must be installed.
++EOM
++ }
++ import Digest::SHA1 (qw/sha1_hex/);
++}
++######################################################################
+ ## geturl
+ ######################################################################
+ sub geturl {
+@@ -1729,8 +1777,10 @@
+ my ($sd, $rq, $request, $reply);
+
+ debug("proxy = $proxy");
+- debug("url = $url");
++ debug("url = %s", $url);
+ ## canonify proxy and url
++ my $force_ssl;
++ $force_ssl = 1 if ($url =~ /^https:/);
+ $proxy =~ s%^https?://%%i;
+ $url =~ s%^https?://%%i;
+ $server = $url;
+@@ -1743,7 +1793,7 @@
+ $globals{'fw'} && debug("glo fw = $globals{'fw'}");
+ #if ( $globals{'ssl'} and $server ne $globals{'fw'} ) {
+ ## always omit SSL for connections to local router
+- if ( $globals{'ssl'} and (caller(1))[3] ne 'main::get_ip' ) {
++ if ( $force_ssl || ($globals{'ssl'} and (caller(1))[3] ne 'main::get_ip') ) {
+ $use_ssl = 1;
+ $default_port = 443;
+ load_ssl_support;
+@@ -1769,7 +1819,7 @@
+ $request .= "Host: $server\n";
+
+ my $auth = encode_base64("${login}:${password}");
+- $request .= "Authorization: Basic $auth" if $login || $password;
++ $request .= "Authorization: Basic $auth\n" if $login || $password;
+ $request .= "User-Agent: ${program}/${version}\n";
+ $request .= "Connection: close\n";
+ $request .= "\n";
+@@ -1781,7 +1831,7 @@
+ $0 = sprintf("%s - connecting to %s port %s", $program, $peer, $port);
+ if (! opt('exec')) {
+ debug("skipped network connection");
+- verbose("SENDING:", $request);
++ verbose("SENDING:", "%s", $request);
+ } elsif ($use_ssl) {
+ $sd = IO::Socket::SSL->new(
+ PeerAddr => $peer,
+@@ -1802,39 +1852,39 @@
+ defined $sd or warning("cannot connect to $peer:$port socket: $@");
+ }
+
+- if (defined $sd) {
+- ## send the request to the http server
+- verbose("CONNECTED: ", $use_ssl ? 'using SSL' : 'using HTTP');
+- verbose("SENDING:", $request);
++ if (defined $sd) {
++ ## send the request to the http server
++ verbose("CONNECTED: ", $use_ssl ? 'using SSL' : 'using HTTP');
++ verbose("SENDING:", "%s", $request);
+
+- $0 = sprintf("%s - sending to %s port %s", $program, $peer, $port);
+- my $result = syswrite $sd, $rq;
+- if ($result != length($rq)) {
+- warning("cannot send to $peer:$port ($!).");
+-
+- } else {
+- my $timeout = 0;
+- local $SIG{'ALRM'} = sub { $timeout = 1; };
++ $0 = sprintf("%s - sending to %s port %s", $program, $peer, $port);
++ my $result = syswrite $sd, $rq;
++ if ($result != length($rq)) {
++ warning("cannot send to $peer:$port ($!).");
++ } else {
++ $0 = sprintf("%s - reading from %s port %s", $program, $peer, $port);
++ eval {
++ local $SIG{'ALRM'} = sub { die "timeout";};
++ alarm(opt('timeout')) if opt('timeout') > 0;
++ while ($_ = <$sd>) {
++ $0 = sprintf("%s - read from %s port %s", $program, $peer, $port);
++ verbose("RECEIVE:", "%s", define($_, "<undefined>"));
++ $reply .= $_ if defined $_;
++ }
++ if (opt('timeout') > 0) {
++ alarm(0);
++ }
++ };
++ close($sd);
+
+- $0 = sprintf("%s - reading from %s port %s", $program, $peer, $port);
+- alarm(opt('timeout')) if opt('timeout') > 0;
+- while (!$timeout && ($_ = <$sd>)) {
+- $0 = sprintf("%s - read from %s port %s", $program, $peer, $port);
+- verbose("RECEIVE:", "%s", define($_, "<undefined>"));
+- $reply .= $_ if defined $_;
+- }
+- if (opt('timeout') > 0) {
+- alarm(0);
+- }
+- close($sd);
+- if ($timeout) {
+- warning("TIMEOUT: %s after %s seconds", $to, opt('timeout'));
+- $reply = '';
+- }
+- $reply = '' if !defined $reply;
++ if ($@ and $@ =~ /timeout/) {
++ warning("TIMEOUT: %s after %s seconds", $to, opt('timeout'));
++ $reply = '';
++ }
++ $reply = '' if !defined $reply;
++ }
+ }
+- }
+- $0 = sprintf("%s - closed %s port %s", $program, $peer, $port);
++ $0 = sprintf("%s - closed %s port %s", $program, $peer, $port);
+
+ ## during testing simulate reading the URL
+ if (opt('test')) {
+@@ -1855,28 +1905,29 @@
+ ######################################################################
+ sub get_ip {
+ my $use = lc shift;
++ my $h = shift;
+ my ($ip, $arg, $reply, $url, $skip) = (undef, opt($use), '');
+ $arg = '' unless $arg;
+
+ if ($use eq 'ip') {
+- $ip = opt('ip');
++ $ip = opt('ip', $h);
+ $arg = 'ip';
+
+ } elsif ($use eq 'if') {
+- $skip = opt('if-skip') || '';
++ $skip = opt('if-skip', $h) || '';
+ $reply = `ifconfig $arg 2> /dev/null`;
+ $reply = '' if $?;
+
+ } elsif ($use eq 'cmd') {
+ if ($arg) {
+- $skip = opt('cmd-skip') || '';
++ $skip = opt('cmd-skip', $h) || '';
+ $reply = `$arg`;
+ $reply = '' if $?;
+ }
+
+ } elsif ($use eq 'web') {
+- $url = opt('web') || '';
+- $skip = opt('web-skip') || '';
++ $url = opt('web', $h) || '';
++ $skip = opt('web-skip', $h) || '';
+
+ if (exists $builtinweb{$url}) {
+ $skip = $builtinweb{$url}->{'skip'} unless $skip;
+@@ -1885,15 +1936,15 @@
+ $arg = $url;
+
+ if ($url) {
+- $reply = geturl(opt('proxy'), $url) || '';
++ $reply = geturl(opt('proxy', $h), $url) || '';
+ }
+
+ } elsif (($use eq 'cisco')) {
+ # Stuff added to support Cisco router ip http daemon
+ # User fw-login should only have level 1 access to prevent
+ # password theft. This is pretty harmless.
+- my $queryif = opt('if');
+- $skip = opt('fw-skip') || '';
++ my $queryif = opt('if', $h);
++ $skip = opt('fw-skip', $h) || '';
+
+ # Convert slashes to protected value "\/"
+ $queryif =~ s%\/%\\\/%g;
+@@ -1901,13 +1952,30 @@
+ # Protect special HTML characters (like '?')
+ $queryif =~ s/([\?&= ])/sprintf("%%%02x",ord($1))/ge;
+
+- $url = "http://".opt('fw')."/level/1/exec/show/ip/interface/brief/${queryif}/CR";
+- $reply = geturl('', $url, opt('fw-login'), opt('fw-password')) || '';
++ $url = "http://".opt('fw', $h)."/level/1/exec/show/ip/interface/brief/${queryif}/CR";
++ $reply = geturl('', $url, opt('fw-login', $h), opt('fw-password', $h)) || '';
+ $arg = $url;
+
++ } elsif (($use eq 'cisco-asa')) {
++ # Stuff added to support Cisco ASA ip https daemon
++ # User fw-login should only have level 1 access to prevent
++ # password theft. This is pretty harmless.
++ my $queryif = opt('if', $h);
++ $skip = opt('fw-skip', $h) || '';
++
++ # Convert slashes to protected value "\/"
++ $queryif =~ s%\/%\\\/%g;
++
++ # Protect special HTML characters (like '?')
++ $queryif =~ s/([\?&= ])/sprintf("%%%02x",ord($1))/ge;
++
++ $url = "https://".opt('fw', $h)."/exec/show%20interface%20${queryif}";
++ $reply = geturl('', $url, opt('fw-login', $h), opt('fw-password', $h)) || '';
++ $arg = $url;
++
+ } else {
+- $url = opt('fw') || '';
+- $skip = opt('fw-skip') || '';
++ $url = opt('fw', $h) || '';
++ $skip = opt('fw-skip', $h) || '';
+
+ if (exists $builtinfw{$use}) {
+ $skip = $builtinfw{$use}->{'skip'} unless $skip;
+@@ -1916,7 +1984,7 @@
+ $arg = $url;
+
+ if ($url) {
+- $reply = geturl('', $url, opt('fw-login'), opt('fw-password')) || '';
++ $reply = geturl('', $url, opt('fw-login', $h), opt('fw-password', $h)) || '';
+ }
+ }
+ if (!defined $reply) {
+@@ -2270,6 +2338,7 @@
+ Configuration variables applicable to the 'dyndns2' protocol are:
+ protocol=dyndns2 ##
+ server=fqdn.of.service ## defaults to members.dyndns.org
++ script=/path/to/script ## defaults to /nic/update
+ backupmx=no|yes ## indicates that this host is the primary MX for the domain.
+ static=no|yes ## indicates that this host has a static IP address.
+ custom=no|yes ## indicates that this host is a 'custom' top-level domain name.
+@@ -2318,7 +2387,9 @@
+ '!yours' => 'The hostname specified exists, but not under the username currently being used',
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/ddclient/ddclient.spec?r1=1.25&r2=1.26&f=u
More information about the pld-cvs-commit
mailing list