auth.inc.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. if (!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  3. exit('Access Denied');
  4. }
  5. ob_end_clean();
  6. function baidu_show_json($var)
  7. {
  8. define('FOOTERDISABLED', 1);
  9. echo json_encode($var);
  10. exit;
  11. }
  12. $config = baidu_get_plugin_config();
  13. $site = $_POST['siteurl'];
  14. require_once libfile('function/filesock');
  15. $result = baidu_http_send($config['zzplatform'] . '/discuz/getCheckSign?site=' . urlencode($site));
  16. $data = json_decode($result, true); //去站长平台获取随机串
  17. if ($data['status'] != 1) {
  18. baidu_show_json(array(
  19. 'error' => 1,
  20. 'msg' => diconv(lang('plugin/baidusubmit', 'getCheckSigfailed'), CHARSET, 'utf-8'),
  21. ));
  22. }
  23. C::t('#baidusubmit#baidusubmit_setting')->update('siteurl', $data['siteurl']);
  24. C::t('#baidusubmit#baidusubmit_setting')->update('checksign', $data['checksign']);
  25. //站长平台回调的URL
  26. $siteurl = baidu_get_plugin_setting('siteurl', false, true);
  27. $url = $siteurl . 'plugin.php?id=baidusubmit:checksign&checksign=' . $data['checksign'];
  28. $sigurl = $config['zzplatform'] . '/discuz/auth?checksign=' . $data['checksign'] . '&url=' . urlencode($url) . '&site=' . urlencode($siteurl);
  29. $authData = baidu_http_send($sigurl); //去站长平台进行验证
  30. C::t('#baidusubmit#baidusubmit_setting')->remove_key('checksign');
  31. $output = json_decode($authData, true);
  32. if ($output['status'] == 1) {
  33. //token
  34. $token = $output['token'];
  35. C::t('#baidusubmit#baidusubmit_setting')->update('pingtoken', $token);
  36. //保存下旧密码
  37. $old_sppasswd = baidu_get_plugin_setting('sppasswd');
  38. //只有初次安装时才提交sitemap
  39. if (empty($old_sppasswd)) {
  40. $sppasswd = baidu_gen_sitemap_passwd();
  41. C::t('#baidusubmit#baidusubmit_setting')->update('sppasswd', $sppasswd);
  42. $result = 0;
  43. $sign = md5($site . $token);
  44. //提交全量索引 主题
  45. $allreturnjson = baidu_submit_sitemap_index('add', 1, $siteurl, $sppasswd, $sign);
  46. $allresult = json_decode($allreturnjson['json'], true);
  47. if (!isset($allresult['status'])) {
  48. baidu_show_json(array(
  49. 'error' => 1,
  50. 'msg' => diconv(lang('plugin/baidusubmit', 'authfailed') . "[URL:{$allreturnjson['url']}]", CHARSET, 'utf-8'),
  51. ));
  52. }
  53. $result += (int) $allresult['status'];
  54. //提交增量索引 主题
  55. $incresultjson = baidu_submit_sitemap_index('add', 2, $siteurl, $sppasswd, $sign);
  56. $incresult = json_decode($incresultjson['json'], true);
  57. if (!isset($incresult['status'])) {
  58. baidu_show_json(array(
  59. 'error' => 1,
  60. 'msg' => diconv(lang('plugin/baidusubmit', 'authfailed') . '[URL:' . $incresultjson['url'] . ']', CHARSET, 'utf-8'),
  61. ));
  62. }
  63. $result += (int) $incresult['status'];
  64. //提交版块sitemap
  65. $sitemapbolckreturnjson = baidu_submit_sitemap_index('add', 3, $siteurl, $sppasswd, $sign);
  66. $sitemapResult = json_decode($sitemapbolckreturnjson['json'], true);
  67. if (!isset($sitemapResult['status'])) {
  68. baidu_show_json(array(
  69. 'error' => 1,
  70. 'msg' => diconv(lang('plugin/baidusubmit', 'authfailed') . "[URL:{$sitemapbolckreturnjson['url']}]", CHARSET, 'utf-8'),
  71. ));
  72. }
  73. $result += (int) $sitemapResult['status'];
  74. if ($result === 0) {
  75. //tid节点
  76. C::t('#baidusubmit#baidusubmit_setting')->update('installmaxtid', C::t('forum_thread')->fetch_max_tid());
  77. //删除旧索引文件
  78. if ($old_sppasswd) {
  79. baidu_submit_sitemap_index('del', 1, $siteurl, $old_sppasswd, $sign);
  80. baidu_submit_sitemap_index('del', 2, $siteurl, $old_sppasswd, $sign);
  81. baidu_submit_sitemap_index('del', 3, $siteurl, $old_sppasswd, $sign);
  82. baidu_submit_sitemap_index('del', 4, $siteurl, $old_sppasswd, $sign);
  83. baidu_submit_sitemap_index('del', 5, $siteurl, $old_sppasswd, $sign);
  84. }
  85. baidu_show_json(array(
  86. 'error' => 0,
  87. 'msg' => diconv(lang('plugin/baidusubmit', 'authsuccess'), CHARSET, 'utf-8'),
  88. ));
  89. } else {
  90. // delete sppassword
  91. C::t('#baidusubmit#baidusubmit_setting')->update('sppasswd', '');
  92. baidu_show_json(array(
  93. 'error' => 1,
  94. 'msg' => diconv(lang('plugin/baidusubmit', 'saveSitemapfailed'), CHARSET, 'utf-8'),
  95. ));
  96. }
  97. } else {
  98. baidu_show_json(array(
  99. 'error' => 0,
  100. 'msg' => diconv(lang('plugin/baidusubmit', 'authsuccess'), CHARSET, 'utf-8'),
  101. ));
  102. }
  103. } elseif ($output['status'] == -1) {
  104. baidu_show_json(array(
  105. 'error' => 1,
  106. 'msg' => diconv(lang('plugin/baidusubmit', 'authCheckSigfailed'), CHARSET, 'utf-8'),
  107. ));
  108. } elseif ($output['status'] == -2) {
  109. baidu_show_json(array(
  110. 'error' => 1,
  111. 'msg' => diconv(lang('plugin/baidusubmit', 'schemaNotExsit'), CHARSET, 'utf-8'),
  112. ));
  113. } elseif ($output['status'] == -3) {
  114. baidu_show_json(array(
  115. 'error' => 1,
  116. 'msg' => diconv(lang('plugin/baidusubmit', 'linkSitefailed'), CHARSET, 'utf-8'),
  117. ));
  118. } else {
  119. baidu_show_json(array(
  120. 'error' => 1,
  121. 'msg' => diconv(lang('plugin/baidusubmit', 'authfailed'), CHARSET, 'utf-8'),
  122. ));
  123. }