initial import from https://downloads.wordpress.org/plugin/wp-fail2ban.4.2.5.zip
This commit is contained in:
144
lib/constants.php
Normal file
144
lib/constants.php
Normal file
@@ -0,0 +1,144 @@
|
||||
<?php
|
||||
/**
|
||||
* Constants
|
||||
*
|
||||
* @package wp-fail2ban
|
||||
* @since 4.2.0
|
||||
*/
|
||||
namespace org\lecklider\charles\wordpress\wp_fail2ban;
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// phpcs:disable Generic.Functions.FunctionCallArgumentSpacing
|
||||
/**
|
||||
* Defaults
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
define('DEFAULT_WP_FAIL2BAN_OPENLOG_OPTIONS', LOG_PID|LOG_NDELAY);
|
||||
define('DEFAULT_WP_FAIL2BAN_AUTH_LOG', LOG_AUTH);
|
||||
define('DEFAULT_WP_FAIL2BAN_COMMENT_LOG', LOG_USER);
|
||||
define('DEFAULT_WP_FAIL2BAN_PINGBACK_LOG', LOG_USER);
|
||||
define('DEFAULT_WP_FAIL2BAN_PASSWORD_REQUEST_LOG', LOG_USER);
|
||||
define('DEFAULT_WP_FAIL2BAN_SPAM_LOG', LOG_AUTH);
|
||||
/**
|
||||
* @since 4.0.5
|
||||
*/
|
||||
define('DEFAULT_WP_FAIL2BAN_COMMENT_EXTRA_LOG', LOG_AUTH);
|
||||
define('DEFAULT_WP_FAIL2BAN_PINGBACK_ERROR_LOG', LOG_AUTH);
|
||||
/**
|
||||
* @since 4.2.0
|
||||
*/
|
||||
define('DEFAULT_WP_FAIL2BAN_PLUGIN_AUTH_LOG', LOG_AUTH);
|
||||
define('DEFAULT_WP_FAIL2BAN_PLUGIN_COMMENT_LOG', LOG_USER);
|
||||
define('DEFAULT_WP_FAIL2BAN_PLUGIN_OTHER_LOG', LOG_USER);
|
||||
define('DEFAULT_WP_FAIL2BAN_PLUGIN_PASSWORD_LOG', LOG_USER);
|
||||
define('DEFAULT_WP_FAIL2BAN_PLUGIN_REST_LOG', LOG_USER);
|
||||
define('DEFAULT_WP_FAIL2BAN_PLUGIN_SPAM_LOG', LOG_AUTH);
|
||||
define('DEFAULT_WP_FAIL2BAN_PLUGIN_XMLRPC_LOG', LOG_USER);
|
||||
|
||||
/*
|
||||
31 | Test
|
||||
30 | Plugin
|
||||
29 |
|
||||
28 |
|
||||
27 |
|
||||
26 |
|
||||
25 |
|
||||
24 |
|
||||
---
|
||||
23 | Event Class
|
||||
22 | ..
|
||||
21 | ..
|
||||
20 | ..
|
||||
19 | ..
|
||||
18 | ..
|
||||
17 | ..
|
||||
16 | ..
|
||||
---
|
||||
15 | ID
|
||||
14 | ..
|
||||
13 | ..
|
||||
12 | ..
|
||||
11 | ..
|
||||
10 | ..
|
||||
09 | ..
|
||||
08 | ..
|
||||
---
|
||||
07 | ..
|
||||
06 | ..
|
||||
05 | ..
|
||||
04 | ..
|
||||
03 | ..
|
||||
02 | ..
|
||||
01 | ..
|
||||
00 | ..
|
||||
*/
|
||||
|
||||
|
||||
|
||||
define('WPF2B_EVENT_CLASS_AUTH', 0x00010000);
|
||||
define('WPF2B_EVENT_CLASS_COMMENT', 0x00020000);
|
||||
define('WPF2B_EVENT_CLASS_XMLRPC', 0x00040000);
|
||||
define('WPF2B_EVENT_CLASS_PASSWORD', 0x00080000);
|
||||
define('WPF2B_EVENT_CLASS_REST', 0x00100000); /** @since 4.1.0 */
|
||||
define('WPF2B_EVENT_CLASS_SPAM', 0x00200000); /** @since 4.2.0 */
|
||||
define('WPF2B_EVENT_TYPE_PLUGIN', 0x40000000); /** @since 4.2.0 */
|
||||
define('WPF2B_EVENT_TYPE_TEST', 0x80000000); /** @since 4.2.0 */
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
define('WPF2B_EVENT_ACTIVATED', 0xffffffff);
|
||||
|
||||
|
||||
/**
|
||||
* Auth
|
||||
*/
|
||||
define('WPF2B_EVENT_AUTH_OK', WPF2B_EVENT_CLASS_AUTH | 0x0001);
|
||||
define('WPF2B_EVENT_AUTH_FAIL', WPF2B_EVENT_CLASS_AUTH | 0x0002);
|
||||
define('WPF2B_EVENT_AUTH_BLOCK_USER', WPF2B_EVENT_CLASS_AUTH | 0x0004);
|
||||
define('WPF2B_EVENT_AUTH_BLOCK_USER_ENUM', WPF2B_EVENT_CLASS_AUTH | 0x0008);
|
||||
|
||||
/**
|
||||
* Comment
|
||||
*/
|
||||
define('WPF2B_EVENT_COMMENT', WPF2B_EVENT_CLASS_COMMENT | 0x0001); // 0x00020001
|
||||
define('WPF2B_EVENT_COMMENT_SPAM', WPF2B_EVENT_CLASS_COMMENT | WPF2B_EVENT_CLASS_SPAM | 0x0001); // 0x00220001
|
||||
// comment extra
|
||||
define('WPF2B_EVENT_COMMENT_NOT_FOUND', WPF2B_EVENT_CLASS_COMMENT | 0x0002); // 0x00020002
|
||||
define('WPF2B_EVENT_COMMENT_CLOSED', WPF2B_EVENT_CLASS_COMMENT | 0x0004); // 0x00020004
|
||||
define('WPF2B_EVENT_COMMENT_TRASH', WPF2B_EVENT_CLASS_COMMENT | 0x0008); // 0x00020008
|
||||
define('WPF2B_EVENT_COMMENT_DRAFT', WPF2B_EVENT_CLASS_COMMENT | 0x0010); // 0x00020010
|
||||
define('WPF2B_EVENT_COMMENT_PASSWORD', WPF2B_EVENT_CLASS_COMMENT | WPF2B_EVENT_CLASS_PASSWORD | 0x0020); // 0x00020020
|
||||
|
||||
/**
|
||||
* XML-RPC
|
||||
*/
|
||||
define('WPF2B_EVENT_XMLRPC_PINGBACK', WPF2B_EVENT_CLASS_XMLRPC | 0x0001);
|
||||
define('WPF2B_EVENT_XMLRPC_PINGBACK_ERROR', WPF2B_EVENT_CLASS_XMLRPC | 0x0002);
|
||||
define('WPF2B_EVENT_XMLRPC_MULTI_AUTH_FAIL', WPF2B_EVENT_CLASS_XMLRPC | WPF2B_EVENT_CLASS_AUTH | 0x0004);
|
||||
define('WPF2B_EVENT_XMLRPC_AUTH_OK', WPF2B_EVENT_CLASS_XMLRPC | WPF2B_EVENT_CLASS_AUTH | 0x0008);
|
||||
define('WPF2B_EVENT_XMLRPC_AUTH_FAIL', WPF2B_EVENT_CLASS_XMLRPC | WPF2B_EVENT_CLASS_AUTH | 0x0010);
|
||||
|
||||
/**
|
||||
* Password
|
||||
*/
|
||||
define('WPF2B_ACTION_PASSWORD_REQUEST', WPF2B_EVENT_CLASS_PASSWORD | 0x0001);
|
||||
|
||||
/**
|
||||
* REST
|
||||
* @since 4.1.0
|
||||
*/
|
||||
define('WPF2B_EVENT_REST_AUTH_OK', WPF2B_EVENT_CLASS_REST | WPF2B_EVENT_CLASS_AUTH | 0x0001);
|
||||
define('WPF2B_EVENT_REST_AUTH_FAIL', WPF2B_EVENT_CLASS_REST | WPF2B_EVENT_CLASS_AUTH | 0x0002);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
define('WPF2B_EVENT_DEACTIVATED', 0x00000000);
|
||||
// phpcs:enable
|
||||
|
||||
79
lib/defaults.php
Normal file
79
lib/defaults.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/**
|
||||
* Default Constants
|
||||
*
|
||||
* @package wp-fail2ban
|
||||
* @since 4.2.0
|
||||
*/
|
||||
namespace org\lecklider\charles\wordpress\wp_fail2ban;
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow custom openlog options.
|
||||
* e.g. you may not want the PID if logging remotely.
|
||||
*
|
||||
* @since 3.6.0 Add LOG_NDELAY
|
||||
* @since 3.5.0
|
||||
*/
|
||||
if (!defined('WP_FAIL2BAN_OPENLOG_OPTIONS')) {
|
||||
define('WP_FAIL2BAN_OPENLOG_OPTIONS', DEFAULT_WP_FAIL2BAN_OPENLOG_OPTIONS);
|
||||
}
|
||||
/**
|
||||
* Make sure all custom logs are defined.
|
||||
* @since 3.5.0
|
||||
*/
|
||||
if (!defined('WP_FAIL2BAN_AUTH_LOG')) {
|
||||
define('WP_FAIL2BAN_AUTH_LOG', DEFAULT_WP_FAIL2BAN_AUTH_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_COMMENT_LOG')) {
|
||||
define('WP_FAIL2BAN_COMMENT_LOG', DEFAULT_WP_FAIL2BAN_COMMENT_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_PINGBACK_LOG')) {
|
||||
define('WP_FAIL2BAN_PINGBACK_LOG', DEFAULT_WP_FAIL2BAN_PINGBACK_LOG);
|
||||
}
|
||||
/**
|
||||
* @since 4.0.0
|
||||
*/
|
||||
if (!defined('WP_FAIL2BAN_PASSWORD_REQUEST_LOG')) {
|
||||
define('WP_FAIL2BAN_PASSWORD_REQUEST_LOG', DEFAULT_WP_FAIL2BAN_PASSWORD_REQUEST_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_SPAM_LOG')) {
|
||||
define('WP_FAIL2BAN_SPAM_LOG', DEFAULT_WP_FAIL2BAN_SPAM_LOG);
|
||||
}
|
||||
/**
|
||||
* @since 4.0.5
|
||||
*/
|
||||
if (!defined('WP_FAIL2BAN_COMMENT_EXTRA_LOG')) {
|
||||
define('WP_FAIL2BAN_COMMENT_EXTRA_LOG', DEFAULT_WP_FAIL2BAN_COMMENT_EXTRA_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_PINGBACK_ERROR_LOG')) {
|
||||
define('WP_FAIL2BAN_PINGBACK_ERROR_LOG', DEFAULT_WP_FAIL2BAN_PINGBACK_ERROR_LOG);
|
||||
}
|
||||
/**
|
||||
* @since 4.2.0
|
||||
*/
|
||||
if (!defined('WP_FAIL2BAN_PLUGIN_AUTH_LOG')) {
|
||||
define('WP_FAIL2BAN_PLUGIN_AUTH_LOG', DEFAULT_WP_FAIL2BAN_PLUGIN_AUTH_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_PLUGIN_COMMENT_LOG')) {
|
||||
define('WP_FAIL2BAN_PLUGIN_COMMENT_LOG', DEFAULT_WP_FAIL2BAN_PLUGIN_COMMENT_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_PLUGIN_OTHER_LOG')) {
|
||||
define('WP_FAIL2BAN_PLUGIN_OTHER_LOG', DEFAULT_WP_FAIL2BAN_PLUGIN_OTHER_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_PLUGIN_PASSWORD_LOG')) {
|
||||
define('WP_FAIL2BAN_PLUGIN_PASSWORD_LOG', DEFAULT_WP_FAIL2BAN_PLUGIN_PASSWORD_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_PLUGIN_REST_LOG')) {
|
||||
define('WP_FAIL2BAN_PLUGIN_REST_LOG', DEFAULT_WP_FAIL2BAN_PLUGIN_REST_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_PLUGIN_SPAM_LOG')) {
|
||||
define('WP_FAIL2BAN_PLUGIN_SPAM_LOG', DEFAULT_WP_FAIL2BAN_PLUGIN_SPAM_LOG);
|
||||
}
|
||||
if (!defined('WP_FAIL2BAN_PLUGIN_XMLRPC_LOG')) {
|
||||
define('WP_FAIL2BAN_PLUGIN_XMLRPC_LOG', DEFAULT_WP_FAIL2BAN_PLUGIN_XMLRPC_LOG);
|
||||
}
|
||||
|
||||
327
lib/loader.php
Normal file
327
lib/loader.php
Normal file
@@ -0,0 +1,327 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Loader
|
||||
*
|
||||
* @package wp-fail2ban
|
||||
* @since 4.2.0
|
||||
*/
|
||||
namespace {
|
||||
if ( !defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
if ( defined( 'PHPUNIT_COMPOSER_INSTALL' ) ) {
|
||||
return;
|
||||
}
|
||||
if ( !function_exists( 'boolval' ) ) {
|
||||
/**
|
||||
* PHP 5.3 helper
|
||||
*
|
||||
* @since 4.2.5
|
||||
*
|
||||
* @param mixed $val
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function boolval( $val )
|
||||
{
|
||||
return (bool) $val;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
namespace org\lecklider\charles\wordpress\wp_fail2ban {
|
||||
/**
|
||||
* Helper
|
||||
*
|
||||
* @since 4.0.0
|
||||
*
|
||||
* @param string $define
|
||||
* @param callable $cast
|
||||
* @param bool $unset
|
||||
* @param array $field
|
||||
*/
|
||||
function _load(
|
||||
$define,
|
||||
$cast,
|
||||
$unset,
|
||||
array $field
|
||||
)
|
||||
{
|
||||
global $wp_fail2ban ;
|
||||
$wp_fail2ban['config'][$define] = array(
|
||||
'validate' => $cast,
|
||||
'unset' => $unset,
|
||||
'field' => $field,
|
||||
'ndef' => !defined( $define ),
|
||||
);
|
||||
if ( !defined( $define ) ) {
|
||||
|
||||
if ( defined( "DEFAULT_{$define}" ) ) {
|
||||
// we've got a default
|
||||
define( $define, $cast( constant( "DEFAULT_{$define}" ) ) );
|
||||
} else {
|
||||
// bah
|
||||
define( $define, $cast( false ) );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate IP list
|
||||
*
|
||||
* @since 4.0.0
|
||||
*
|
||||
* @param array|string $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function validate_ips( $value )
|
||||
{
|
||||
return $value;
|
||||
}
|
||||
|
||||
// phpcs:disable Generic.Functions.FunctionCallArgumentSpacing
|
||||
_load(
|
||||
'WP_FAIL2BAN_AUTH_LOG',
|
||||
'intval',
|
||||
true,
|
||||
array( 'logging', 'authentication', 'facility' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_LOG_COMMENTS',
|
||||
'boolval',
|
||||
true,
|
||||
array( 'logging', 'comments', 'enabled' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_LOG_COMMENTS_EXTRA',
|
||||
'intval',
|
||||
true,
|
||||
array( 'logging', 'comments', 'extra' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_COMMENT_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array( 'logging', 'comments', 'facility' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_COMMENT_EXTRA_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array( 'logging', 'comments-extra', 'facility' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_LOG_PASSWORD_REQUEST',
|
||||
'boolval',
|
||||
true,
|
||||
array( 'logging', 'password-request', 'enabled' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PASSWORD_REQUEST_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array( 'logging', 'password-request', 'facility' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_LOG_PINGBACKS',
|
||||
'boolval',
|
||||
true,
|
||||
array( 'logging', 'pingback', 'enabled' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PINGBACK_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array( 'logging', 'pingback', 'facility' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_LOG_SPAM',
|
||||
'boolval',
|
||||
true,
|
||||
array( 'logging', 'spam', 'enabled' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_SPAM_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array( 'logging', 'spam', 'facility' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_OPENLOG_OPTIONS',
|
||||
'intval',
|
||||
true,
|
||||
array( 'syslog', 'connection' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_SYSLOG_SHORT_TAG',
|
||||
'boolval',
|
||||
true,
|
||||
array( 'syslog', 'workaround', 'short_tag' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_HTTP_HOST',
|
||||
'boolval',
|
||||
true,
|
||||
array( 'syslog', 'workaround', 'http_host' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_TRUNCATE_HOST',
|
||||
'boolval',
|
||||
true,
|
||||
array( 'syslog', 'workaround', 'truncate_host' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_BLOCK_USER_ENUMERATION',
|
||||
'boolval',
|
||||
true,
|
||||
array( 'block', 'user_enumeration' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_BLOCKED_USERS',
|
||||
'strval',
|
||||
true,
|
||||
array( 'block', 'users' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PROXIES',
|
||||
__NAMESPACE__ . '\\validate_ips',
|
||||
true,
|
||||
array( 'remote-ip', 'proxies' )
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_LOG_AUTH',
|
||||
'boolval',
|
||||
true,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'auth',
|
||||
'enabled'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_LOG_COMMENT',
|
||||
'boolval',
|
||||
true,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'comment',
|
||||
'enabled'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_LOG_PASSWORD',
|
||||
'boolval',
|
||||
true,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'password',
|
||||
'enabled'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_LOG_REST',
|
||||
'boolval',
|
||||
true,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'rest',
|
||||
'enabled'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_LOG_SPAM',
|
||||
'boolval',
|
||||
true,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'spam',
|
||||
'enabled'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_LOG_XMLRPC',
|
||||
'boolval',
|
||||
true,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'xmlrpc',
|
||||
'enabled'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_AUTH_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'auth',
|
||||
'facility'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_COMMENT_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'comment',
|
||||
'facility'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_PASSWORD_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'password',
|
||||
'facility'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_REST_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'rest',
|
||||
'facility'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_SPAM_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'spam',
|
||||
'facility'
|
||||
)
|
||||
);
|
||||
_load(
|
||||
'WP_FAIL2BAN_PLUGIN_XMLRPC_LOG',
|
||||
'intval',
|
||||
false,
|
||||
array(
|
||||
'logging',
|
||||
'plugins',
|
||||
'xmlrpc',
|
||||
'facility'
|
||||
)
|
||||
);
|
||||
// phpcs:enable
|
||||
}
|
||||
Reference in New Issue
Block a user