mirror of
https://github.com/webmin/webmin.git
synced 2026-02-06 23:42:21 +00:00
67 lines
1.7 KiB
Perl
Executable File
67 lines
1.7 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_class.cgi
|
|
# Save user classes
|
|
|
|
require './wuftpd-lib.pl';
|
|
&error_setup($text{'class_err'});
|
|
&ReadParse();
|
|
|
|
&lock_file($config{'ftpaccess'});
|
|
$conf = &get_ftpaccess();
|
|
|
|
# save class options
|
|
for($i=0; defined($class = $in{"class_$i"}); $i++) {
|
|
next if (!$class);
|
|
$class =~ /^\S+$/ || &error(&text('class_eclass', $class));
|
|
@types = split(/\0/, $in{"types_$i"});
|
|
@types || &error(&text('class_etypes', $class));
|
|
@addrs = split(/\s+/, $in{"addrs_$i"});
|
|
@addrs || &error(&text('class_eaddrs', $class));
|
|
push(@class, { 'name' => 'class',
|
|
'star' => $addrs[0] eq '*',
|
|
'values' => [ $class, join(",", @types), @addrs ] });
|
|
}
|
|
@class = sort { $a->{'star'} ? 1 : $b->{'star'} ? -1 : 0 } @class;
|
|
&save_directive($conf, 'class', \@class);
|
|
|
|
# save guest/real user/group options
|
|
foreach $g ('guestuser', 'guestgroup', 'realuser', 'realgroup') {
|
|
if ($in{$g}) {
|
|
&save_directive($conf, $g, [ { 'name' => $g,
|
|
'values' => [ $in{$g} ] } ] );
|
|
}
|
|
else {
|
|
&save_directive($conf, $g, [ ]);
|
|
}
|
|
}
|
|
|
|
# save allow/deny uid/gid options
|
|
&lock_file($config{'ftpusers'});
|
|
if ($in{'ftpusers'}) {
|
|
&open_tempfile(FTPUSERS, ">$config{'ftpusers'}");
|
|
foreach $u (split(/\s+/, $in{'ftpusers'})) {
|
|
&print_tempfile(FTPUSERS, $u,"\n");
|
|
}
|
|
&close_tempfile(FTPUSERS);
|
|
}
|
|
else {
|
|
unlink($config{'ftpusers'});
|
|
}
|
|
&unlock_file($config{'ftpusers'});
|
|
foreach $g ('deny-uid', 'deny-gid', 'allow-uid', 'allow-gid') {
|
|
($fg = $g) =~ s/-/_/g;
|
|
if ($in{$fg}) {
|
|
&save_directive($conf, $g, [ { 'name' => $g,
|
|
'values' => [ $in{$fg} ] } ] );
|
|
}
|
|
else {
|
|
&save_directive($conf, $g, [ ]);
|
|
}
|
|
}
|
|
|
|
&flush_file_lines();
|
|
&unlock_file($config{'ftpaccess'});
|
|
&webmin_log("class", undef, undef, \%in);
|
|
&redirect("");
|
|
|