#!/usr/local/bin/perl # edit_acl.cgi # Display access control options require './wuftpd-lib.pl'; &ui_print_header(undef, $text{'acl_title'}, "", "acl"); $conf = &get_ftpaccess(); @class = &find_value("class", $conf); print "
\n"; print "\n"; print "\n"; print "
$text{'acl_header'}
\n"; # Display addresses to deny from @deny = ( &find_value("deny", $conf), [ ] ); print "\n"; print "\n"; print "\n"; # Display concurrent login limits @limit = ( &find_value("limit", $conf), [ ] ); print "\n"; print "\n"; print "\n"; # Display file and byte limits @fblimit = sort { $a->{'line'} <=> $b->{'line'} } ( &find("file-limit", $conf), &find("data-limit", $conf) ); push(@fblimit, { }); print "\n"; print "\n"; print "\n"; # File access controls @noret = ( &find_value("noretrieve", $conf), [ ] ); print "\n"; print "\n"; @allowret = ( &find_value("allow-retrieve", $conf), [ ] ); print "\n"; print "\n"; print "\n"; # Display time-limit options foreach $l (&find_value("limit-time", $conf)) { if ($l->[0] eq '*') { $limit{'anonymous'} = $limit{'guest'} = $l->[1]; } else { $limit{$l->[0]} = $l->[1]; } } print "\n"; printf "\n", $limit{'anonymous'}, $text{'acl_mins'}; print "\n"; printf "\n", $limit{'guest'}, $text{'acl_mins'}; # Other security options $lf = &find_value('loginfails', $conf); print "\n"; printf "\n"; $pr = &find_value('private', $conf); print "\n"; printf "\n", $pr->[0] eq 'yes' ? '' : 'checked', $text{'no'}; print "
$text{'acl_deny'}\n"; print "\n", "\n"; $i = 0; foreach $d (@deny) { print "\n"; print "\n"; print "\n"; print "\n"; $i++; } print "
$text{'acl_daddrs'}$text{'acl_dmsg'}

$text{'acl_limit'}\n"; print "\n", "\n", "\n", "\n"; $i = 0; foreach $l (@limit) { print "\n"; print "\n"; printf "\n", $l->[1] =~ /^\d+$/ ? $l->[1] : ''; printf "\n", lc($l->[2]) eq 'any' ? '' : $l->[2]; print "\n"; print "\n"; $i++; } print "
$text{'acl_class'}$text{'acl_n'}$text{'acl_times'}$text{'acl_lmsg'}
%s\n", $l->[1] =~ /^\d+$/ ? '' : 'checked', $text{'acl_unlimited'}; printf "\n", $l->[1] =~ /^\d+$/ ? 'checked' : ''; printf " %s\n", lc($l->[2]) eq 'any' ? 'checked' : '', $text{'acl_any'}; printf "\n", lc($l->[2]) eq 'any' ? '' : 'checked'; printf "

$text{'acl_file'}\n"; print "\n", "\n", "\n", "\n", "\n"; $i = 0; foreach $l (@fblimit) { $f = $l->{'values'}; splice(@$f, 0, 0, '0') if ($f->[0] ne 'raw'); print "\n"; print "\n"; print "\n"; printf "\n", $f->[0] eq 'raw' ? 'checked' : '', $text{'no'}; print "\n"; print "\n"; print "\n"; $i++; } print "
$text{'acl_fblimit'}$text{'acl_inout'}$text{'acl_raw'}$text{'acl_count'}$text{'acl_class'}
%s\n", $f->[0] eq 'raw' ? '' : 'checked', $text{'yes'}; printf " %s

$text{'acl_noret'}\n"; print "\n", "\n", "\n"; $i = 0; foreach $n (@noret) { local (@f, %c); foreach $nn (@$n) { if ($nn =~ /^class=(\S+)/) { $c{$1}++; } elsif ($nn !~ /^(absolute|relative)$/) { push(@f, $nn); } } print "\n"; printf "\n", join(" ", @f); printf "\n", $n->[0] eq 'relative' ? '' : 'checked', $text{'no'}; print "\n"; $i++; } print "
$text{'acl_nfiles'}$text{'acl_nrel'}$text{'acl_nclass'}
%s\n", $n->[0] eq 'relative' ? 'checked' : '', $text{'yes'}; printf " %s\n"; foreach $c (@class) { printf " %s\n", $c->[0], !%c || $c{$c->[0]} ? 'checked' : '', $c->[0]; } print "
$text{'acl_allowret'}\n"; print "\n", "\n", "\n"; $i = 0; foreach $n (@allowret) { local (@f, %c); foreach $nn (@$n) { if ($nn =~ /^class=(\S+)/) { $c{$1}++; } elsif ($nn !~ /^(absolute|relative)$/) { push(@f, $nn); } } print "\n"; printf "\n", join(" ", @f); printf "\n", $n->[0] eq 'relative' ? '' : 'checked', $text{'no'}; print "\n"; $i++; } print "
$text{'acl_afiles'}$text{'acl_arel'}$text{'acl_aclass'}
%s\n", $n->[0] eq 'relative' ? 'checked' : '', $text{'yes'}; printf " %s\n"; foreach $c (@class) { printf " %s\n", $c->[0], !%c || $c{$c->[0]} ? 'checked' : '', $c->[0]; } print "

$text{'acl_alimit'} %s\n", $limit{'anonymous'} ? '' : 'checked', $text{'acl_unlimited'}; printf "\n", $limit{'anonymous'} ? 'checked' : ''; printf " %s$text{'acl_glimit'} %s\n", $limit{'guest'} ? '' : 'checked', $text{'acl_unlimited'}; printf "\n", $limit{'guest'} ? 'checked' : ''; printf " %s
$text{'acl_fails'} %s\n", $lf ? '' : 'checked', $text{'default'}; printf "\n", $lf ? 'checked' : ''; print "$text{'acl_private'} %s\n", $pr->[0] eq 'yes' ? 'checked' : '', $text{'yes'}; printf " %s
\n"; print "
\n"; &ui_print_footer("", $text{'index_return'});