This commit is contained in:
2026-07-02 15:54:39 -06:00
commit 9883323161
17470 changed files with 4470592 additions and 0 deletions
@@ -0,0 +1,94 @@
<?php
namespace Gravity_Forms\Gravity_SMTP\Logging\Endpoints;
use Gravity_Forms\Gravity_SMTP\Apps\Config\Tools_Config;
use Gravity_Forms\Gravity_SMTP\Data_Store\Data_Store_Router;
use Gravity_Forms\Gravity_SMTP\Logging\Debug\Debug_Logger;
use Gravity_Forms\Gravity_SMTP\Models\Debug_Log_Model;
use Gravity_Forms\Gravity_SMTP\Users\Roles;
use Gravity_Forms\Gravity_Tools\Endpoints\Endpoint;
class View_Log_Endpoint extends Endpoint {
const PARAM_LOG_KEY = 'key';
const OPTION_VERIFICATION_KEY = 'gravitysmtp_log_verification_key';
const ACTION_NAME = 'view_debug_log';
protected $minimum_cap = Roles::VIEW_DEBUG_LOG;
/**
* @var Data_Store_Router
*/
protected $data;
/**
* @var Debug_Logger $debug_logger
*/
protected $debug_logger;
/**
* @var Debug_Log_Model $model
*/
protected $model;
public function __construct( Data_Store_Router $data, $debug_logger, $debug_model ) {
$this->data = $data;
$this->debug_logger = $debug_logger;
$this->model = $debug_model;
}
protected function get_nonce_name() {
return self::ACTION_NAME;
}
public function handle() {
if ( ! $this->validate() ) {
echo __( 'Unauthorized', 'gravitysmtp' );
die();
}
$lines = $this->debug_logger->get_log_items();
echo '<pre style="white-space: pre-wrap; word-wrap: break-word; overflow-wrap: break-word;">';
foreach ( $lines as $index => $item ) {
printf( "%s %s - %s --> %s", str_pad( '[' . $item->id() . ']', 8, ' ' ), $item->timestamp(), strtoupper( str_pad( $item->priority(), 7, ' ' ) ), esc_html( $item->line() ) );
if ( $index < count( $lines ) - 1 ) {
echo '</pre><hr><pre style="white-space: pre-wrap; word-wrap: break-word; overflow-wrap: break-word;">';
}
}
echo '</pre>';
die();
}
protected function validate() {
// Ensure logging is enabled.
$enabled = $this->data->get_plugin_setting( Tools_Config::SETTING_DEBUG_LOG_ENABLED, false );
if ( ! $enabled ) {
return false;
}
if ( is_user_logged_in() ) {
return current_user_can( Roles::VIEW_DEBUG_LOG );
}
// Get the passed verficiation key; bail if empty.
$key = filter_input( INPUT_GET, self::PARAM_LOG_KEY );
if ( empty( $key ) ) {
return false;
}
// Get the stored verification key; if it is empty or does not match the provided key, bail.
$key = htmlspecialchars( $key );
$check = get_option( self::OPTION_VERIFICATION_KEY );
if ( empty( $check ) || $check !== $key ) {
return false;
}
return true;
}
}