19 include_once (
"FDL/import_tar.php");
33 if ($_FILES[
'tar'][
'error'] != UPLOAD_ERR_OK) {
34 switch ($_FILES[
'tar'][
'error']) {
35 case UPLOAD_ERR_INI_SIZE:
36 $err = sprintf(
"The uploaded file exceeds the upload_max_filesize [%s bytes] directive in php.ini", ini_get(
'upload_max_filesize'));
39 case UPLOAD_ERR_FORM_SIZE:
40 $err =
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
43 case UPLOAD_ERR_PARTIAL:
44 $err =
"The uploaded file was only partially uploaded.";
47 case UPLOAD_ERR_NO_FILE:
48 $err =
"No file was uploaded.";
54 system(
"mkdir -p " . escapeshellarg($uploaddir));
55 $fname = get_magic_quotes_gpc() ? stripslashes($_FILES[
'tar'][
'name']) : $_FILES[
'tar'][
'name'];
56 $uploadfile = $uploaddir . $fname;
57 if (move_uploaded_file($_FILES[
'tar'][
'tmp_name'],
"$uploadfile")) {
58 $report = sprintf(_(
"File %s is valid, and was successfully uploaded.") , $fname);
62 $status =
extractTar($uploadfile, $untardir, $_FILES[
'tar'][
'type']);
63 if ($status == 0) $extract = sprintf(_(
"The file %s has been correctly extracted") , $fname);
64 else $extract = sprintf(_(
"The file %s cannot be extracted") , $fname);
66 $report = _(
"Possible file upload attack! Here's some debugging info:\n");
71 $action->lay->set(
"filename", $fname);
72 $action->lay->set(
"report", $report);
73 $action->lay->set(
"extract", $extract);
74 $action->lay->set(
"dirid", $dirid);
80 $mime = trim(shell_exec(sprintf(
"file -ib %s", escapeshellarg($tar))));
81 $mime = trim(shell_exec(sprintf(
"file -b %s", escapeshellarg($tar))));
82 $mime = substr($mime, 0, strpos($mime,
" "));
87 case "application/x-compressed-tar":
88 case "application/x-gzip":
89 system(
"/bin/rm -fr " . escapeshellarg($untardir) .
"; mkdir -p " . escapeshellarg($untardir) , $status);
90 system(
"cd " . escapeshellarg($untardir) .
" && tar xfz " . escapeshellarg($tar) .
" >/dev/null", $status);
95 system(
"/bin/rm -fr " . escapeshellarg($untardir) .
"; mkdir -p " . escapeshellarg($untardir) , $status);
96 system(
"cd " . escapeshellarg($untardir) .
" && tar xf " . escapeshellarg($tar) .
" --use-compress-program bzip2 >/dev/null", $status);
101 case "application/x-zip-compressed":
102 case "application/x-zip":
103 system(
"/bin/rm -fr " . escapeshellarg($untardir) .
"; mkdir -p " . escapeshellarg($untardir) , $status);
104 system(
"cd " . escapeshellarg($untardir) .
" && unzip " . escapeshellarg($tar) .
" >/dev/null", $status);