<?
/*
mdmx (Сибирский)
icq 4999787
e-mail: wmid@bk.ru
*/
#ob_start();
if (isset($_POST['can'])){unset($_POST);}
define(SFILE, $_SERVER["DOCUMENT_ROOT"]."/.htaccess");
define(SoFILE, $_SERVER["DOCUMENT_ROOT"]."/htaccess.txt");
$SoTEXT="AddDefaultCharset UTF-8
<Files 403.htm>
order allow,deny
deny from all
</Files>
allow from $_SERVER[REMOTE_ADDR]
";
$file403="
<a href='/?'> Сайт</a> временно остановлен для обновления файлов на сервере!
Просим извенения за неудобства!";
$f_def="AddDefaultCharset UTF-8";
?>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Сканер  v.1</title>	
	</head>
<body>
<script type="text/javascript">
  function AddLog(text)
  {
  var logpage=document.getElementById('text_log');
  logpage.innerHTML = " " + text + logpage.innerHTML;
  }
  function AddScan(text)
  {
  var logpage=document.getElementById('Scan_log');
  // logpage.innerHTML = " " + text + logpage.innerHTML;
  logpage.innerHTML = text;
  }
  function Lexem(text)
  {
  var logpage=document.getElementById('lexem_log');
  logpage.innerHTML = text;
  }
  function countBadFiles(text)
  {
  var logpage=document.getElementById('bad_count');
  logpage.innerHTML = text;
  }
  </script>
<?php
$arr_bad=array();
function enttext($text)
{
  if (is_array($text))
  {
    foreach ($text as $k=>$v){$text[$k]=htmlentities($v,ENT_QUOTES,"UTF-8");}
  }else{$text=htmlentities($text,ENT_QUOTES,"UTF-8");}
return $text;
}
function searsh_content($dir, &$lexem)
	{  
  global $arr_bad,$new_r;

    $dh = opendir ($dir);
    while ($file = readdir($dh))
    	{
        if($file!="." && $file!="..")
        	{
            $fullpath = $dir."/".$file;
            if(!is_dir ($fullpath))
            	{
              $ras=".".strtolower(preg_replace('#^.*\.#', NULL, $fullpath));
              if ($new_r && !isset($new_r[$ras])){continue;}   //echo " $ras пропуск $fullpath<br />" ;
              //
              $content=file_get_contents($fullpath);
              $sc= "<font color='green'>".enttext($fullpath)."</font><br />";
              ?><script type="text/javascript">AddScan("<?=$sc?>");</script><?
              foreach ($lexem as $k=>$v)
              {
              $pattern=preg_quote($v);
              ?><script type="text/javascript">Lexem("<?=$pattern?>");</script><?
              if (preg_match("#$pattern#isU", $content))
                {
                  $arr_bad[]=("Вхождение " . $v . "  в файле:  ".$fullpath);
                  $log = "<font color='red'><b>Вхождение ".enttext($v). " в файле: " .$fullpath.'</b></font><br/>';
                  ?><script type="text/javascript">countBadFiles("<?=count($arr_bad)?>");</script><?
                  ?><script type="text/javascript">AddLog("<?=$log?>");</script><?  
                  #echo $log;
                }
              }
              //
            	}else{searsh_content($fullpath,$lexem);}
        	}
    	}
    closedir ($dh);
    //return ($f_size);
	}

$def_sersh="eval
multipart/form-data
file_put_contents
fputs
copy
AddType
base64_decode
base64_encode";

$ras=".php
.htaccess";
$ras_arr=explode("\n",$ras);
if (isset($_POST['ras']))
{
$tmp_r=explode("\n",trim($_POST['ras']));
$new_r=array();
  if(is_array($tmp_r))
  {
    foreach ($tmp_r as $k=>$v)
    {
    $t=strtolower(trim($v));
      if ($t){$new_r[$t]=$t; }
    }
  }
}


$form_dop="<input type='submit' name='unclosed' value='Открыть сайт' /> <input type='submit' name='closed' value='Закрыть сайт' />";


if (isset($_POST['closed']))
{
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/403.htm",$file403);
copy(SFILE,SoFILE);
file_put_contents(SFILE,$SoTEXT);
}

if (isset($_POST['unclosed']))
{
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/403.htm",$file403);
if (is_file(SoFILE))
{
copy(SoFILE,SFILE);
}else{
file_put_contents(SFILE,$f_def);
}

@unlink(SoFILE);
}
?>

<form method='post'>
<div> Старт <input type='text' name='start' value="<?=(isset($_POST['start'])?enttext($_POST['start']):enttext($_SERVER["DOCUMENT_ROOT"]));?>" /> </div>
<div> Искомые слова </div>
<div><textarea name='sears_content'  id='id_sears_content' style='width: 100%;  height: 100px; overflow: scroll'><?=isset($_POST['sears_content']) && $_POST['sears_content']!=''?enttext($_POST['sears_content']):enttext($def_sersh)?></textarea></div>
<div> Укажите расширения файлов для сканирования: </div>
<div><textarea name='ras'  id='id_ras' style='width: 100%;  height: 100px; overflow: scroll'><?=isset($_POST['ras'])?enttext($_POST['ras']):enttext($ras)?></textarea></div>
<div> Сканирование: </div>
<div style='width: 100%;  height: 100px; overflow: scroll' id='Scan_log'></div>
<div> Лексема: </div>
<div id='lexem_log'></div>
<div> Найденные файлы <span id='bad_count'></span></div>
<div style='width: 100%;  height: 100px; overflow: auto' id='text_log'></div>
<div> <input type='submit' name='searh' value='искать' /> <input type='submit' name='can' value='сброс' />
<!--a href='javascript:void' onClick="AddLog('text')" >тест</a--></div>


<div> <?=$form_dop?> </div>
</form>

<?
if (isset($_POST['searh']))
{
if (function_exists('set_time_limit')){set_time_limit(86400);}
$t_mp=trim($_POST['sears_content']);
$s_a=explode("\n",$t_mp);

  if (is_array($s_a))
  {
    foreach ($s_a as $k=>$v)
      {
      $t=trim($v);
      if ($t){$s_a[$k]=$t;}else{unset($s_a[$k]);}
      #echo "$t<br />";
      }
  }
  
  if (is_array($s_a))
  {
    foreach ($s_a as $k=>$v)
      {
      $t=trim($v);
      if ($t){$s_a[$k]=$t;}else{unset($s_a[$k]);}
      #echo "$t<br />";
      }
  }
  
  if (count($s_a))
  {
  searsh_content(enttext($_POST['start']), $s_a);
  #header("location: ?res=".serialize($ret_arr));
  
  $sc= "<font color='blue'><b>Сканирование завершено </b></fon><br />";
  ?><script type="text/javascript">AddScan("<?=$sc?>");</script><?
  }else{echo "<div>Искомые лексемы не указаны</div>";}
  
}
?>
</body>
</html>