Просмотр файла fchecker.php

Размер файла: 4.42Kb
<?php
  ///////////////////////////////////////////////////////////////////////////
  //   	Файл-чекер  -  автоматический мониториг изменений файлов сайта     //
  //                                                                       //
  //                     Воробьев Денис, 2005-2007                         //                       //
  //                                                                       //
  //          FileChecker 2.1 by Denvor http://denvor.ru                   //
  ///////////////////////////////////////////////////////////////////////////

  // Введите адрес (или адреса) электронной почты, куда будет отправляться уведомление
  //  $to = "[email protected], [email protected]";
  $to = "[email protected]";
  //Введите тему присылаемого письма
  $subj = "My Site fchecker";
  // от кого письмо
  $from = "admin@my_site.ru";
  // URL сайта (для формирования ссылки на новые файлы)
  $url = "http://my_site.ru";

  //введите имя файла, в котором будет хранится список каталогов
  // ВНИМАНИЕ! на некоторых хостингах (РБК) требуется прописать ПОЛНЫЙ путь к файлу от корня
  // например, /www/domen/users/sub-domen/www/htdocs/list
  $listfile = "/www/my_site/list";

 // введите список файлов, изменения которых не нужно отслеживать
  GLOBAL $no_check,$total_size,$files,$folders;
  $no_check = array("list_port", "filepos", "Tree", "history", "ini");

 // корневая директория сайта
  $root_dir = "/www/my_site";



  ///////////////////////////////////////////////////////////////////////////
  //Все, дальше ничего менять не нужно  /////////////////////////////////////
  ///////////////////////////////////////////////////////////////////////////

  $total_size = $files = $folders = 0;
  $dir = opendir ($root_dir);
  scan_dir($root_dir);

  function scan_dir($dirname)
   {
      GLOBAL $arr;
               $dir = opendir($dirname);
                while (($file = readdir($dir)) !== false)
    {
     if($file != "." && $file != "..")
      {
       if(is_file($dirname."/".$file))
        {
          if (!in_array($file, $GLOBALS['no_check']))
          $arr[] = str_replace($root_dir,"../",$dirname)."/".$file." - ".date("m.d.y H:i:s",filemtime($dirname."/".$file))." - ".filesize($dirname."/".$file);
          $GLOBALS['files']++;
          $GLOBALS['total_size']+= filesize($dirname."/".$file);

        }
       if(is_dir($dirname."/".$file))
        {
            $arr[] = $dirname."/".$file;
            $GLOBALS['folders']++;
            scan_dir($dirname."/".$file);
         }
      }
    }
   closedir($dir);
  }


 $list = fopen($listfile, "r+");
 if ($list AND filesize($listfile)> 0)
  {
     $file = fopen($listfile,"r");
     $bufer = fread($file,filesize($listfile));
       fclose($file);
     $arr1 = unserialize($bufer);
     $arr2 = array_diff ($arr, $arr1);
     $arr3 = array_diff ($arr1, $arr);
    if ((count ($arr2) + count ($arr3)) ==0)
    {
      if ($id ==1) echo " Изменений файлов со времени последнего  сканирования не обнаружено!<br>";
     }
    else
    {
      $mess1 = " ====== Новые файлы и новые параметры файлов: ====== <br>\n";
     if ($id ==1) $mess1.="<br>";
     foreach($arr2 as $val)
      {
        $val1 = substr ($val, 1);
        if (substr($val1,0,1)==".") $val1=substr($val1,1);
        if (substr($val1,0,1)==".") $val1=substr($val1,1);
        $val1 = str_replace($root_dir, "", $val);
        $val1 = "<a href=$url$val1 target=_blank>".$val1."</a><br>";
        $mess1 =  $mess1."$val1 \n";
      }
      $mess2 = "<br>\n\n ====== Удаленные файлы и старые параметры файлов: ====== <br>\n";
      foreach($arr3 as $val)
      {
        $mess2 =  $mess2."$val <br>\n";
      }
      $mess = $mess1.$mess2;
      if (((1024*1024) > $total_size) && ($total_size > 1024)) $size = (round($total_size /1024))."K";
      else if ($total_size > (1024*1024)) $size = (round($total_size / 1024 /1024))."M";
      $mess.= "== \nОбщий обьем  файлов: $size ($total_size байт), всего файлов: $files,папок: $folders ==";
      if ($id == 1) echo $mess;
      $subj =convert_cyr_string (stripslashes($subj),w,k);
      $headers = "MIME-Version: 1.0\n";
      $headers .= "From: $from\n";
      $headers .="Content-type: text/html; charset=windows-1251";
      mail ($to, $subj, $mess, $headers);
      $str = serialize($arr);
      $file = fopen($listfile,"w");
      fwrite($file,$str);
      fclose($file);
    }
  }
 else
  {
    $str = serialize($arr);
    $file = fopen($listfile,"w");
    fwrite($file,$str);
    fclose($file);
  }
?>