diff -ruN e-smith-proftpd-2.2.0.old/root/etc/e-smith/templates/etc/proftpd.conf/00localAccess e-smith-proftpd-2.2.0/root/etc/e-smith/templates/etc/proftpd.conf/00localAccess --- e-smith-proftpd-2.2.0.old/root/etc/e-smith/templates/etc/proftpd.conf/00localAccess 2006-03-17 00:09:50.000000000 +0000 +++ e-smith-proftpd-2.2.0/root/etc/e-smith/templates/etc/proftpd.conf/00localAccess 2013-01-24 01:12:35.000000000 +0000 @@ -1,17 +1,9 @@ { # Work out local access specification use esmith::NetworksDB; - use Net::IPv4Addr qw(ipv4_parse); my $ndb = esmith::NetworksDB->open_ro(); - my @local_access = $ndb->local_access_spec; - my @cidr_access = (); - foreach my $part (@local_access) - { - my $cidr = join '/', ipv4_parse($part); - push @cidr_access, $cidr; - } - $localAccess = join(', ', @cidr_access); + @local_access = $ndb->local_access_spec; return ""; } diff -ruN e-smith-proftpd-2.2.0.old/root/etc/e-smith/templates/etc/proftpd.conf/15LimitLOGIN e-smith-proftpd-2.2.0/root/etc/e-smith/templates/etc/proftpd.conf/15LimitLOGIN --- e-smith-proftpd-2.2.0.old/root/etc/e-smith/templates/etc/proftpd.conf/15LimitLOGIN 2003-03-13 20:06:04.000000000 +0000 +++ e-smith-proftpd-2.2.0/root/etc/e-smith/templates/etc/proftpd.conf/15LimitLOGIN 2013-01-24 01:12:42.000000000 +0000 @@ -4,11 +4,19 @@ } { my $access = $ftp{LoginAccess} || "private"; - $OUT = ($access eq 'public') ? - " AllowAll" - : - " Order Allow,Deny\n" . - " Allow from $localAccess\n" . - " Deny from all"; + if ($access eq 'public') + { + $OUT = " AllowAll"; + } + else + { + use Net::IPv4Addr qw(ipv4_parse); + + $OUT = " Order Allow,Deny\n"; + $OUT .= join "\n", + map { " Allow from " . join '/', ipv4_parse($_) } + @local_access; + $OUT .= " Deny from all"; + } } diff -ruN e-smith-proftpd-2.2.0.old/root/etc/e-smith/templates/etc/proftpd.conf/60AnonymousIBay e-smith-proftpd-2.2.0/root/etc/e-smith/templates/etc/proftpd.conf/60AnonymousIBay --- e-smith-proftpd-2.2.0.old/root/etc/e-smith/templates/etc/proftpd.conf/60AnonymousIBay 2008-10-07 18:36:59.000000000 +0100 +++ e-smith-proftpd-2.2.0/root/etc/e-smith/templates/etc/proftpd.conf/60AnonymousIBay 2013-01-24 01:12:46.000000000 +0000 @@ -5,10 +5,13 @@ #------------------------------------------------------------ use esmith::AccountsDB; + use Net::IPv4Addr qw(ipv4_parse); $OUT .= ""; my $adb = esmith::AccountsDB->open_ro(); + my @local = map { join '/', ipv4_parse($_) } @local_access; + my @all = ('all'); foreach my $ibay ($adb->ibays) { my $key = $ibay->key; @@ -16,39 +19,38 @@ next if ($key eq "Primary"); - my $allow; my $pass; my $access = $ibay->prop('PublicAccess') || 'none'; if ($access eq 'none') { - $allow = '127.0.0.1'; + @allow = ('127.0.0.1'); $pass = 1; } elsif ($access eq 'local') { - $allow = $localAccess; + @allow = @local; $pass = 0; } elsif ($access eq 'local-pw') { - $allow = $localAccess; + @allow = @local; $pass = 1; } elsif ($access eq 'global') { - $allow = 'all'; + @allow = @all; $pass = 0; } elsif ($access eq 'global-pw') { - $allow = 'all'; + @allow = @all; $pass = 1; } elsif ($access eq 'global-pw-remote') { - $allow = 'all'; + @allow = @all; $pass = 1; } @@ -68,7 +70,7 @@ $OUT .= " DisplayChdir .message\n"; $OUT .= " \n"; $OUT .= " Order Allow,Deny\n"; - $OUT .= " Allow from $allow\n"; + $OUT .= " Allow from $_\n" foreach @allow; $OUT .= " Deny from all\n"; $OUT .= " \n"; $OUT .= " \n";