cloud_doctor.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: cloud_doctor.php 36329 2016-12-26 08:47:27Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. @set_time_limit(0);
  12. $op = trim($_GET['op']);
  13. if(submitcheck('setidkeysubmit')) {
  14. if (!isfounder()) {
  15. cpmsg('action_noaccess', '', 'error');
  16. }
  17. $siteId = intval(trim($_GET['my_siteid']));
  18. if($siteId && strcmp($_GET['my_siteid'], $siteId) !== 0) {
  19. cpmsg('cloud_idkeysetting_siteid_failure', '', 'error');
  20. }
  21. $_GET['my_sitekey'] = trim($_GET['my_sitekey']);
  22. if(empty($_GET['my_sitekey'])) {
  23. $siteKey = '';
  24. } elseif(strpos($_GET['my_sitekey'], '***')) {
  25. $siteKey = false;
  26. } elseif(preg_match('/^[0-9a-f]{32}$/', $_GET['my_sitekey'])) {
  27. $siteKey = $_GET['my_sitekey'];
  28. } else {
  29. cpmsg('cloud_idkeysetting_sitekey_failure', '', 'error');
  30. }
  31. $settings = array();
  32. if($siteKey !== false) {
  33. $settings['my_sitekey'] = $siteKey;
  34. }
  35. if($_G['setting']['my_siteid'] != $siteId) {
  36. $settings['my_siteid'] = $siteId;
  37. }
  38. if($_G['setting']['cloud_status'] != $_GET['cloud_status']) {
  39. $settings['cloud_status'] = intval(trim($_GET['cloud_status']));;
  40. }
  41. if($settings) {
  42. C::t('common_setting')->update_batch($settings);
  43. updatecache('setting');
  44. }
  45. $locationUrl = ADMINSCRIPT.'?frames=yes&action=cloud&operation=doctor';
  46. cpmsg('cloud_idkeysetting_success', '', 'succeed', array(), '<p class="marginbot"><a href="###" onclick="top.location = \''.$locationUrl.'\'" class="lightlink">'.cplang('message_redirect').'</a></p><script type="text/JavaScript">setTimeout("top.location = \''.$locationUrl.'\'", 3000);</script>');
  47. } elseif($op == 'apitest') {
  48. $doctorService =Cloud::loadClass('Service_Doctor');
  49. $APIType = intval($_GET['api_type']);
  50. $APIIP = trim($_GET['api_ip']);
  51. $startTime = microtime(true);
  52. $testStatus = $doctorService->testAPI($APIType, $APIIP, $_G['setting']);
  53. $endTime = microtime(true);
  54. $otherTips = '';
  55. if($APIIP) {
  56. if ($_GET['api_description']) {
  57. $otherTips = diconv(trim($_GET['api_description']), 'UTF-8');
  58. }
  59. } else {
  60. if($APIType == 1) {
  61. $otherTips = '<a href="javascript:;" onClick="display(\'cloud_tbody_api_test\')">'.$lang['cloud_doctor_api_test_other'].'</a>';
  62. } elseif($APIType == 2) {
  63. $otherTips = '<a href="javascript:;" onClick="display(\'cloud_tbody_manyou_test\')">'.$lang['cloud_doctor_manyou_test_other'].'</a>';
  64. } elseif($APIType == 3) {
  65. $otherTips = '<a href="javascript:;" onClick="display(\'cloud_tbody_qzone_test\')">'.$lang['cloud_doctor_qzone_test_other'].'</a>';
  66. }
  67. }
  68. ajaxshowheader();
  69. if($testStatus) {
  70. printf($lang['cloud_doctor_api_test_success'], $lang['cloud_doctor_result_success'], $APIIP, $endTime - $startTime, $otherTips);
  71. } else {
  72. printf($lang['cloud_doctor_api_test_failure'], $lang['cloud_doctor_result_failure'], $APIIP, $otherTips);
  73. }
  74. ajaxshowfooter();
  75. } elseif($op == 'setidkey') {
  76. ajaxshowheader();
  77. echo '
  78. <h3 class="flb" id="fctrl_showblock" style="cursor: move;">
  79. <em id="return_showblock" fwin="showblock">'.$lang['cloud_doctor_setidkey'].'</em>
  80. <span><a title="'.$lang['close'].'" onclick="hideWindow(\'cloudApiIpWin\');return false;" class="flbc" href="javascript:;">'.$lang['close'].'</a></span>
  81. </h3>
  82. ';
  83. echo '<div style="margin: 0 10px; width: 700px;">';
  84. showtips('cloud_doctor_setidkey_tips');
  85. showformheader('cloud');
  86. showhiddenfields(array('operation' => $operation));
  87. showhiddenfields(array('op' => $op));
  88. showtableheader();
  89. showsetting('cloud_site_id', 'my_siteid', $_G['setting']['my_siteid'], 'text');
  90. showsetting('cloud_site_key', 'my_sitekey', preg_replace('/(\w{2})\w*(\w{2})/', '\\1****\\2', $_G['setting']['my_sitekey']), 'text');
  91. showsetting('cloud_site_status', array('cloud_status', array(array('0', $lang['cloud_doctor_status_0']), array('1', $lang['cloud_doctor_status_1']), array('2', $lang['cloud_doctor_status_2']))), $_G['setting']['cloud_status'], 'select');
  92. showsubmit('setidkeysubmit');
  93. showtablefooter();
  94. showformfooter();
  95. echo '</div>';
  96. ajaxshowfooter();
  97. } else {
  98. $appService = Cloud::loadClass('Service_App');
  99. $doctorService = Cloud::loadClass('Service_Doctor');
  100. require_once DISCUZ_ROOT.'./source/discuz_version.php';
  101. shownav('tools', 'menu_cloud_doctor');
  102. showsubmenu('menu_cloud_doctor');
  103. showtips('cloud_doctor_tips');
  104. echo '<script type="text/javascript">var disallowfloat = "";</script>';
  105. showtableheader();
  106. showformheader('cloud');
  107. showhiddenfields(array('operation' => 'siteinfo'));
  108. showtagheader('tbody', '', true);
  109. showtitle('cloud_doctor_title_status');
  110. showtablerow('', array('class="td24"'), array(
  111. '<strong>'.cplang('cloud_site_url').'</strong>',
  112. $_G['siteurl'].
  113. (isfounder() ? ' &nbsp; <input type="submit" class="btn" id="submit_syncsubmit" name="syncsubmit" value="'.$lang['cloud_sync'].'" />&nbsp; ' : '')
  114. ));
  115. showtablerow('', array('class="td24"'), array(
  116. '<strong>'.cplang('cloud_site_id').'</strong>',
  117. $_G['setting']['my_siteid']
  118. ));
  119. showtablerow('', array('class="td24"'), array(
  120. '<strong>'.cplang('cloud_site_key').'</strong>',
  121. preg_replace('/(\w{2})\w*(\w{2})/', '\\1****\\2', $_G['setting']['my_sitekey']).' '.$lang['cloud_site_key_safetips']
  122. ));
  123. showtablerow('', array('class="td24"'), array(
  124. '<strong>'.cplang('cloud_site_status').'</strong>',
  125. (isfounder() ? $doctorService->showCloudStatus($_G['setting']['cloud_status']).' <a href="javascript:;" onClick="showWindow(\'cloudApiIpWin\', \''.ADMINSCRIPT.'?action=cloud&operation=doctor&op=setidkey\'); return false;">'.$lang['cloud_doctor_modify_siteidkey'].'</a>' : $doctorService->showCloudStatus($_G['setting']['cloud_status'])).
  126. (isfounder() ? ' &nbsp; <input type="submit" class="btn" id="submit_resetsubmit" name="resetsubmit" value="'.$lang['cloud_resetkey'].'" />' : '')
  127. ));
  128. showtablerow('', array('class="td24"'), array(
  129. '<strong>'.cplang('setting_basic_bbclosed').'</strong>',
  130. $_G['setting']['bbclosed'] ? $lang['cloud_doctor_close_yes'] : $lang['no']
  131. ));
  132. showtablerow('', array('class="td24"'), array(
  133. '<strong>'.cplang('cloud_site_version').'</strong>',
  134. DISCUZ_VERSION.' '.DISCUZ_RELEASE
  135. ));
  136. if(isfounder()) {
  137. showtablerow('', array('class="td24"'), array(
  138. '<strong>'.cplang('cloud_change_info').'</strong>',
  139. '<a href="'.$doctorService->changeQQUrl().'" target="_blank">'.cplang('cloud_change_qq').'</a>',
  140. ));
  141. }
  142. showtagfooter('tbody');
  143. showformfooter();
  144. showtagheader('tbody', '', true);
  145. showtitle('cloud_doctor_title_result');
  146. showtablerow('', array('class="td24"'), array(
  147. '<strong>'.cplang('cloud_timecheck').'</strong>',
  148. '<span id="cloud_time_check">' . cplang('cloud_doctor_time_check', array('imgdir' => $_G['style']['imgdir'])) .'</span>',
  149. ));
  150. showtablerow('', array('class="td24"'), array(
  151. '<strong>'.cplang('cloud_doctor_gethostbyname_function').'</strong>',
  152. function_exists('gethostbyname') ? $lang['cloud_doctor_result_success'].' '.$lang['available'] : $lang['cloud_doctor_result_failure'].$lang['cloud_doctor_function_disable']
  153. ));
  154. showtablerow('', array('class="td24"'), array(
  155. '<strong>'.cplang('cloud_doctor_dns_api').'</strong>',
  156. $doctorService->checkDNSResult(1, $_G['setting'])
  157. ));
  158. showtablerow('', array('class="td24"'), array(
  159. '<strong>'.cplang('cloud_doctor_dns_api_test').'</strong>',
  160. $doctorService->showTestJS(1)
  161. ));
  162. showtagfooter('tbody');
  163. showtagheader('tbody', 'cloud_tbody_api_test', false);
  164. showtagfooter('tbody');
  165. showtagheader('tbody', 'cloud_tbody_manyou_test', false);
  166. showtagfooter('tbody');
  167. showtagheader('tbody', '', true);
  168. showtablerow('', array('class="td24"'), array(
  169. '<strong>'.cplang('cloud_doctor_dns_qzone').'</strong>',
  170. $doctorService->checkDNSResult(3, $_G['setting'])
  171. ));
  172. showtablerow('', array('class="td24"'), array(
  173. '<strong>'.cplang('cloud_doctor_dns_qzone_test').'</strong>',
  174. $doctorService->showTestJS(3)
  175. ));
  176. showtagfooter('tbody');
  177. showtagheader('tbody', 'cloud_tbody_qzone_test', false);
  178. showtagfooter('tbody');
  179. showtagheader('tbody', 'cloud_tbody_site_test', true);
  180. showtablerow('', array('class="td24"'), array(
  181. '<strong>'.cplang('cloud_doctor_site_test').'</strong>',
  182. cplang('cloud_doctor_site_test_result', array('imgdir' => $_G['style']['imgdir']))
  183. ));
  184. showtagfooter('tbody');
  185. showtagheader('tbody', '', true);
  186. showtitle('cloud_doctor_title_plugin');
  187. $doctorService->showPlugins();
  188. showtagfooter('tbody');
  189. if($appService->getCloudAppStatus('connect')) {
  190. if ($op == 'fixGuest') {
  191. $doctorService->fixGuestGroup(cplang('connect_guest_group_name'));
  192. }
  193. showtagheader('tbody', '', true);
  194. showtitle('cloud_doctor_title_connect');
  195. showtablerow('', array('class="td24"'), array(
  196. '<strong>'.cplang('cloud_doctor_connect_app_id').'</strong>',
  197. !empty($_G['setting']['connectappid']) ? $_G['setting']['connectappid'] : $lang['cloud_doctor_connect_reopen']
  198. ));
  199. showtablerow('', array('class="td24"'), array(
  200. '<strong>'.cplang('cloud_doctor_connect_app_key').'</strong>',
  201. !empty($_G['setting']['connectappkey']) ? preg_replace('/(\w{2})\w*(\w{2})/', '\\1****\\2', $_G['setting']['connectappkey']).' '.$lang['cloud_site_key_safetips'] : $lang['cloud_doctor_connect_reopen']
  202. ));
  203. $guestGroupStr = cplang('cloud_doctor_result_success') .' '. cplang('cloud_doctor_normal');
  204. if (!$doctorService->checkGuestGroup()) {
  205. $guestGroupStr = cplang('cloud_doctor_result_failure') . ' ' . cplang('cloud_doctor_connect_fix');
  206. }
  207. showtablerow('', array('class="td24"'), array(
  208. '<strong>'.cplang('cloud_doctor_connect_guestgroup').'</strong>',
  209. $guestGroupStr,
  210. ));
  211. showtagfooter('tbody');
  212. }
  213. showtablefooter();
  214. $doctorService->showCloudDoctorJS();
  215. }