OpenUrl($fileHashURL); $filelist = $del->GetJSON(); $offFiles = array(); foreach ($filelist as $key => $ff) { $offFiles[$ff->filename] = $ff->hash; } $alter = ""; if (count($offFiles) == 0) { $alter = 'EOT '; } 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 .= "
可疑文件:{$trfile}
更改记录 删除 查看源码

\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'); ?>