<?php
error_reporting(0);
include_once('cfg.inc'); include_once('ins.inc'); $razdel='Rar To Zip';
$url=str_replace(array('"','\'','`'),array('','',''),$_POST['url']);
$apass=str_replace(array('"','\'','`'),array('','',''),$_POST['apass']);
$code=preg_replace('~[^0-9]~','',$_POST['code']); $er=1;
$fl=file('data/code.dat');
$f=fopen('data/code.dat','w');
if ($fl<>null) {
$cnt=count($fl);
for ($i=0;$i<$cnt;$i++) {
if ($code<>trim($fl[$i])) {fwrite($f,trim($fl[$i])."\r\n");}
else {$er=0;}
}
}
fclose($f);
if ($er<>0) {page_b($razdel,1); echo 'Ошибка в проверочном коде..'; page_e(); exit;}
if (preg_match('~[.]rar$~i',$url)<>1) {
page_b($razdel,1); echo 'Неверно введён URL..'; page_e(); exit;
}
$host=preg_replace("~http://([^/]*).*~i","\\1",$url,1);
$path=preg_replace("~http://[^/]*(/.*)~i","\\1",$url,1);
if (($host==$url)||($path==$url)) {
page_b($razdel,1); echo 'Неверно введён URL..'; page_e(); exit;
}
if ($fl=trim(file_get_contents('data/archives.dat'))) {
list($v1,$v2,$v3)=split(':',$fl);
if ($v1==date('d') && $v2==date('H')) {$num=$v3+1; if ($num>10) {$num=10;}}
else {$num=1;}
} else {$num=1;}
$f=fopen('data/archives.dat','w');
fwrite($f,date('d:H').':'.$num);
fclose($f);
if ($num==10) {$f=fopen('data/code.dat','w'); fclose($f);}
function rdir($dir) {
if ($handle=opendir($dir)) {
while (($file=readdir($handle))<>false) {
if (is_file($dir."/".$file)) {unlink($dir."/".$file);}
elseif (is_dir($dir."/".$file)&&($file<>".")&&($file<>".."))
{rdir($dir."/".$file);}
} closedir($handle);
if (rmdir($dir)) {return true;} else {return false;}
}
}
page_b($razdel,1); $er=1;
echo 'Получение информации о файле: ';
$f=fsockopen($host,80,$e,$e,3); $fsz=null;
fputs($f,"HEAD $path HTTP/1.1\r\nHost: $host\r\nConnection: close\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n");
$header="";
while (!feof($f)) {$header.=fgets($f,1024);}
fclose($f);
if (strpos($header,"Content-Length:")!==false) {
eregi("Content-Length: ([0-9]*)",$header,$mss);
$fsz=trim($mss[1]);
}
if ($fsz>=1 && $fsz<=$max_size) {
echo round($fsz/1024,2).'kb<br>Загрузка файла: ';
$sdir=time().rand(0,9).rand(0,9);
if (copy($url,'data/'.$sdir.'.rar')) {
echo 'OK<br>Анализ архива: ';
$ap=''; if ($apass<>null) {$ap='-hp'.es($apass).' ';}
exec($unrar.'vt -c- -av- -y '.$ap.'data/'.$sdir.'.rar',$arr,$r);
$stat=list_t($arr);
if ($r==0) {
echo 'OK<br>Информация об архиве:<br>';
if ($stat['inf_cnt']>0) {
for ($i=0;$i<$stat['inf_cnt'];$i++) {echo ' -'.$stat['inf'][$i].'<br>';}
}
echo ' -Объектов: '.$stat['files_cnt'].'<br>';
echo ' -Размер без сжатия: '.round($stat['arch'][1]/1024,2).'kb<br>';
echo ' -Процент сжатия: '.$stat['arch'][3].'<br>';
echo 'Извлечение файлов: ';
mkdir('data/'.$sdir,0777); $arr=null;
exec($unrar.'x -c- -av- -o- -y '.$ap.'data/'.$sdir.'.rar "*.*" data/'.$sdir.' ',$arr,$r);
if ($r==0) {
echo 'OK<br>Сжатие файлов в ZIP: ';
chdir('data/'.$sdir); $arr=null;
exec($zip.'-rm ../../'.$files_dir.'/'.$sdir.'.zip *',$arr,$r);
chdir('../../');
if ($r==0) {
echo 'OK<br>Размер ZIP-архива: '.round(filesize($files_dir.'/'.$sdir.'.zip')/1024,2).'kb<br>';
echo 'ZIP-архив: <a href="'.$rar_url.'/'.$sdir.'.zip">'.$rar_url.'/'.$sdir.'.zip</a><br>';
$er=0;
} else {echo 'ERROR<br>';}
} else {echo errors($r).'<br>';}
rdir('data/'.$sdir);
} else {echo errors($r).'<br>';}
unlink('data/'.$sdir.'.rar');
} else {echo 'ERROR<br>';}
} else {echo 'ERROR<br>';}
if ($er<>0) {echo 'Статус: ERROR';} else {echo 'Статус: OK';}
page_e();
?>