File: /var/www/html/wp-content/plugins/wp-fail2ban/feature/comments.php
<?php declare(strict_types=1);
/**
* Comment logging
*
* @package wp-fail2ban
* @since 4.4.0 Require PHP 7.4
* @since 4.0.0
*
* @wp-f2b-soft Comment attempt on .* post \d+
*/
namespace org\lecklider\charles\wordpress\wp_fail2ban\feature;
use org\lecklider\charles\wordpress\wp_fail2ban\Config;
use org\lecklider\charles\wordpress\wp_fail2ban\Syslog;
defined('ABSPATH') or exit;
/**
* Log new comment
*
* @since 4.4.0 Add type hints, return type
* @since 4.3.4.0 Refactor to use Syslog::single
* @since 3.5.0
*
* @param bool $maybe_notify
* @param int $comment_ID
*
* @return bool
*
* @wp-f2b-extra Comment \d+
*/
function notify_post_author(bool $maybe_notify, int $comment_ID): bool
{
Syslog::single(LOG_INFO, "Comment {$comment_ID}", 'WP_FAIL2BAN_COMMENT_LOG');
do_action(__FUNCTION__, $maybe_notify, $comment_ID);
return $maybe_notify;
}
/**
* Attempted/extra log helper
*
* @since 5.0.0
*
* @return string
*/
function _get_comment_attempt_log(): string
{
// New setting defined, use new log
if (true === Config::get('WP_FAIL2BAN_LOG_COMMENT_ATTEMPTS')) {
return 'WP_FAIL2BAN_COMMENT_ATTEMPT_LOG';
} elseif (Config::get('WP_FAIL2BAN_LOG_COMMENTS_EXTRA')) {
return 'WP_FAIL2BAN_COMMENT_EXTRA_LOG';
} else {
return 'WP_FAIL2BAN_COMMENT_ATTEMPT_LOG';
}
}
/**
* Log attempted comment on non-existent post
*
* @since 5.0.0 Use attempted/extra log helper
* @since 4.4.0 Add type hint, return type
* @since 4.3.4.0 Refactor to use Syslog::single
* @since 4.0.0
*
* @param int $comment_post_ID
*
* @return void
*/
function comment_id_not_found(int $comment_post_ID): void
{
Syslog::single(LOG_NOTICE, "Comment attempt on non-existent post {$comment_post_ID}", _get_comment_attempt_log());
do_action(__FUNCTION__, $comment_post_ID);
}
/**
* Log attempted comment on closed post
*
* @since 5.0.0 Use attempted/extra log helper
* @since 4.4.0 Add type hint, return type
* @since 4.3.4.0 Refactor to use Syslog::single
* @since 4.0.0
*
* @param int $comment_post_ID
*
* @return void
*/
function comment_closed(int $comment_post_ID): void
{
Syslog::single(LOG_NOTICE, "Comment attempt on closed post {$comment_post_ID}", _get_comment_attempt_log());
do_action(__FUNCTION__, $comment_post_ID);
}
/**
* Log attempted comment on trashed post
*
* @since 5.0.0 Use attempted/extra log helper
* @since 4.4.0 Add type hint, return type
* @since 4.3.4.0 Refactor to use Syslog::single
* @since 4.0.2 Fix message
* @since 4.0.0
*
* @param int $comment_post_ID
*
* @return void
*/
function comment_on_trash(int $comment_post_ID): void
{
Syslog::single(LOG_NOTICE, "Comment attempt on trashed post {$comment_post_ID}", _get_comment_attempt_log());
do_action(__FUNCTION__, $comment_post_ID);
}
/**
* Log attempted comment on draft post
*
* @since 5.0.0 Use attempted/extra log helper
* @since 4.4.0 Add type hint, return type
* @since 4.3.4.0 Refactor to use Syslog::single
* @since 4.0.2 Fix message
* @since 4.0.0
*
* @param int $comment_post_ID
*
* @return void
*/
function comment_on_draft(int $comment_post_ID): void
{
Syslog::single(LOG_NOTICE, "Comment attempt on draft post {$comment_post_ID}", _get_comment_attempt_log());
do_action(__FUNCTION__, $comment_post_ID);
}
/**
* Log attempted comment on password-protected post
*
* @since 5.0.0 Use attempted/extra log helper
* @since 4.4.0 Add type hint, return type
* @since 4.3.4.0 Refactor to use Syslog::single
* @since 4.0.2 Fix message
* @since 4.0.0
*
* @param int $comment_post_ID
*
* @return void
*/
function comment_on_password_protected(int $comment_post_ID): void
{
Syslog::single(LOG_NOTICE, "Comment attempt on password-protected post {$comment_post_ID}", _get_comment_attempt_log());
do_action(__FUNCTION__, $comment_post_ID);
}