PageRenderTime 52ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 1ms

/includes/ctracker/admin/acp_module_maintenance.php

http://github.com/MightyGorgon/icy_phoenix
PHP | 409 lines | 313 code | 45 blank | 51 comment | 45 complexity | b31882ea14c6eb0cdbf2a23dc0d70c86 MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. /**
  3. *
  4. * @package Icy Phoenix
  5. * @version $Id$
  6. * @copyright (c) 2008 Icy Phoenix
  7. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  8. *
  9. */
  10. /**
  11. *
  12. * @Extra credits for this file
  13. * Christian Knerr (cback) - (www.cback.de)
  14. *
  15. */
  16. /**
  17. * Everything wich CrackerTracker can handle on the Database
  18. *
  19. * @author Christian Knerr (cback)
  20. * @package ctracker
  21. * @version 5.0.0
  22. * @since 26.07.2006 - 13:29:09
  23. * @copyright (c) 2006 www.cback.de
  24. *
  25. */
  26. // Constant check
  27. if (!defined('IN_ICYPHOENIX') || !defined('CTRACKER_ACP'))
  28. {
  29. die('Hacking attempt!');
  30. }
  31. if (!function_exists('obtain_latest_version_info'))
  32. {
  33. include_once(IP_ROOT_PATH . 'includes/functions_admin.' . PHP_EXT);
  34. }
  35. $latest_ip_version = obtain_latest_version_info();
  36. $version_up_to_date = false;
  37. if (!empty($latest_ip_version))
  38. {
  39. $latest_version_info = explode("\n", $latest_ip_version);
  40. $latest_version = str_replace('rc', 'RC', strtolower(trim($latest_version_info[0])));
  41. $current_version = str_replace('rc', 'RC', strtolower($config['ip_version']));
  42. $version_up_to_date = version_compare($current_version, $latest_version, '<') ? false : true;
  43. }
  44. /*
  45. * Template file association
  46. */
  47. $template->set_filenames(array('ct_body' => ADM_TPL . 'acp_maintenance.tpl'));
  48. // First we look wich mode the user has selected
  49. $mode = request_var('mode', '');
  50. // Reset used vars
  51. $uplink_values = array();
  52. $chmod_values = array();
  53. $chmod_path = array();
  54. $testvalue = array();
  55. $logmanager = new log_manager();
  56. $operation_err = false;
  57. $mode_selected = false;
  58. $error_message = '';
  59. // Lets test if chmod was set correctly on the logfiles
  60. for($i = 1; $i <= 6; $i++)
  61. {
  62. $chmod_path[$i] = $logmanager->create_ct_path($i);
  63. if(is_writeable($chmod_path[$i]) && is_readable($chmod_path[$i]))
  64. {
  65. $chmod_values[$i] = true;
  66. }
  67. else
  68. {
  69. $chmod_values[$i] = false;
  70. }
  71. $chmod_path[$i] = str_replace('./../', '', $chmod_path[$i]);
  72. }
  73. // We don't need the logmanager any longer
  74. unset($logmanager);
  75. // Lets see what the new versions are (Uplink) [original code (C) phpBB Group]
  76. if ($fsock = @fsockopen('www.community.cback.de', 80, $errno, $errstr, 10))
  77. {
  78. @fwrite($fsock, "GET /uplink/ctracker.txt HTTP/1.1\r\n");
  79. @fwrite($fsock, "HOST: www.community.cback.de\r\n");
  80. @fwrite($fsock, "Connection: close\r\n\r\n");
  81. $get_info = false;
  82. while (!@feof($fsock))
  83. {
  84. if ( $get_info )
  85. {
  86. $ctinf .= @fread($fsock, 1024);
  87. }
  88. else
  89. {
  90. if (@fgets($fsock, 1024) == "\r\n")
  91. {
  92. $get_info = true;
  93. } // if
  94. } // else
  95. } // while
  96. @fclose($fsock);
  97. $uplink_values = explode('|', $ctinf);
  98. }
  99. else
  100. {
  101. for ($i = 0; $i <= 4; $i++)
  102. {
  103. $uplink_values[$i] = $lang['ctracker_ma_unknown'];
  104. }
  105. }
  106. // Engine tests
  107. (defined('protection_unit_one')) ? $testvalue[1] = $lang['ctracker_ma_active'] : $testvalue[1] = $lang['ctracker_ma_inactive'];
  108. (defined('protection_unit_two')) ? $testvalue[2] = $lang['ctracker_ma_active'] : $testvalue[2] = $lang['ctracker_ma_inactive'];
  109. (defined('protection_unit_three')) ? $testvalue[3] = $lang['ctracker_ma_active'] : $testvalue[3] = $lang['ctracker_ma_inactive'];
  110. (sizeof($ct_rules) >= 260) ? $testvalue[4] = $lang['ctracker_ma_active'] : $testvalue[4] = $lang['ctracker_ma_inactive'];
  111. // PHP Version test
  112. if ( @phpversion() >= '5.0.0' )
  113. {
  114. ($uplink_values[2] <= @phpversion())? $testvalue[5] = $lang['ctracker_ma_secure'] : $testvalue[5] = $lang['ctracker_ma_warning'];
  115. }
  116. else
  117. {
  118. ($uplink_values[1] <= @phpversion())? $testvalue[5] = $lang['ctracker_ma_secure'] : $testvalue[5] = $lang['ctracker_ma_warning'];
  119. }
  120. // Safemode and Globals test
  121. $testvalue[6] = strtolower(@ini_get('safe_mode'));
  122. $testvalue[7] = strtolower(@ini_get('register_globals'));
  123. if ( $testvalue[6] == 'on' || $testvalue[6] >= '1' )
  124. {
  125. $testvalue[6] = $lang['ctracker_ma_on'];
  126. $testvalue[8] = $lang['ctracker_ma_secure'];
  127. }
  128. elseif ( !isset($testvalue[6]) )
  129. {
  130. $testvalue[6] = $lang['ctracker_ma_unknown'];
  131. $testvalue[8] = $lang['ctracker_ma_unknown'];
  132. }
  133. else
  134. {
  135. $testvalue[6] = $lang['ctracker_ma_off'];
  136. $testvalue[8] = $lang['ctracker_ma_warning'];
  137. }
  138. if ( $testvalue[7] == 'on' || $testvalue[7] >= '1' )
  139. {
  140. $testvalue[7] = $lang['ctracker_ma_on'];
  141. $testvalue[9] = $lang['ctracker_ma_warning'];
  142. }
  143. elseif ( !isset($testvalue[7]) )
  144. {
  145. $testvalue[7] = $lang['ctracker_ma_unknown'];
  146. $testvalue[9] = $lang['ctracker_ma_unknown'];
  147. }
  148. else
  149. {
  150. $testvalue[7] = $lang['ctracker_ma_off'];
  151. $testvalue[9] = $lang['ctracker_ma_secure'];
  152. }
  153. // Maintenance actions
  154. if ( $mode == '1' )
  155. {
  156. // Delete all entrys in the CrackerTracker IP Blocker
  157. $mode_selected = true;
  158. $sql = 'TRUNCATE ' . CTRACKER_IPBLOCKER;
  159. $db->sql_return_on_error(true);
  160. $result = $db->sql_query($sql);
  161. $db->sql_return_on_error(false);
  162. if (!$result)
  163. {
  164. $operation_err = true;
  165. $error_message = __LINE__ . '<br />' . __FILE__ . '<br /><br />' . $sql;
  166. }
  167. }
  168. elseif ( $mode == '2' )
  169. {
  170. // Delete all entrys in the CrackerTracker IP Blocker and insert the default values
  171. $mode_selected = true;
  172. $sql = 'TRUNCATE ' . CTRACKER_IPBLOCKER;
  173. $db->sql_return_on_error(true);
  174. $result = $db->sql_query($sql);
  175. $db->sql_return_on_error(false);
  176. if (!$result)
  177. {
  178. $operation_err = true;
  179. $error_message = __LINE__ . '<br />' . __FILE__ . '<br /><br />' . $sql;
  180. }
  181. $sql = array();
  182. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (1, '*WebStripper*');";
  183. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (2, '*NetMechanic*');";
  184. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (3, '*CherryPicker*');";
  185. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (4, '*EmailCollector*');";
  186. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (5, '*EmailSiphon*');";
  187. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (6, '*WebBandit*');";
  188. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (7, '*EmailWolf*');";
  189. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (8, '*ExtractorPro*');";
  190. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (9, '*SiteSnagger*');";
  191. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (10, '*CheeseBot*');";
  192. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (11, '*ia_archiver*');";
  193. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (12, '*Website Quester*');";
  194. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (13, '*WebZip*');";
  195. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (14, '*moget*');";
  196. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (15, '*WebSauger*');";
  197. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (16, '*WebCopier*');";
  198. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (17, '*WWW-Collector*');";
  199. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (18, '*InfoNaviRobot*');";
  200. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (19, '*Harvest*');";
  201. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (20, '*Bullseye*');";
  202. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (21, '*LinkWalker*');";
  203. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (22, '*LinkextractorPro*');";
  204. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (23, '*WebProxy*');";
  205. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (24, '*BlowFish*');";
  206. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (25, '*WebEnhancer*');";
  207. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (26, '*TightTwatBot*');";
  208. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (27, '*LinkScan*');";
  209. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (28, '*WebDownloader*');";
  210. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (29, 'lwp');";
  211. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (30, '*BruteForce*');";
  212. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (31, 'lwp-*');";
  213. $sql[] = "INSERT INTO " . CTRACKER_IPBLOCKER . " (`id`, `ct_blocker_value`) VALUES (32, '*anonym*');";
  214. for ($i = 0; $i < sizeof($sql); $i++)
  215. {
  216. $db->sql_return_on_error(true);
  217. $result = $db->sql_query($sql[$i]);
  218. $db->sql_return_on_error(false);
  219. if (!$operation_err && !$result)
  220. {
  221. $operation_err = true;
  222. $error_message = __LINE__ . '<br />' . __FILE__ . '<br /><br />' . $sql[$i];
  223. }
  224. }
  225. }
  226. elseif ($mode == '3')
  227. {
  228. // Delete all entrys from Login-History
  229. $mode_selected = true;
  230. $sql = 'TRUNCATE ' . CTRACKER_LOGINHISTORY;
  231. $db->sql_return_on_error(true);
  232. $result = $db->sql_query($sql);
  233. $db->sql_return_on_error(false);
  234. if (!$result)
  235. {
  236. $operation_err = true;
  237. $error_message = __LINE__ . '<br />' . __FILE__ . '<br /><br />' . $sql;
  238. }
  239. }
  240. elseif ($mode == '4')
  241. {
  242. // Delete all entrys from Hashsum Checker
  243. $mode_selected = true;
  244. $sql = 'TRUNCATE ' . CTRACKER_FILECHK;
  245. $db->sql_return_on_error(true);
  246. $result = $db->sql_query($sql);
  247. $db->sql_return_on_error(false);
  248. if (!$result)
  249. {
  250. $operation_err = true;
  251. $error_message = __LINE__ . '<br />' . __FILE__ . '<br /><br />' . $sql;
  252. }
  253. }
  254. elseif ($mode == '5')
  255. {
  256. // Delete all entrys from CrackerTracker Filescanner
  257. $mode_selected = true;
  258. $sql = 'TRUNCATE ' . CTRACKER_FILESCANNER;
  259. $db->sql_return_on_error(true);
  260. $result = $db->sql_query($sql);
  261. $db->sql_return_on_error(false);
  262. if (!$result)
  263. {
  264. $operation_err = true;
  265. $error_message = __LINE__ . '<br />' . __FILE__ . '<br /><br />' . $sql;
  266. }
  267. }
  268. /*
  269. * Info or Errorbox
  270. */
  271. if ($mode_selected && !$operation_err)
  272. {
  273. // Successful
  274. $template->assign_block_vars('infobox', array());
  275. }
  276. elseif ($mode_selected && $operation_err)
  277. {
  278. // Error on query (replaces message_die() error on this place)
  279. $template->assign_block_vars('errorbox', array(
  280. 'ERR_MSG' => $error_message
  281. )
  282. );
  283. }
  284. /*
  285. * Send many, many vars to the template
  286. */
  287. $template->assign_vars(array(
  288. 'L_HEADLINE' => $lang['ctracker_ma_head'],
  289. 'L_SUBHEADLINE' => $lang['ctracker_ma_subhead'],
  290. 'L_SYSTEMTEST' => $lang['ctracker_ma_systest'],
  291. 'L_MAINTENANCE' => $lang['ctracker_ma_maint'],
  292. 'L_SECTEST' => $lang['ctracker_ma_sectest'],
  293. 'L_NAME_1' => $lang['ctracker_ma_name_1'],
  294. 'L_NAME_2' => $lang['ctracker_ma_name_2'],
  295. 'L_NAME_3' => $lang['ctracker_ma_name_3'],
  296. 'L_NAME_4' => sprintf($lang['ctracker_ma_name_4'], sizeof($ct_rules) + sizeof($ct_spammer_def) + sizeof($ct_mailscn_def) + sizeof($ct_userspm_def) + $ctracker_config->blocklist_count),
  297. 'L_VAL_1' => $testvalue[1],
  298. 'L_VAL_2' => $testvalue[2],
  299. 'L_VAL_3' => $testvalue[3],
  300. 'L_VAL_4' => $testvalue[4],
  301. 'L_SYSHEAD_1' => $lang['ctracker_ma_syshead_1'],
  302. 'L_SYSHEAD_2' => $lang['ctracker_ma_syshead_2'],
  303. 'L_SEC_HEAD_1' => $lang['ctracker_ma_seccheck_1'],
  304. 'L_SEC_HEAD_2' => $lang['ctracker_ma_seccheck_2'],
  305. 'L_SEC_HEAD_3' => $lang['ctracker_ma_seccheck_3'],
  306. 'L_SEC_HEAD_4' => $lang['ctracker_ma_seccheck_4'],
  307. 'L_NAME_5' => $lang['ctracker_ma_chmod'] . $chmod_path[1],
  308. 'L_VAL_5' => ($chmod_values[1] == 1)? $lang['ctracker_ma_ca'] : $lang['ctracker_ma_ci'],
  309. 'L_NAME_6' => $lang['ctracker_ma_chmod'] . $chmod_path[2],
  310. 'L_VAL_6' => ($chmod_values[2] == 1)? $lang['ctracker_ma_ca'] : $lang['ctracker_ma_ci'],
  311. 'L_NAME_7' => $lang['ctracker_ma_chmod'] . $chmod_path[3],
  312. 'L_VAL_7' => ($chmod_values[3] == 1)? $lang['ctracker_ma_ca'] : $lang['ctracker_ma_ci'],
  313. 'L_NAME_8' => $lang['ctracker_ma_chmod'] . $chmod_path[4],
  314. 'L_VAL_8' => ($chmod_values[4] == 1)? $lang['ctracker_ma_ca'] : $lang['ctracker_ma_ci'],
  315. 'L_NAME_9' => $lang['ctracker_ma_chmod'] . $chmod_path[5],
  316. 'L_VAL_9' => ($chmod_values[5] == 1)? $lang['ctracker_ma_ca'] : $lang['ctracker_ma_ci'],
  317. 'L_NAME_10' => $lang['ctracker_ma_chmod'] . $chmod_path[6],
  318. 'L_VAL_10' => ($chmod_values[6] == 1)? $lang['ctracker_ma_ca'] : $lang['ctracker_ma_ci'],
  319. 'L_SEC_INFO_1' => $lang['ctracker_ma_scheck_1'],
  320. 'L_SEC_INFO_V1' => @phpversion(),
  321. 'L_SEC_INFO_OV1' => (@phpversion() >= '5.0.0')? $uplink_values[2] : $uplink_values[1],
  322. 'L_SEC_INFO_D1' => $testvalue[5],
  323. 'L_SEC_INFO_2' => $lang['ctracker_ma_scheck_2'],
  324. 'L_SEC_INFO_V2' => $testvalue[6],
  325. 'L_SEC_INFO_OV2' => $lang['ctracker_ma_on'],
  326. 'L_SEC_INFO_D2' => $testvalue[8],
  327. 'L_SEC_INFO_3' => $lang['ctracker_ma_scheck_3'],
  328. 'L_SEC_INFO_V3' => $testvalue[7],
  329. 'L_SEC_INFO_OV3' => $lang['ctracker_ma_off'],
  330. 'L_SEC_INFO_D3' => $testvalue[9],
  331. 'L_SEC_INFO_4' => $lang['ctracker_ma_scheck_4'],
  332. 'L_SEC_INFO_V4' => $config['ip_version'],
  333. 'L_SEC_INFO_OV4' => !empty($latest_version) ? $latest_version : '0.0.0',
  334. 'L_SEC_INFO_D4' => ($version_up_to_date) ? $lang['ctracker_ma_secure'] : $lang['ctracker_ma_warning'],
  335. 'L_SEC_INFO_4a' => $lang['ctracker_ma_scheck_4a'],
  336. 'L_SEC_INFO_V4a' => ($config['enable_confirm'] == 1)? $lang['ctracker_ma_on'] : $lang['ctracker_ma_off'],
  337. 'L_SEC_INFO_OV4a'=> $lang['ctracker_ma_on'],
  338. 'L_SEC_INFO_D4a' => ($config['enable_confirm'] == 1)? $lang['ctracker_ma_secure'] : $lang['ctracker_ma_warning'],
  339. 'L_SEC_INFO_4b' => $lang['ctracker_ma_scheck_4b'],
  340. 'L_SEC_INFO_V4b' => ($config['require_activation'] > 0)? $lang['ctracker_ma_on'] : $lang['ctracker_ma_off'],
  341. 'L_SEC_INFO_OV4b'=> $lang['ctracker_ma_on'],
  342. 'L_SEC_INFO_D4b' => ($config['require_activation'] > 0)? $lang['ctracker_ma_secure'] : $lang['ctracker_ma_warning'],
  343. 'L_SEC_INFO_5' => $lang['ctracker_ma_scheck_5'],
  344. 'L_SEC_INFO_V5' => CTRACKER_VERSION,
  345. 'L_SEC_INFO_OV5' => $uplink_values[0],
  346. 'L_SEC_INFO_D5' => (CTRACKER_VERSION >= $uplink_values[0])? $lang['ctracker_ma_secure'] : $lang['ctracker_ma_warning'],
  347. 'S_BUILD_LINK_1' => append_sid('admin_cracker_tracker.' . PHP_EXT . '?modu=7&mode=1'),
  348. 'S_BUILD_LINK_2' => append_sid('admin_cracker_tracker.' . PHP_EXT . '?modu=7&mode=2'),
  349. 'S_BUILD_LINK_3' => append_sid('admin_cracker_tracker.' . PHP_EXT . '?modu=7&mode=3'),
  350. 'S_BUILD_LINK_4' => append_sid('admin_cracker_tracker.' . PHP_EXT . '?modu=7&mode=4'),
  351. 'S_BUILD_LINK_5' => append_sid('admin_cracker_tracker.' . PHP_EXT . '?modu=7&mode=5'),
  352. 'L_DESC_1' => $lang['ctracker_ma_desc1'],
  353. 'L_DESC_2' => $lang['ctracker_ma_desc2'],
  354. 'L_DESC_3' => $lang['ctracker_ma_desc3'],
  355. 'L_DESC_4' => $lang['ctracker_ma_desc4'],
  356. 'L_DESC_5' => $lang['ctracker_ma_desc5'],
  357. 'L_LINK_DESC' => $lang['ctracker_ma_desc_link'],
  358. 'L_OK_MESSAGE' => $lang['ctracker_ma_succ_main'],
  359. 'L_ERR_MESSAGE' => $lang['ctracker_ma_err_main'],
  360. )
  361. );
  362. // Generate the page
  363. $template->pparse('ct_body');
  364. ?>