Files
webmin/filemin/paste.cgi
2026-04-08 19:53:49 +02:00

77 lines
1.4 KiB
Perl
Executable File

#!/usr/local/bin/perl
require './filemin-lib.pl';
use Cwd 'abs_path';
&ReadParse();
get_paths();
open(my $fh, "<".&get_paste_buffer_file())
or die "Error: $!";
my @arr = <$fh>;
close($fh);
my $act = $arr[0];
my $dir = $arr[1];
chomp($act);
chomp($dir);
$from = abs_path($base.$dir);
if ($cwd eq $from) {
print_errors($text{'error_pasting_nonsence'});
}
else {
my @errors;
for (my $i = 2; $i <= scalar(@arr) - 1; $i++) {
chomp($arr[$i]);
if ($act eq "copy") {
if (-e "$cwd/$arr[$i]") {
push @errors,
"$cwd/$arr[$i] " .
"$text{'error_exists'}";
}
else {
system("cp -r ".
quotemeta(
"$from/$arr[$i]").
" ".quotemeta($cwd)
) == 0 ||
push @errors,
"$from/$arr[$i] " .
"$text{'error_copy'}" .
" $!";
}
}
elsif ($act eq "cut") {
if (!can_move("$from/$arr[$i]",
$cwd, $from)) {
push @errors,
"$from/$arr[$i]" .
" - " .
"$text{'error_move'}";
}
elsif (-e "$cwd/$arr[$i]") {
push @errors,
"$cwd/$arr[$i] " .
"$text{'error_exists'}";
}
else {
system("mv ".
quotemeta(
"$from/$arr[$i]").
" ".quotemeta($cwd)
) == 0 ||
push @errors,
"$from/$arr[$i] " .
"$text{'error_cut'}" .
" $!";
}
}
}
if (scalar(@errors) > 0) {
print_errors(@errors);
}
else {
&redirect(
"index.cgi?path=".&urlize($path));
}
}