initial
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user