HEX
Server: Apache/2.4.37 (CentOS Stream) OpenSSL/1.1.1k
System: Linux ysnet.com.tw 4.18.0-553.5.1.el8.x86_64 #1 SMP Tue May 21 05:46:01 UTC 2024 x86_64
User: test (521)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: //usr/libexec/webmin/filemin/paste.cgi
#!/usr/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));
		}
	}