static function authSite() { require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'options.php'; require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'sitemap.php'; BaidusubmitOptions::setOption('siteurl', $_POST['siteurl']); $config = (include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'const.php'); $site = $_POST['siteurl']; //去站长平台获取随机串 $result = BaidusubmitSitemap::httpSend($config['zzplatform'] . '/getCheckSign?siteurl=' . urlencode($site) . '&sitetype=' . $config['siteTypeKey']); $data = json_decode($result); if (isset($data->status) && '0' != $data->status) { self::showJson(array('error' => 1, 'msg' => __('Failed to get Checksign'))); } BaidusubmitOptions::setOption('siteurl', $data->siteurl); BaidusubmitOptions::setOption('checksign', $data->checksign); //站长平台回调的URL $siteurl = BaidusubmitOptions::getOption('siteurl'); $url = $siteurl . BAIDUSUBMIT_PLUGIN_PATH . 'baidusubmit/checksign.php?checksign=' . $data->checksign; $sigurl = $config['zzplatform'] . '/auth?checksign=' . $data->checksign . '&checkurl=' . urlencode($url) . '&siteurl=' . urlencode($siteurl); $authData = BaidusubmitSitemap::httpSend($sigurl); //去站长平台进行验证 BaidusubmitOptions::deleteOption('checksign'); $output = json_decode($authData); if (isset($output->status) && '0' == $output->status) { //token $token = $output->token; //保存下旧密码 $old_sppasswd = BaidusubmitOptions::getOption('sppasswd'); //只有初次安装时才提交sitemap if (empty($old_sppasswd)) { $sppasswd = BaidusubmitSitemap::genSitemapPasswd(); $result = 0; $sign = md5($siteurl . $token); //提交全量索引 $allreturnjson = BaidusubmitSitemap::submitIndex('add', BaidusubmitSitemap::TYPE_ALL, $siteurl, $sppasswd, $sign); $allresult = json_decode($allreturnjson['body']); if (!isset($allresult->status) || '0' != $allresult->status) { self::showJson(array('error' => 1, 'msg' => __('Sitemap submission failed', 'sitemap') . "[URL:{$allreturnjson['url']}]")); } $result += (int) $allresult->status; //提交增量索引 $incresultjson = BaidusubmitSitemap::submitIndex('add', BaidusubmitSitemap::TYPE_INC, $siteurl, $sppasswd, $sign); $incresult = json_decode($incresultjson['body']); if (!isset($incresult->status) || '0' != $allresult->status) { self::showJson(array('error' => 1, 'msg' => __('Sitemap submission failed', 'sitemap') . '[URL:' . $incresultjson['url'] . ']')); } $result += (int) $incresult->status; if ($result === 0) { //tid节点 BaidusubmitOptions::setOption('installmaxtid', BaidusubmitSitemap::getMaxTid()); //保存sppasswd BaidusubmitOptions::setOption('sppasswd', $sppasswd); //为了避免提交sitemap超时,把token放在下。提交成功后再写token. BaidusubmitOptions::setOption('pingtoken', $token); self::showJson(array('error' => 0, 'msg' => __('Verification successful', 'sitemap'))); } else { // delete sppassword BaidusubmitOptions::setOption('sppasswd', ''); self::showJson(array('error' => 1, 'msg' => __('Sitemap submission failed', 'sitemap'))); } } else { //为了避免提交sitemap超时,把token放在下。提交成功后再写token. BaidusubmitOptions::setOption('pingtoken', $token); self::showJson(array('error' => 0, 'msg' => __('Verification successful', 'sitemap'))); } } elseif (in_array($output->status, array(1, 2001, 2002, 2003, 2008))) { $e = array(1 => __('Parameter error', 'sitemap'), 2 => __('No site information', 'sitemap'), 100 => __('System error', 'sitemap'), 2001 => __('Checksign does not exists', 'sitemap'), 2002 => __('Sign detection failed', 'sitemap'), 2003 => __('Checkurl request failed', 'sitemap'), 2008 => __('Checkurl does not belong to siteurl', 'sitemap')); self::showJson(array('error' => 1, 'msg' => $e[$output->status])); } else { self::showJson(array('error' => 1, 'msg' => __('Verification failed, please try again', 'sitemap'))); } }
static function submitIndex($action, $type, $site, $sppasswd, $sign) { $zzaction = ''; if (0 == strncasecmp('del', $action, 3)) { $zzaction = '/deleteSitemap'; } else { if (0 == strncasecmp('add', $action, 3)) { $zzaction = '/saveSitemap'; } else { return false; } } $script = ''; $stype = ''; if (1 == $type) { $script = 'indexall'; $stype = 'all'; } else { if (2 == $type) { $script = 'indexinc'; $stype = 'inc'; } else { return false; } } $path = BAIDUSUBMIT_PLUGIN_PATH; $indexurl = "{$site}{$path}baidusubmit/sitemap.php?m={$script}&p={$sppasswd}"; $config = (include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'const.php'); $zzsite = $config['zzplatform']; $submiturl = $zzsite . $zzaction . '?siteurl=' . urlencode($site) . '&indexurl=' . urlencode($indexurl) . '&tokensign=' . urlencode($sign) . '&type=' . $stype . '&resource_name=RDF_Other_Blogposting'; $ret = BaidusubmitSitemap::httpSend($submiturl); return array('body' => $ret, 'url' => $submiturl); }