📄 checktools.inc.php
字号:
<?php
/*
[Discuz!] (C)2001-2009 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: checktools.inc.php 16688 2008-11-14 06:41:07Z cnteacher $
*/
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
exit('Access Denied');
}
cpheader();
if(!isfounder()) cpmsg('noaccess_isfounder', '', 'error');
if($operation == 'filecheck') {
$step = max(1, intval($step));
shownav('tools', 'nav_filecheck');
showsubmenusteps('nav_filecheck', array(
array('nav_filecheck_confirm', $step == 1),
array('nav_filecheck_verify', $step == 2),
array('nav_filecheck_completed', $step == 3)
));
if($step == 1) {
cpmsg($lang[filecheck_tips_step1], $BASESCRIPT.'?action=checktools&operation=filecheck&step=2', 'button', '', FALSE);
} elseif($step == 2) {
cpmsg(lang('filecheck_verifying'), "$BASESCRIPT?action=checktools&operation=filecheck&step=3", 'loading', '', FALSE);
} elseif($step == 3) {
if(!$discuzfiles = @file('admin/discuzfiles.md5')) {
cpmsg('filecheck_nofound_md5file', '', 'error');
}
$md5data = array();
$cachelist = checkcachefiles('forumdata/cache/');
checkfiles('./', '\.php', 0, 'config.inc.php');
checkfiles('include/', '\.php|\.htm|\.js');
checkfiles('templates/default/', '\.php|\.htm');
checkfiles('wap/', '\.php');
checkfiles('archiver/', '\.php');
checkfiles('api/', '\.php');
checkfiles('plugins/', '\.php');
checkfiles('admin/', '\.php');
checkfiles('modcp/', '\.php');
checkfiles('uc_client/', '\.php', 0);
checkfiles('uc_client/control/', '\.php');
checkfiles('uc_client/model/', '\.php');
checkfiles('uc_client/lib/', '\.php');
foreach($discuzfiles as $line) {
$file = trim(substr($line, 34));
$md5datanew[$file] = substr($line, 0, 32);
if($md5datanew[$file] != $md5data[$file]) {
$modifylist[$file] = $md5data[$file];
}
$md5datanew[$file] = $md5data[$file];
}
$weekbefore = $timestamp - 604800;
$addlist = @array_merge(@array_diff_assoc($md5data, $md5datanew), $cachelist[2]);
$dellist = @array_diff_assoc($md5datanew, $md5data);
$modifylist = @array_merge(@array_diff_assoc($modifylist, $dellist), $cachelist[1]);
$showlist = @array_merge($md5data, $md5datanew, $cachelist[0]);
$doubt = 0;
$dirlist = $dirlog = array();
foreach($showlist as $file => $md5) {
$dir = dirname($file);
if(@array_key_exists($file, $modifylist)) {
$fileststus = 'modify';
} elseif(@array_key_exists($file, $dellist)) {
$fileststus = 'del';
} elseif(@array_key_exists($file, $addlist)) {
$fileststus = 'add';
} else {
$filemtime = @filemtime($file);
if($filemtime > $weekbefore) {
$fileststus = 'doubt';
$doubt++;
} else {
$fileststus = '';
}
}
if(file_exists($file)) {
$filemtime = @filemtime($file);
$fileststus && $dirlist[$fileststus][$dir][basename($file)] = array(number_format(filesize($file)).' Bytes', date("$dateformat $timeformat", $filemtime));
} else {
$fileststus && $dirlist[$fileststus][$dir][basename($file)] = array('', '');
}
}
$result = $resultjs = '';
$dirnum = 0;
foreach($dirlist as $status => $filelist) {
$dirnum++;
$result .= '<tbody id="status_'.$status.'" style="display:'.($status != 'modify' ? 'none' : '').'">';
foreach($filelist as $dir => $files) {
$result .= '<tr><td colspan="4"><div class="ofolder">'.$dir.'</div><div class="lightfont filenum left">';
foreach($files as $filename => $file) {
$result .= '<tr><td><em class="bold files">'.$filename.'</em></td><td style="text-align: right">'.$file[0].' </td><td>'.$file[1].'</td></tr>';
}
}
$result .= '</tbody>';
$resultjs .= '$(\'status_'.$status.'\').style.display=\'none\';';
}
$modifiedfiles = count($modifylist);
$deletedfiles = count($dellist);
$unknownfiles = count($addlist);
$result .= '<script>function showresult(o) {'.$resultjs.'$(\'status_\' + o).style.display=\'\';}</script>';
showtips('filecheck_tips');
showtableheader('filecheck_completed');
showtablerow('', 'colspan="4"', "<div class=\"lightfont filenum left\">".
($modifiedfiles > 0 ? "<a href=\"###\" onclick=\"showresult('modify')\"><em class=\"edited\">$lang[filecheck_modify]: $modifiedfiles</em></a> " : '').
($deletedfiles > 0 ? "<a href=\"###\" onclick=\"showresult('del')\"><em class=\"del\">$lang[filecheck_delete]: $deletedfiles</em></a> " : '').
($unknownfiles > 0 ? "<a href=\"###\" onclick=\"showresult('add')\"><em class=\"unknown\">$lang[filecheck_unknown]: $unknownfiles</em></a> " : '').
($doubt > 0 ? "<a href=\"###\" onclick=\"showresult('doubt')\"><em class=\"unknown\">$lang[filecheck_doubt]: $doubt</em></a> " : '').
"</div>");
showsubtitle(array('filename', '', 'lastmodified'));
echo $result;
showtablefooter();
}
} elseif($operation == 'ftpcheck') {
$alertmsg = '';
$testdir = substr(md5('Discuz!' + $timestamp), 12, 8);
$testfile = 'discuztest.txt';
$attach_dir = $attachdir;
if($attachsave) {
$attach_dir .= '/'.$testdir;
if(!@mkdir($attach_dir, 0777)) {
$alertmsg = lang('settings_attach_local_mderr');
}
}
if(!$alertmsg) {
if(!@fclose(fopen($attach_dir.'/'.$testfile, 'w'))) {
$alertmsg = lang('settings_attach_local_uperr');
} else {
@unlink($attach_dir.'/'.$testfile);
}
$attachsave && @rmdir($attach_dir);
}
if(!$alertmsg) {
require_once './include/ftp.func.php';
if(!empty($settingsnew['ftp']['password'])) {
$settings['ftp'] = unserialize($db->result_first("SELECT value FROM {$tablepre}settings WHERE variable='ftp'"));
$settings['ftp']['password'] = authcode($settings['ftp']['password'], 'DECODE', md5($authkey));
$pwlen = strlen($settingsnew['ftp']['password']);
if($settingsnew['ftp']['password']{0} == $settings['ftp']['password']{0} && $settingsnew['ftp']['password']{$pwlen - 1} == $settings['ftp']['password']{strlen($settings['ftp']['password']) - 1} && substr($settingsnew['ftp']['password'], 1, $pwlen - 2) == '********') {
$settingsnew['ftp']['password'] = $settings['ftp']['password'];
}
}
$ftp['pasv'] = intval($settingsnew['ftp']['pasv']);
$ftp_conn_id = dftp_connect($settingsnew['ftp']['host'], $settingsnew['ftp']['username'], $settingsnew['ftp']['password'], $settingsnew['ftp']['attachdir'], $settingsnew['ftp']['port'], $settingsnew['ftp']['ssl'], 1);
switch($ftp_conn_id) {
case '-1':
$alertmsg = $lang['settings_attach_remote_conerr'];
break;
case '-2':
$alertmsg = $lang['settings_attach_remote_logerr'];
break;
case '-3':
$alertmsg = $lang['settings_attach_remote_pwderr'];
break;
case '-4':
$alertmsg = $lang['settings_attach_remote_ftpoff'];
break;
default:
$alertmsg = '';
}
}
if(!$alertmsg) {
if(!dftp_mkdir($ftp_conn_id, $testdir)) {
$alertmsg = $lang['settings_attach_remote_mderr'];
} else {
if(!(function_exists('ftp_chmod') && dftp_chmod($ftp_conn_id, 0777, $testdir)) && !dftp_site($ftp_conn_id, "'CHMOD 0777 $testdir'") && !@ftp_exec($ftp_conn_id, "SITE CHMOD 0777 $testdir")) {
$alertmsg = $lang['settings_attach_remote_chmoderr'].'\n';
}
$testfile = $testdir.'/'.$testfile;
if(!dftp_put($ftp_conn_id, $testfile, DISCUZ_ROOT.'./robots.txt', FTP_BINARY)) {
$alertmsg .= $lang['settings_attach_remote_uperr'];
dftp_delete($ftp_conn_id, $testfile);
dftp_delete($ftp_conn_id, $testfile.'.uploading');
dftp_delete($ftp_conn_id, $testfile.'.abort');
dftp_rmdir($ftp_conn_id, $testdir);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -