Пример #1
0
    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);
        }
    }
Пример #2
0
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);
    }
}
Пример #3
0
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);
        }
    }
}
Пример #4
0
<?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);
Пример #5
0
<?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;
Пример #6
0
    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');
}
Пример #7
0
<?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;
Пример #8
0
//站长平台回调的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'),
Пример #9
0
        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
Пример #10
0
<?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'];
}