#!/usr/local/bin/perl # edit_class.cgi # Display a list of user classes for editing require './wuftpd-lib.pl'; &ui_print_header(undef, $text{'class_title'}, "", "class"); $conf = &get_ftpaccess(); print "
\n"; print "\n"; print "\n"; print "
$text{'class_header'}
\n"; @class = ( &find_value("class", $conf), [ ] ); print "\n"; print "\n"; print "\n"; foreach $g ('guestuser', 'guestgroup', 'realuser', 'realgroup') { print "\n", $g, &join_all($g, $conf), $g =~ /user$/ ? &user_chooser_button($g, 1) : &group_chooser_button($g, 1); } print "\n"; print "\n", join(" ", @ftpusers), &user_chooser_button('ftpusers', 1); foreach $g ('deny-uid', 'deny-gid', 'allow-uid', 'allow-gid') { ($fg = $g) =~ s/-/_/g; print "\n", $fg, &join_all($g, $conf), $g =~ /uid$/ ? &user_chooser_button($fg, 1) : &group_chooser_button($fg, 1); } print "
$text{'class_class'}\n"; print " ", " ", "\n"; $i = 0; foreach $c (@class) { print "\n"; print "\n"; local %types; map { $types{$_}++ } split(/,/, $c->[1]); printf "\n", $types{'guest'} ? 'checked' : '', $text{'class_guest'}; printf "\n", join(" ", @$c[2..@$c-1]); print "\n"; $i++; } print "
$text{'class_name'}$text{'class_types'}$text{'class_addrs'}
%s\n", $types{'real'} ? 'checked' : '', $text{'class_real'}; printf " %s\n", $types{'anonymous'} ? 'checked' : '', $text{'class_anonymous'}; printf " %s

",$text{"class_$g"}," \n"; printf " %s

",&text('class_ftpusers', "$config{'ftpusers'}"), " \n"; open(FTPUSERS, $config{'ftpusers'}); while() { s/\r|\n//g; s/#.*$//; push(@ftpusers, $_) if (/\S/); } close(FTPUSERS); printf " %s
",$text{"class_$fg"}," \n"; printf " %s
\n"; print "
\n"; &ui_print_footer("", $text{'index_return'}); # join_all(name, &config) sub join_all { local (@rv, $v); foreach $v (&find_value($_[0], $_[1])) { push(@rv, @$v); } return join(" ", @rv); }