<?php require './miniban-base.php'; require './miniban-htaccess.php'; Miniban::init('./.htaccess', array('127.0.0.0/8', '1.2.3.4', '66.249.0.0/16')); //Miniban::init( './.htaccess', array( '127.0.0.0/8', '1.2.3.4', '66.249.0.0/16' ), // array( 'header' => 'X-FORWARDED-FOR' ) ); // Returns false var_export(!Miniban::ban('66.249.8.1')); echo "\n"; var_export(Miniban::ban('12.23.45.67')); echo "\n"; var_export(Miniban::unban('12.23.45.67')); echo "\n"; var_export(Miniban::ban('12.23.45.67')); echo "\n"; var_export(Miniban::ban()); echo "\n"; // Cron job to unban expired bans var_export(Miniban::unban()); echo "\n";
/** * Trigger fail2ban and respond HTTP/403. * * @return null */ private function trigger() { // Trigger miniban if (class_exists('Miniban') && $this->instant_trigger) { if (true !== Miniban::ban()) { error_log('Miniban operation failed.'); } } // Trigger fail2ban if ($this->instant_trigger) { $this->enhanced_error_log($this->prefix_instant . $this->result, 'crit'); } else { $this->enhanced_error_log($this->prefix . $this->result); } // Log POST requests after trigger - multi-line logging problem on mod_proxy_fcgi if (defined('O1_BAD_REQUEST_POST_LOGGING') && O1_BAD_REQUEST_POST_LOGGING) { if ('POST' === $_SERVER['REQUEST_METHOD']) { $this->enhanced_error_log('HTTP POST: ' . $this->esc_log($_POST), 'notice'); } } ob_get_level() && ob_end_clean(); if ($this->is_options_method) { $this->disable_options_method(); } elseif ($this->is_xmlrpc) { $this->fake_xmlrpc(); } elseif (!headers_sent()) { if ($this->is_wplogin && !empty($_POST['log'])) { $this->fake_wplogin(); } else { $this->ban(); } } }
private function trigger_instant($slug, $message, $level = 'crit') { // Trigger Miniban at first if (class_exists('Miniban')) { if (true !== Miniban::ban()) { $this->enhanced_error_log('Miniban operation failed.'); } } $this->trigger($slug, $message, $level, $this->prefix_instant); // Remove session remove_action('wp_logout', array($this, 'logout')); wp_logout(); // Respond ob_get_level() && ob_end_clean(); if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) { $this->fake_xmlrpc(); } elseif (!headers_sent()) { if ('wp-login.php' === $GLOBALS['pagenow'] && !empty($_POST['log'])) { $this->fake_wplogin(); } else { $this->ban(); } } exit; }