Example #1
0
 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')));
     }
 }