function cerber_activate() { global $wpdb, $wp_version; cerber_load_lang(); if (version_compare(CERBER_REQ_PHP, phpversion(), '>')) { cerber_stop_activating('<h3>' . sprintf(__('The WP Cerber requires PHP %s or higher. You are running', 'cerber'), CERBER_REQ_PHP) . ' ' . phpversion() . '</h3>'); } if (version_compare(CERBER_REQ_WP, $wp_version, '>')) { cerber_stop_activating('<h3>' . sprintf(__('The WP Cerber requires WordPress %s or higher. You are running', 'cerber'), CERBER_REQ_WP) . ' ' . $wp_version . '</h3>'); } // Tables $db_errors = array(); if (!$wpdb->get_row("SHOW TABLES LIKE '" . CERBER_LOG_TABLE . "'")) { if (!$wpdb->query("\n\n\tCREATE TABLE IF NOT EXISTS " . CERBER_LOG_TABLE . " (\n `ip` varchar(39) CHARACTER SET ascii NOT NULL COMMENT 'Remote IP',\n `user_login` varchar(60) NOT NULL COMMENT 'Login from POST request',\n `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',\n `stamp` bigint(20) unsigned NOT NULL COMMENT 'Unix timestamp',\n `activity` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'What''s happen?',\n KEY `ip` (`ip`)\n\t) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Cerber actions log';\n\n\n\t\t\t\t")) { $db_errors[] = $wpdb->last_error; } } if (!$wpdb->get_row("SHOW TABLES LIKE '" . CERBER_ACL_TABLE . "'")) { if (!$wpdb->query("\n\n\tCREATE TABLE IF NOT EXISTS " . CERBER_ACL_TABLE . " (\n `ip` varchar(39) CHARACTER SET ascii NOT NULL COMMENT 'IP',\n `tag` char(1) NOT NULL COMMENT 'Type: B or W',\n `comments` varchar(250) NOT NULL,\n UNIQUE KEY `ip` (`ip`)\n\t) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Cerber IP access lists';\n\n\t\t\t\t")) { $db_errors[] = $wpdb->last_error; } } if (!$wpdb->get_row("SHOW TABLES LIKE '" . CERBER_BLOCKS_TABLE . "'")) { if (!$wpdb->query("\n\n\tCREATE TABLE IF NOT EXISTS " . CERBER_BLOCKS_TABLE . " (\n `ip` varchar(39) CHARACTER SET ascii NOT NULL COMMENT 'Remote IP',\n `block_until` bigint(20) unsigned NOT NULL COMMENT 'Unix timestamp',\n `reason` varchar(250) NOT NULL COMMENT 'Why was blocked',\n UNIQUE KEY `ip` (`ip`)\n\t) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='List of blocked IP';\n\n\t\t\t\t")) { $db_errors[] = $wpdb->last_error; } } if ($db_errors) { cerber_stop_activating('<h3>' . __("Can't activate WP Cerber due to a database error.", 'cerber') . '</h3><p>' . implode('<p>', $db_errors)); } cerber_cookie1(); cerber_disable_citadel(); cerber_get_groove(); cerber_add_white(cerber_get_subnet(cerber_get_ip())); // Protection for non-experienced user update_site_option('cerber_admin_message', __('WP Cerber is now active and has started protecting your site.', 'cerber') . ' <a href="' . admin_url(cerber_get_opage()) . '">' . __('Check settings here', 'cerber') . '.</a>'); $opt = cerber_get_options(); $opt = array_filter($opt); if (!empty($opt)) { return; } update_site_option(CERBER_OPT, cerber_get_defaults()); }
function cerber_quick_w() { global $current_user, $wpdb; $set = admin_url(cerber_get_opage()); $act = admin_url(cerber_get_opage('activity')); $acl = admin_url(cerber_get_opage('acl')); $loc = admin_url(cerber_get_opage('lockouts')); //$midnight = strtotime('today'); $opt = cerber_get_options(); $failed = $wpdb->get_var('SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (7) AND stamp > ' . (time() - 24 * 3600)); $failed_prev = $wpdb->get_var('SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (7) AND stamp > ' . (time() - 48 * 3600) . ' AND stamp < ' . (time() - 24 * 3600)); $failed_ch = cerber_percent($failed_prev, $failed); $locked = $wpdb->get_var('SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (10,11) AND stamp > ' . (time() - 24 * 3600)); $locked_prev = $wpdb->get_var('SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (10,11) AND stamp > ' . (time() - 48 * 3600) . ' AND stamp < ' . (time() - 24 * 3600)); $locked_ch = cerber_percent($locked_prev, $locked); $lockouts = $wpdb->get_var('SELECT count(ip) FROM ' . CERBER_BLOCKS_TABLE); if ($last = $wpdb->get_var('SELECT MAX(stamp) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (10,11)')) { $last = cerber_date($last); } else { $last = __('Never', 'cerber'); } $w_count = $wpdb->get_var('SELECT count(ip) FROM ' . CERBER_ACL_TABLE . ' WHERE tag ="W"'); $b_count = $wpdb->get_var('SELECT count(ip) FROM ' . CERBER_ACL_TABLE . ' WHERE tag ="B"'); if (cerber_is_citadel()) { $citadel = '<span style="color:#FF0000;">' . __('active', 'cerber') . '</span> (<a href="' . wp_nonce_url(add_query_arg(array('citadel' => 'deactivate')), 'control', 'cerber_nonce') . '">' . __('deactivate', 'cerber') . '</a>)'; } else { if (cerber_get_options('ciperiod')) { $citadel = __('not active', 'cerber'); } else { $citadel = __('disabled', 'cerber'); } } echo '<div class="cerber-widget">'; echo '<table style="width:100%;"><tr><td style="width:50%; vertical-align:top;"><table><tr><td class="bigdig">' . $failed . '</td><td class="per">' . $failed_ch . '</td></tr></table><p>' . __('failed attempts', 'cerber') . ' ' . __('in 24 hours', 'cerber') . '<br/>(<a href="' . $act . '&filter_activity=7">' . __('view all', 'cerber') . '</a>)</p></td>'; echo '<td style="width:50%; vertical-align:top;"><table><tr><td class="bigdig">' . $locked . '</td><td class="per">' . $locked_ch . '</td></tr></table><p>' . __('lockouts', 'cerber') . ' ' . __('in 24 hours', 'cerber') . '<br/>(<a href="' . $act . '&filter_activity[]=10&filter_activity[]=11">' . __('view all', 'cerber') . '</a>)</p></td></tr></table>'; echo '<table id="quick_info"><tr><td>' . __('Lockouts at the moment', 'cerber') . '</td><td>' . $lockouts . '</td></tr>'; echo '<tr><td>' . __('Last lockout', 'cerber') . '</td><td>' . $last . '</td></tr>'; echo '<tr><td style="padding-top:8px;">' . __('White IP Access List', 'cerber') . '</td><td><b>' . $w_count . ' ' . _n('entry', 'entries', $w_count, 'cerber') . '</b></td></tr>'; echo '<tr><td>' . __('Black IP Access List', 'cerber') . '</td><td><b>' . $b_count . ' ' . _n('entry', 'entries', $b_count, 'cerber') . '</b></td></tr>'; echo '<tr><td style="padding-top:8px;">' . __('Citadel mode', 'cerber') . '</td><td><b>' . $citadel . '</b></td></tr>'; echo '</table></div>'; echo '<div class="wilinks"><a href="' . $set . '">' . __('Settings', 'cerber') . '</a> | <a href="' . $acl . '">' . __('Access Lists', 'cerber') . '</a> | <a href="' . $act . '">' . __('Activity', 'cerber') . '</a> | <a href="' . $loc . '">' . __('Lockouts', 'cerber') . '</a></div>'; if ($msg = cerber_update_check()) { echo '<div class="up-cerber">' . $msg . '</div>'; } }