shell bypass 403
<?php
declare(strict_types=1);
namespace smpp;
/**
* Class DefaultLogger
* @package smpp
*/
class DefaultLogger implements LoggerInterface
{
/**
* DefaultLogger constructor.
* @param bool $debug
*/
public function __construct(public bool $debug = false)
{
}
/**
* @inheritDoc
*/
public function emergency(string $message, array $context = []): void
{
$this->log(self::EMERGENCY, $message, $context);
}
/**
* @inheritDoc
*/
public function alert(string $message, array $context = []): void
{
$this->log(self::ALERT, $message, $context);
}
/**
* @inheritDoc
*/
public function critical(string $message, array $context = []): void
{
$this->log(self::CRITICAL, $message, $context);
}
/**
* @inheritDoc
*/
public function error(string $message, array $context = []): void
{
$this->log(self::ERROR, $message, $context);
}
/**
* @inheritDoc
*/
public function warning(string $message, array $context = []): void
{
$this->log(self::WARNING, $message, $context);
}
/**
* @inheritDoc
*/
public function notice(string $message, array $context = []): void
{
$this->log(self::NOTICE, $message, $context);
}
/**
* @inheritDoc
*/
public function info($message, array $context = []): void
{
$this->log(self::INFO, $message, $context);
}
/**
* @inheritDoc
*/
public function debug(string $message, array $context = []): void
{
$this->log(self::DEBUG, $message, $context);
}
/**
* @inheritDoc
*/
public function log(string $level, string $message, array $context = []): void
{
$this->debug && error_log($this->buildMessage($level, $message, $context));
}
/**
* @param string $level
* @param string $message
* @param array<mixed, mixed> $context
* @return string
*/
private function buildMessage(string $level, string $message, array $context = []): string
{
$data = ($context) ? ' Data: ' . json_encode($context) : '';
return '#'
. (new \DateTime())->format('Y-m-d H:i:s')
. ' '
. $level
. ': '
. $message
. $data
. PHP_EOL;
}
}