Merge pull request #191 from rhansen/deprecate-banlocal

Turn `fw-banlocal` into a no-op and mark it as deprecated
This commit is contained in:
Richard Hansen 2020-06-26 21:01:40 -04:00 committed by GitHub
commit 7556aaa5e1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 28 deletions

View file

@ -34,6 +34,7 @@ repository history](https://github.com/ddclient/ddclient/commits/master).
* The way ddclient chooses the default for the `use` option has changed.
Rather than rely on the default, users should explicitly set the `use`
option.
* The `fw-banlocal` option is deprecated and no longer does anything.
## 2020-01-08 v3.9.1

View file

@ -336,7 +336,6 @@ my %variables = (
'web-skip' => setv(T_STRING,1, 0, 1, '', undef),
'fw' => setv(T_ANY, 0, 0, 1, '', undef),
'fw-skip' => setv(T_STRING,1, 0, 1, '', undef),
'fw-banlocal' => setv(T_BOOL, 0, 0, 1, 0, undef),
'fw-login' => setv(T_LOGIN, 1, 0, 1, '', undef),
'fw-password' => setv(T_PASSWD,1, 0, 1, '', undef),
'cmd' => setv(T_PROG, 0, 0, 1, '', undef),
@ -376,7 +375,6 @@ my %variables = (
'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-banlocal' => setv(T_BOOL, 0, 0, 1, 0, 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),
@ -734,6 +732,7 @@ $variables{'merged'} = merge($variables{'global-defaults'},
# This will hold the processed args.
my %opt = ();
$opt{'fw-banlocal'} = sub { warning("'-fw-banlocal' is deprecated and does nothing") };
my @opt = (
"usage: ${program} [options]",
@ -760,7 +759,6 @@ my @opt = (
"",
[ "fw", "=s", "-fw address|url : obtain IP address from firewall at 'address'" ],
[ "fw-skip", "=s", "-fw-skip pattern : skip any IP addresses before 'pattern' on the firewall address|url" ],
[ "fw-banlocal", "!", "-fw-banlocal : ignore local IP addresses on the firewall address|url" ],
[ "fw-login", "=s", "-fw-login login : use 'login' when getting IP from fw" ],
[ "fw-password", "=s", "-fw-password secret : use password 'secret' when getting IP from fw" ],
"",
@ -792,6 +790,7 @@ my @opt = (
[ "postscript", "", "-postscript : script to run after updating ddclient, has new IP as param" ],
[ "query", "!", "-{no}query : print {no} ip addresses and exit" ],
[ "fw-banlocal", "!", "" ], ## deprecated
[ "test", "!", "" ], ## hidden
[ "geturl", "=s", "" ], ## hidden
"",
@ -1080,6 +1079,10 @@ sub parse_assignments {
$rest =~ s/^\s+//;
($name, $value, $rest) = parse_assignment($rest);
if (defined $name) {
if ($name eq 'fw-banlocal') {
warning("'fw-banlocal' is deprecated and does nothing");
next;
}
$variables{$name} = $value;
} else {
last;
@ -1308,6 +1311,10 @@ sub init_config {
my %options = ();
foreach my $opt (split_by_comma($opt{'options'})) {
my ($name, $var) = split /\s*=\s*/, $opt;
if ($name eq 'fw-banlocal') {
warning("'fw-banlocal' is deprecated and does nothing");
next;
}
$options{$name} = $var;
}
## determine hosts specified with -host
@ -1436,7 +1443,7 @@ sub process_args {
push @spec, $key . $specifier;
## define the default value which can be overwritten later
$opt{$key} = undef;
$opt{$key} = undef unless exists($opt{$key});
next unless $arg_usage;
@ -2167,28 +2174,6 @@ sub un_zero_pad {
return join('.', @out_str);
}
######################################################################
## filter_local
######################################################################
sub filter_local {
my $in_ip = shift(@_);
if ($in_ip eq '0.0.0.0') {
return $in_ip;
}
my @guess_local = (
'^10\.',
'^172\.(?:1[6-9]|2[0-9]|3[01])\.',
'^192\.168'
);
foreach my $block (@guess_local) {
if ($in_ip =~ /$block/) {
return '0.0.0.0';
}
}
return $in_ip;
}
######################################################################
## get_ip
######################################################################
sub get_ip {
@ -2299,10 +2284,8 @@ sub get_ip {
# no need to parse $reply
} elsif ($ip = ipv4_match($reply)) {
$ip = un_zero_pad($ip);
$ip = filter_local($ip) if opt('fw-banlocal', $h);
} elsif ($ip = ipv6_match($reply)) {
$ip = un_zero_pad($ip);
$ip = filter_local($ip) if opt('fw-banlocal', $h);
} else {
warning("found neither ipv4 nor ipv6 address");
}