From 7e7131f3574cd4a3a4183251b35c9d91e43a6a39 Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Fri, 20 Jan 2023 16:53:59 +0000 Subject: [PATCH] Make it work with badip system active --- Changes | 2 ++ cmd/load/badip.pl | 1 + cmd/set/badip.pl | 2 ++ cmd/show/badip.pl | 7 +++++-- perl/DXCIDR.pm | 10 ++++++++++ 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Changes b/Changes index ec464699..2d21b309 100644 --- a/Changes +++ b/Changes @@ -17,6 +17,8 @@ than just the normal definitions of localhost. So for 'normal' nodes with one external interface, you DO NOT NEED TO DO ANY OF THIS. 2. Added CTY-3304 prefix data +3. Fix Bad IP address system so that one can carry on as normal without + Net::CIDR::Lite (or libnet-cidr-lite-perl on debian based systems) 19Jan23======================================================================= 1. Introduce aliasing for localhost in DX Spots and outgoing PC92 A records on login. There are two variables which can be set with the alias to use: diff --git a/cmd/load/badip.pl b/cmd/load/badip.pl index 3cf4212d..bb0e55f8 100644 --- a/cmd/load/badip.pl +++ b/cmd/load/badip.pl @@ -8,6 +8,7 @@ my ($self, $line) = @_; return (1, $self->msg('e5')) if $self->remotecmd; # are we permitted? return (1, $self->msg('e5')) if $self->priv < 6; +return (1, q{Please install Net::CIDR::Lite or libnet-cidr-lite-perl to use this command}) unless $DXCIDR::active; my @out; diff --git a/cmd/set/badip.pl b/cmd/set/badip.pl index b33261b7..1ed8225a 100644 --- a/cmd/set/badip.pl +++ b/cmd/set/badip.pl @@ -9,6 +9,8 @@ my ($self, $line) = @_; return (1, $self->msg('e5')) if $self->remotecmd; # are we permitted? return (1, $self->msg('e5')) if $self->priv < 6; +return (1, q{Please install Net::CIDR::Lite or libnet-cidr-lite-perl to use this command}) unless $DXCIDR::active; + my @out; my @added; my @in = split /\s+/, $line; diff --git a/cmd/show/badip.pl b/cmd/show/badip.pl index b378abde..c7b2122d 100644 --- a/cmd/show/badip.pl +++ b/cmd/show/badip.pl @@ -9,10 +9,13 @@ my ($self, $line) = @_; return (1, $self->msg('e5')) if $self->remotecmd; # are we permitted? return (1, $self->msg('e5')) if $self->priv < 6; +return (1, q{Please install Net::CIDR::Lite or libnet-cidr-lite-perl to use this command}) unless $DXCIDR::active; + my @out; my @added; my @in = split /\s+/, $line; my $maxlth = 0; +my $width = $self->width // 80; #$DB::single = 1; @@ -20,7 +23,7 @@ my $maxlth = 0; my @list = map {my $s = $_; $s =~ s|/32$||; $maxlth = length $s if length $s > $maxlth; $s =~ /^1$/?undef:$s} DXCIDR::list(); my @l; $maxlth //= 20; -my $n = int (80/($maxlth+1)); +my $n = int ($width/($maxlth+1)); my $format = "\%-${maxlth}s " x $n; chop $format; @@ -45,5 +48,5 @@ unless (@in) { push @out, sprintf $format, @l; } -push @out, "show/badip: " . scalar @list . " records found"; +push @out, "show/badip: " . scalar @out . " records found"; return (1, @out); diff --git a/perl/DXCIDR.pm b/perl/DXCIDR.pm index 5a6272aa..a91d1396 100644 --- a/perl/DXCIDR.pm +++ b/perl/DXCIDR.pm @@ -82,6 +82,8 @@ sub _put sub append { + return 0 unless $active; + my $suffix = shift; my @in = @_; my @out; @@ -104,6 +106,7 @@ sub append sub add { + return 0 unless $active; my $count = 0; for my $ip (@_) { @@ -127,6 +130,8 @@ sub add sub clean_prep { + return unless $active; + if ($ipv4 && $count4) { $ipv4->clean; $ipv4->prep_find; @@ -150,6 +155,7 @@ sub _sort sub list { + return () unless $active; my @out; push @out, $ipv4->list if $count4; push @out, $ipv6->list if $count6; @@ -199,6 +205,8 @@ sub _touch sub reload { + return 0 unless $active; + new(); my $count = 0; @@ -224,6 +232,8 @@ sub reload sub new { + return 0 unless $active; + $ipv4 = Net::CIDR::Lite->new; $ipv6 = Net::CIDR::Lite->new; $count4 = $count6 = 0; -- 2.34.1