mirror of
https://github.com/xiaoqidun/phpcp.git
synced 2024-11-21 16:40:08 +08:00
162 lines
5.8 KiB
PHP
162 lines
5.8 KiB
PHP
<?php
|
|
require "config.php";
|
|
if (!isset($_GET['path']) || !isset($_GET['type']) || !isset($_GET['unpackdir'])) {
|
|
header("Location: ./404.php");
|
|
exit;
|
|
} elseif (($type = trim($_GET['type'])) == "" || !is_file(($path = trim($_GET['path']))) || !is_dir(($unpackdir = trim($_GET['unpackdir'])))) {
|
|
header("Location: ./404.php");
|
|
exit;
|
|
}
|
|
xhtml_head("爱特解压");
|
|
echo "<div class=\"like\">\n";
|
|
echo "<a href=\"./index.php?path=" . urlencode(dirname($path)) . "\"]>返回目录</a>解压结果\n";
|
|
echo "</div>\n";
|
|
echo "<div class=\"love\">\n";
|
|
switch ($type) {
|
|
case "gz" :
|
|
if (!function_exists("gzopen")) {
|
|
echo "系统没有支持核心函数!";
|
|
} else {
|
|
$fp = preg_replace("/(.*?)\.gz$/si", "\\1", $unpackdir . "/" . basename($path));
|
|
if (file_exists($fp)) {
|
|
echo "目标文件已经存在了哦!";
|
|
} elseif (!($gz = gzopen($path, "r"))) {
|
|
echo "系统无法打开压缩文件!";
|
|
} else {
|
|
if (!($fp = fopen($fp, "wb"))) {
|
|
echo "系统无法保存解压文件!";
|
|
} else {
|
|
while (!feof($gz)) {
|
|
fwrite($fp, gzread($gz, 4096));
|
|
}
|
|
gzclose($gz);
|
|
fclose($fp);
|
|
echo "压缩文件已经解压完成!";
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case "bz2" :
|
|
if (!function_exists("bzopen")) {
|
|
echo "系统没有支持核心函数!";
|
|
} else {
|
|
$fp = preg_replace("/(.*?)\.bz2$/si", "\\1", $unpackdir . "/" . basename($path));
|
|
if (file_exists($fp)) {
|
|
echo "目标文件已经存在了哦!";
|
|
} elseif (!($bz2 = bzopen($path, "r"))) {
|
|
echo "系统无法打开压缩文件!";
|
|
} else {
|
|
if (!($fp = fopen($fp, "wb"))) {
|
|
echo "系统无法保存解压文件!";
|
|
} else {
|
|
while (!feof($bz2)) {
|
|
fwrite($fp, bzread($bz2, 4096));
|
|
}
|
|
bzclose($bz2);
|
|
fclose($fp);
|
|
echo "压缩文件已经解压完成!";
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case "zip" :
|
|
if (!file_exists("pclzip.php")) {
|
|
echo "暂时无法进行解压操作!";
|
|
} else {
|
|
require "pclzip.php";
|
|
$pk = new pclzip($path);
|
|
if (($zip = $pk->extract(PCLZIP_OPT_PATH, $unpackdir)) == false) {
|
|
echo "无法成功解压您的文件!";
|
|
} else {
|
|
echo "成功解压出 " . count($zip) . " 个档案!";
|
|
}
|
|
}
|
|
break;
|
|
case "tar" :
|
|
if (!file_exists("tarcls.php")) {
|
|
echo "暂时无法进行解压操作!";
|
|
} else {
|
|
require "tarcls.php";
|
|
$pk = new Archive_Tar($path);
|
|
if ($pk->extract($unpackdir) == false) {
|
|
echo "无法成功解压您的文件!";
|
|
} else {
|
|
echo "成功的对文件进行解压!";
|
|
}
|
|
}
|
|
break;
|
|
case "7za" :
|
|
$bin = "./p7zip.bin";
|
|
if (is_file($bin)) {
|
|
if (function_exists("chmod")) {
|
|
chmod($bin, 0700);
|
|
if (!is_executable($bin)) {
|
|
$tmp = sys_get_temp_dir() . '/p7zip.bin';
|
|
if (copy($bin, $tmp)) {
|
|
chmod($tmp, 0700);
|
|
!is_executable($tmp) ? $bin = false : $bin = $tmp;
|
|
} else {
|
|
$bin = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (___superexec($bin) == "") {
|
|
if (___superexec('7z') != "") {
|
|
$bin = "7z";
|
|
} elseif (___superexec('7za') != "") {
|
|
$bin = "7za";
|
|
}
|
|
}
|
|
if (___superexec($bin) == "") {
|
|
echo "程序无法正常完成工作!";
|
|
} else {
|
|
$a = addslashes($path);
|
|
$b = addslashes($unpackdir);
|
|
$c = isset($_GET['password']) ? addslashes(trim($_GET['password'])) : null;
|
|
echo nl2br(___codepre(___convert(___superexec("$bin x '$a' '-o$b' '-p$c' -y 2>&1"), "UTF-8")));
|
|
}
|
|
break;
|
|
case "rar" :
|
|
$bin = "./unrar.bin";
|
|
if (is_file($bin)) {
|
|
if (function_exists("chmod")) {
|
|
chmod($bin, 0700);
|
|
if (!is_executable($bin)) {
|
|
$tmp = sys_get_temp_dir() . '/unrar.bin';
|
|
if (copy($bin, $tmp)) {
|
|
chmod($tmp, 0700);
|
|
!is_executable($tmp) ? $bin = false : $bin = $tmp;
|
|
} else {
|
|
$bin = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (___superexec($bin) == "") {
|
|
if (___superexec('rar') != "") {
|
|
$bin = "rar";
|
|
} elseif (___superexec('unrar') != "") {
|
|
$bin = "unrar";
|
|
}
|
|
}
|
|
if (___superexec($bin) == "") {
|
|
echo "程序无法正常完成工作!";
|
|
} else {
|
|
$a = addslashes($path);
|
|
$b = addslashes($unpackdir);
|
|
$c = isset($_GET['password']) ? addslashes(trim($_GET['password'])) : null;
|
|
if ($c == null) {
|
|
echo nl2br(___codepre(___convert(___superexec("$bin x -y '$a' '$b' 2>&1"), "UTF-8")));
|
|
} else {
|
|
echo nl2br(___codepre(___convert(___superexec("$bin x -y '-p$c' '$a' '$b' 2>&1"), "UTF-8")));
|
|
}
|
|
}
|
|
break;
|
|
default :
|
|
echo "暂时不支持的压缩类型!";
|
|
}
|
|
echo "</div>\n";
|
|
xhtml_footer();
|
|
?>
|