From a81edc3b26074e41675db5e91eaf1d0589f808b0 Mon Sep 17 00:00:00 2001 From: Graham Barr Date: Mon, 6 Mar 2000 08:42:29 +0000 Subject: new Configure script --- Configure | 83 ++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 55 insertions(+), 28 deletions(-) diff --git a/Configure b/Configure index 51adb87..540f5aa 100755 --- a/Configure +++ b/Configure @@ -155,39 +155,56 @@ sub get_bool ($$) sub get_netmask ($$) { my($prompt,$def) = @_; - my @mask; - my $pat = join('\.',('([01]\d{0,2}|2[0-4]\d?|25[0-5]|[2-9]\d?)')x4) - . '/([012]\d?|3[01]|[0-9])'; + chomp($prompt); my %list; @list{@$def} = (); - while(1) - { + +MASK: + while(1) { my $bad = 0; my $ans = Prompt($prompt) or last; - $ans =~ s/(\A\s+|\s+\Z)//g; - - if($ans eq '*') - { + if($ans eq '*') { %list = (); next; - } - my $del = $ans =~ s/^-\s*//; -##FIXME - @mask = split(/\s+/, $ans); - return undef unless @mask; - foreach (@mask) - { - next if /^($pat)$/o; - warn "Bad netmask '$_'\n"; - $bad++; - } - last unless $bad; + } + + if($ans eq '=') { + print "\n",( %list ? join("\n", sort keys %list) : 'none'),"\n\n"; + next; + } + + unless ($ans =~ m{^\s*(?:(-?\s*)(\d+(?:\.\d+){0,3})/(\d+))}) { + warn "Bad netmask '$ans'\n"; + next; + } + + my($remove,$bits,@ip) = ($1,$3,split(/\./, $2),0,0,0); + if ( $ip[0] < 1 || $bits < 1 || $bits > 32) { + warn "Bad netmask '$ans'\n"; + next MASK; + } + foreach my $byte (@ip) { + if ( $byte > 255 ) { + warn "Bad netmask '$ans'\n"; + next MASK; + } + } + + my $mask = sprintf("%d.%d.%d.%d/%d",@ip[0..3],$bits); + + if ($remove) { + delete $list{$mask}; + } + else { + $list{$mask} = 1; + } + } - \@mask; + [ keys %list ]; } ## @@ -353,6 +370,7 @@ $cfg{'daytime_hosts'} = get_host_list($msg,$def); #--------------------------------------------------------------------------- $msg = < firewall user & password PASS pass AUTH fwuser RESP fwpass + +Choice: EDQ $def = exists $oldcfg{'ftp_firewall_type'} ? $oldcfg{'ftp_firewall_type'} : 1; $ans = Prompt($msg,$def); @@ -422,9 +442,13 @@ if (defined $cfg{'ftp_firewall'}) { print <