<?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);
}
?>