function __destruct() { //flush(); //个别web配置下会出错 if (!empty($_GET['inajax'])) return; if (empty($_GET['action']) || 'newthread' !== $_GET['action']) return; if ('yes' !== $_GET['topicsubmit']) return; if ($_POST['formhash'] != FORMHASH) return; global $tid; if (empty($tid)) return; if (defined("_bds_w9x_{$tid}")) return; define("_bds_w9x_{$tid}", true); if (!baidu_get_plugin_setting('openping')) return; if (baidu_senddata_error()) return; //发新帖 $thread = get_thread_by_tid($tid); if ($thread) { $url = baidu_gen_thread_url($tid, 1, 1, $thread['fid']); $schema = new BaiduThreadSchema(); $schema->setThreadUrl($url); baidu_send_data($schema, 1); } }
function bs_index_update_last_crawl($offset = 0) { $offset = intval($offset); if ($offset < 0) return; if (0 == $offset || $offset != baidu_get_plugin_setting('lastcrawl')) { C::t('#baidusubmit#baidusubmit_setting')->update('lastcrawl', $offset, true, false); } }
function baidu_senddata_error($isget = true) { $time = time(); $timelen = 600; //10分钟 $skey = 'senderror'; //为了实时性,现取 $row = baidu_get_plugin_setting($skey, true, true); //取 if ($isget) { if (empty($row)) return false; if ($time - $row['stime'] < $timelen * 2) { //若10分钟内有错误,则20分钟内都有效 return $row['svalue'] >= 3 ? true : false; } return false; } //设置 else if (!$isget) { if ($time - $row['stime'] < $timelen) { //10分钟内 C::t('#baidusubmit#baidusubmit_setting')->update($skey, 1, false, true); } else { C::t('#baidusubmit#baidusubmit_setting')->update($skey, 1, true, false); } } }
<?php if(!defined('IN_DISCUZ')) { exit('Access Denied'); } if (empty($_GET['p']) || $_GET['p'] != baidu_get_plugin_setting('sppasswd')) { baidu_header_status(404); return 1; } header('Content-type: text/txt'); $siteurl = baidu_get_plugin_setting('siteurl'); $filename = str_replace(array(':', '/', '.'), '_', substr($siteurl, strpos($siteurl, '//')+2)).'_discuz_log.txt'; header('Content-Disposition: attachment;filename=' . $filename); header('Pragma: public'); $logfile = baidu_get_logfile(); if (!$logfile || !file_exists($logfile)) { echo 'log is not exists.'; return 1; } echo file_get_contents($logfile);
<?php if(!defined('IN_DISCUZ')) { exit('Access Denied'); } require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'./function/function_baidu.php'; $siteurl = baidu_get_plugin_setting('siteurl'); $sppasswd = baidu_get_plugin_setting('sppasswd'); $token = baidu_get_plugin_setting('pingtoken'); $sign = md5($siteurl.$token); if ($token && $sppasswd) { baidu_submit_sitemap_index('del', 1, $siteurl, $sppasswd, $sign); baidu_submit_sitemap_index('del', 2, $siteurl, $sppasswd, $sign); } $sql = <<<EOF DROP TABLE IF EXISTS cdb_baidusubmit_setting; DROP TABLE IF EXISTS cdb_baidusubmit_sitemap; DROP TABLE IF EXISTS cdb_baidusubmit_urlstat; EOF; if ($sql) { runquery($sql); } $finish = true;
exit('Access Denied'); } global $_G; require_once dirname(__FILE__).'/function/function_baidu.php'; if (!baidu_table_exists('baidusubmit_setting')) { cpmsg_error(lang('plugin/baidusubmit', 'tablenotexists')); } $url = $_G['siteurl'] . substr($_SERVER['REQUEST_URI'], (int)strrpos($_SERVER['REQUEST_URI'], '/') + 1); if (!$_G['uid']) { showmessage('not_loggedin', NULL, array(), array('login' => 1)); } if (isset($_POST['ping'])) { C::t('#baidusubmit#baidusubmit_setting')->update('openping', intval((bool)$_POST['openping'])); cpmsg('setting_update_succeed', $url , 'succeed'); } else if (isset($_POST['auth'])) { include dirname(__FILE__) . '/auth.inc.php'; } else if (empty($_GET['inajax'])) { if (!($siteUrl = baidu_get_plugin_setting('siteurl'))) { $siteUrl = $_G['siteurl']; } $keyExist = baidu_get_plugin_setting('pingtoken') ? true : false; $openping = baidu_get_plugin_setting('openping'); include template('baidusubmit:admin'); }
<?php if (!defined('IN_DISCUZ')) { exit('Access Denied'); } set_time_limit(300); if (empty($_GET['p']) || $_GET['p'] != baidu_get_plugin_setting('sppasswd')) { baidu_header_status(404); return 1; } $startTime = intval(@$_GET['start']); $sitemap = baidu_get_sitemap(2, $startTime); if (empty($sitemap)) { baidu_header_status(404); return 1; } $endTime = $sitemap['end']; $client_etag = !empty($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false; if ($client_etag) { //获取etag中的时间 $client_etag_max_time = intval($client_etag); //取整,去掉后面的无效字符 //起始设成上次的最大值 if ($client_etag_max_time > $startTime) { $startTime = $client_etag_max_time; } if ($client_etag_max_time > $endTime) { //抓取过的数据再次抓取的时候 $etag = $client_etag_max_time;
//站长平台回调的URL $siteurl = baidu_get_plugin_setting('siteurl', false, true); $url = $siteurl.'plugin.php?id=baidusubmit:checksign&checksign='.$data['checksign']; $sigurl = $config['zzplatform'].'/discuz/auth?checksign='.$data['checksign'].'&url='.urlencode($url).'&site='.urlencode($siteurl); $authData = baidu_http_send($sigurl); //去站长平台进行验证 C::t('#baidusubmit#baidusubmit_setting')->remove_key('checksign'); $output = json_decode($authData, true); if ($output['status'] == 1) { //token $token = $output['token']; C::t('#baidusubmit#baidusubmit_setting')->update('pingtoken', $token); //保存下旧密码 $old_sppasswd = baidu_get_plugin_setting('sppasswd'); //只有初次安装时才提交sitemap if (empty($old_sppasswd)) { $sppasswd = baidu_gen_sitemap_passwd(); C::t('#baidusubmit#baidusubmit_setting')->update('sppasswd', $sppasswd); $result = 0; $sign = md5($site.$token); //提交全量索引 $allreturnjson = baidu_submit_sitemap_index('add', 1, $siteurl, $sppasswd, $sign); $allresult = json_decode($allreturnjson['json'], true); if (!isset($allresult['status'])) { baidu_show_json(array( 'error' => 1, 'msg' => diconv(lang('plugin/baidusubmit', 'authfailed') . "[URL:{$allreturnjson['url']}]", CHARSET, 'utf-8'),
return 1; } } //清掉钩子 $_G['setting']['plugins']['func'] = array(); //设成最后的值 $etag = $end_tid; header('ETag: ' . $etag); $threadlist = C::t('#baidusubmit#forum_thread_baidu')->get_thread_by_tidrange($start_tid, $end_tid); $itemCount = 0; $fileSize = 0; $urlnum = 0; $installmaxtid = baidu_get_plugin_setting('installmaxtid'); global $_G; header('Content-Type: text/xml'); echo '<?xml version="1.0" encoding="UTF-8"?><urlset>'; $forumlist = baidu_get_forum_list(); foreach ($threadlist as $tid => $thread) { $output = baidu_schema_body_build($forumlist[$thread['fid']], $thread); if ($output === false) { continue; } $fileSizeCheck = $fileSize + strlen($output); $itemCountCheck = $itemCount + 1; // split sitemap file
<?php if (!defined('IN_DISCUZ')) { exit('Access Denied'); } $checksign = $_GET['checksign']; if (!$checksign || strlen($checksign) !== 32 ){ exit(); } $data = baidu_get_plugin_setting('checksign', true); if ($data && $data['svalue'] == $checksign && time()-$data['stime'] < 30) { echo $data['svalue']; }