mirror of
https://github.com/webmin/webmin.git
synced 2025-08-16 14:51:18 +00:00
46 lines
1.4 KiB
Perl
Executable File
46 lines
1.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_perm.cgi
|
|
# Save permission options
|
|
|
|
require './wuftpd-lib.pl';
|
|
&error_setup($text{'perm_err'});
|
|
&ReadParse();
|
|
&lock_file($config{'ftpaccess'});
|
|
$conf = &get_ftpaccess();
|
|
@class = &find_value("class", $conf);
|
|
|
|
# Save chmod, delete, etc .. options
|
|
for($i=0; defined($type = $in{"type_$i"}); $i++) {
|
|
next if (!$type);
|
|
local @users = split(/\0/, $in{"users_$i"});
|
|
local @classes = map { "class=$_" } split(/\0/, $in{"classes_$i"});
|
|
@classes = () if (scalar(@classes) == scalar(@class));
|
|
push(@$type, { 'name' => $type,
|
|
'values' => [ $in{"can_$i"},
|
|
join(",", @users, @classes) ] } );
|
|
}
|
|
@permtypes = ( 'chmod', 'delete', 'overwrite', 'rename', 'umask' );
|
|
foreach $t (@permtypes) {
|
|
&save_directive($conf, $t, \@$t);
|
|
}
|
|
|
|
# Save path-filter options
|
|
for($i=0; defined($char = $in{"char_$i"}); $i++) {
|
|
next if (!$char);
|
|
$char =~ /^\S+$/ || &error(&text('perm_echar', $char));
|
|
$in{"types_$i"} || &error($text{'perm_etypes'});
|
|
$in{"types_$i"} =~ s/\0/,/g;
|
|
-r $in{"mesg_$i"} || &error(&text('perm_emesg', $in{"mesg_$i"}));
|
|
push(@filter, { 'name' => 'path-filter',
|
|
'values' => [ $in{"types_$i"}, $in{"mesg_$i"},
|
|
$char, split(/\s+/, $in{"regexp_$i"})
|
|
] } );
|
|
}
|
|
&save_directive($conf, 'path-filter', \@filter);
|
|
|
|
&flush_file_lines();
|
|
&unlock_file($config{'ftpaccess'});
|
|
&webmin_log("perm", undef, undef, \%in);
|
|
&redirect("");
|
|
|