mirror of
https://github.com/webmin/webmin.git
synced 2026-05-06 23:30:29 +01:00
125 lines
2.4 KiB
Perl
Executable File
125 lines
2.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
|
|
require './filemin-lib.pl';
|
|
|
|
&ReadParse();
|
|
|
|
get_paths();
|
|
|
|
my @errors;
|
|
|
|
my $perms = $in{'perms'};
|
|
|
|
# Selected directories and files only
|
|
if ($in{'applyto'} eq '1') {
|
|
foreach $name (split(/\0/, $in{'name'})) {
|
|
if (system_logged(
|
|
"chmod " . quotemeta($perms) . " " .
|
|
quotemeta("$cwd/$name")) != 0) {
|
|
push @errors,
|
|
"$name - $text{'error_chmod'}: $?";
|
|
}
|
|
}
|
|
}
|
|
|
|
# Selected files and directories and files in
|
|
# selected directories
|
|
if ($in{'applyto'} eq '2') {
|
|
foreach $name (split(/\0/, $in{'name'})) {
|
|
if (system_logged(
|
|
"chmod " . quotemeta($perms) . " " .
|
|
quotemeta("$cwd/$name")) != 0) {
|
|
push @errors,
|
|
"$name - $text{'error_chmod'}: $?";
|
|
}
|
|
if (-d "$cwd/$name") {
|
|
if (system_logged(
|
|
"find " .
|
|
quotemeta("$cwd/$name") .
|
|
" -maxdepth 1 -type f" .
|
|
" -exec chmod " .
|
|
quotemeta($perms) .
|
|
" {} \\;") != 0) {
|
|
push @errors,
|
|
"$name - " .
|
|
"$text{'error_chmod'}: $?";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# All (recursive)
|
|
if ($in{'applyto'} eq '3') {
|
|
foreach $name (split(/\0/, $in{'name'})) {
|
|
if (system_logged(
|
|
"chmod -R " . quotemeta($perms) .
|
|
" " .
|
|
quotemeta("$cwd/$name")) != 0) {
|
|
push @errors,
|
|
"$name - $text{'error_chmod'}: $?";
|
|
}
|
|
}
|
|
}
|
|
|
|
# Selected files and files under selected directories
|
|
# and subdirectories
|
|
if ($in{'applyto'} eq '4') {
|
|
foreach $name (split(/\0/, $in{'name'})) {
|
|
if (-f "$cwd/$name") {
|
|
if (system_logged(
|
|
"chmod " .
|
|
quotemeta($perms) . " " .
|
|
quotemeta("$cwd/$name")) != 0) {
|
|
push @errors,
|
|
"$name - " .
|
|
"$text{'error_chmod'}: $?";
|
|
}
|
|
}
|
|
else {
|
|
if (system_logged(
|
|
"find " .
|
|
quotemeta("$cwd/$name") .
|
|
" -type f -exec chmod " .
|
|
quotemeta($perms) .
|
|
" {} \\;") != 0) {
|
|
push @errors,
|
|
"$name - " .
|
|
"$text{'error_chmod'}: $?";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Selected directories and subdirectories
|
|
if ($in{'applyto'} eq '5') {
|
|
foreach $name (split(/\0/, $in{'name'})) {
|
|
if (-d "$cwd/$name") {
|
|
if (system_logged(
|
|
"chmod " .
|
|
quotemeta($perms) . " " .
|
|
quotemeta("$cwd/$name")) != 0) {
|
|
push @errors,
|
|
"$name - " .
|
|
"$text{'error_chmod'}: $?";
|
|
}
|
|
if (system_logged(
|
|
"find " .
|
|
quotemeta("$cwd/$name") .
|
|
" -type d -exec chmod " .
|
|
quotemeta($perms) .
|
|
" {} \\;") != 0) {
|
|
push @errors,
|
|
"$name - " .
|
|
"$text{'error_chmod'}: $?";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (scalar(@errors) > 0) {
|
|
print_errors(@errors);
|
|
}
|
|
else {
|
|
&redirect("index.cgi?path=" . &urlize($path));
|
|
}
|