OpenUrl($fileHashURL);
$filelist = $del->GetJSON();
$offFiles = array();
foreach ($filelist as $key => $ff) {
$offFiles[$ff->filename] = $ff->hash;
}
$alter = "";
if (count($offFiles) == 0) {
$alter = '
无法同官方网站文件服务器通信,校验时候无法保证本地文件是否同官方服务器文件是否一致
';
}
function TestOneFile($f)
{
global $message, $info, $offFiles;
$str = '';
//排除safefile和data/tplcache目录
if (preg_match("#data/tplcache|.svn|data/cache#", $f)) return -1;
$fp = fopen($f, 'r');
while (!feof($fp)) {
$str .= fgets($fp, 1024);
}
fclose($fp);
if (preg_match("#(".$info.")[ \r\n\t]{0,}([\[\(])#i", $str)) {
$trfile = preg_replace("#^".DEDEROOT."#", '', $f);
$oldTrfile = $trfile;
$trfile = substr(str_replace("/", "\\", $trfile), 1);
$localFilehash = md5_file($f);
$remoteFilehash = isset($offFiles[$trfile]) ? $offFiles[$trfile] : '';
if ($localFilehash === $remoteFilehash) {
return 0;
}
$message .= "
\r\n";
return 1;
}
return 0;
}
function TestSafe($tdir)
{
global $filetype;
$dh = dir($tdir);
while ($fname = $dh->read()) {
$fnamef = $tdir.'/'.$fname;
if (@is_dir($fnamef) && $fname != '.' && $fname != '..') {
TestSafe($fnamef);
}
if (preg_match("#\.(".$filetype.")#i", $fnamef)) {
TestOneFile($fnamef);
}
}
}
//检测
if ($action == 'test') {
$message = '';
AjaxHead();
TestSafe(DEDEROOT);
if ($message == '') $message = "没发现可疑文件";
echo $message;
exit();
} else if ($action == 'viewdiff') {
$filename = isset($filename) ? $filename : "";
if (empty($filename)) {
ShowMsg("没有选择对应的文件", "-1");
exit;
}
$baseFile = "https://cdn.dedebiz.com/release/{$cfg_version_detail}$filename";
$del = new DedeHttpDown();
$del->OpenUrl($baseFile);
$base = $del->GetHTML();
$file = "$cfg_basedir/$filename";
$new = "";
if (is_file($file)) {
$fp = fopen($file, "r");
$new = fread($fp, filesize($file));
fclose($fp);
}
include(dirname(__FILE__).'/templets/sys_safetest_viewdiff.htm');
exit();
}
//清空模板缓存
else if ($action == 'clear') {
global $cfg_tplcache_dir;
$message = '';
$d = DEDEROOT.$cfg_tplcache_dir;
AjaxHead();
sleep(1);
if (preg_match("#data\/#", $cfg_tplcache_dir) && file_exists($d) && is_dir($d)) {
$dh = dir($d);
while ($filename = $dh->read()) {
if ($filename == '.' || $filename == '..' || $filename == 'index.html') continue;
@unlink($d.'/'.$filename);
}
}
$message = "成功清空模板缓存";
echo $message;
exit();
}
include(dirname(__FILE__).'/templets/sys_safetest.htm');
?>