5 require './wuftpd-lib.pl';
6 &error_setup($text{'class_err'});
9 &lock_file($config{'ftpaccess'});
10 $conf = &get_ftpaccess();
13 for($i=0; defined($class = $in{"class_$i"}); $i++) {
15 $class =~ /^\S+$/ || &error(&text('class_eclass', $class));
16 @types = split(/\0/, $in{"types_$i"});
17 @types || &error(&text('class_etypes', $class));
18 @addrs = split(/\s+/, $in{"addrs_$i"});
19 @addrs || &error(&text('class_eaddrs', $class));
20 push(@class, { 'name' => 'class',
21 'star' => $addrs[0] eq '*',
22 'values' => [ $class, join(",", @types), @addrs ] });
24 @class = sort { $a->{'star'} ? 1 : $b->{'star'} ? -1 : 0 } @class;
25 &save_directive($conf, 'class', \@class);
27 # save guest/real user/group options
28 foreach $g ('guestuser', 'guestgroup', 'realuser', 'realgroup') {
30 &save_directive($conf, $g, [ { 'name' => $g,
31 'values' => [ $in{$g} ] } ] );
34 &save_directive($conf, $g, [ ]);
38 # save allow/deny uid/gid options
39 &lock_file($config{'ftpusers'});
40 if ($in{'ftpusers'}) {
41 &open_tempfile(FTPUSERS, ">$config{'ftpusers'}");
42 foreach $u (split(/\s+/, $in{'ftpusers'})) {
43 &print_tempfile(FTPUSERS, $u,"\n");
45 &close_tempfile(FTPUSERS);
48 unlink($config{'ftpusers'});
50 &unlock_file($config{'ftpusers'});
51 foreach $g ('deny-uid', 'deny-gid', 'allow-uid', 'allow-gid') {
52 ($fg = $g) =~ s/-/_/g;
54 &save_directive($conf, $g, [ { 'name' => $g,
55 'values' => [ $in{$fg} ] } ] );
58 &save_directive($conf, $g, [ ]);
63 &unlock_file($config{'ftpaccess'});
64 &webmin_log("class", undef, undef, \%in);