View file rar.php

File size: 3.8Kb
<?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 '&nbsp;-'.$stat['inf'][$i].'<br>';}
   }
   echo '&nbsp;-Объектов: '.$stat['files_cnt'].'<br>';
   echo '&nbsp;-Размер без сжатия: '.round($stat['arch'][1]/1024,2).'kb<br>';
   echo '&nbsp;-Процент сжатия: '.$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();
?>