This commit is contained in:
Mauro Torrez
2019-09-17 18:28:38 -03:00
commit 3a8e77323e
30 changed files with 3648 additions and 0 deletions

144
lib/constants.php Normal file
View 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
View 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
View 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
}