Ejemplo n.º 1
0
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());
}
Ejemplo n.º 2
0
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>';
    }
}