JEMBOT MAWOT Bypass Shell
<?php
/**
 * Mollie       https://www.mollie.nl
 *
 * @author      Mollie B.V. <info@mollie.nl>
 * @copyright   Mollie B.V.
 * @license     https://github.com/mollie/PrestaShop/blob/master/LICENSE.md
 *
 * @see        https://github.com/mollie/PrestaShop
 */
namespace Mollie\Controller;
use Mollie\Errors\Error;
use Mollie\Errors\Http\HttpStatusCode;
use Mollie\Infrastructure\Adapter\Lock;
use Mollie\Infrastructure\Response\JsonResponse;
use Mollie\Infrastructure\Response\Response;
use Mollie\Logger\PrestaLoggerInterface;
if (!defined('_PS_VERSION_')) {
    exit;
}
class AbstractMollieController extends \ModuleFrontControllerCore
{
    private const FILE_NAME = 'AbstractMollieController';
    /** @var Lock */
    private $lock;
    /** @var \Mollie */
    public $module;
    public function __construct()
    {
        parent::__construct();
        $this->lock = $this->module->getService(Lock::class);
    }
    protected function respond($status, $statusCode = HttpStatusCode::HTTP_OK, $message = ''): void
    {
        http_response_code($statusCode);
        $response = ['status' => $status];
        if ($message) {
            $response['error'] = new Error($statusCode, $message);
        }
        $this->ajaxRender(json_encode($response));
    }
    protected function ajaxRender($value = null, $controller = null, $method = null): void
    {
        // TODO remove this later
        parent::ajaxRender($value, $controller, $method);
        exit;
    }
    protected function ajaxResponse($value, $controller = null, $method = null): void
    {
        /** @var PrestaLoggerInterface $logger */
        $logger = $this->module->getService(PrestaLoggerInterface::class);
        if ($value instanceof JsonResponse) {
            if ($value->getStatusCode() === JsonResponse::HTTP_INTERNAL_SERVER_ERROR) {
                $logger->error('Failed to return valid response', [
                    'context' => [
                        'response' => $value->getContent(),
                    ],
                ]);
            }
            http_response_code($value->getStatusCode());
            $value = $value->getContent();
        }
        try {
            $this->ajaxRender($value, $controller, $method);
        } catch (\Throwable $exception) {
            $logger->error('Could not return ajax response', [
                'response' => json_encode($value ?: []),
                'Exception message' => $exception->getMessage(),
                'Exception code' => $exception->getCode(),
            ]);
        }
        exit;
    }
    protected function applyLock(string $resource): Response
    {
        /** @var PrestaLoggerInterface $logger */
        $logger = $this->module->getService(PrestaLoggerInterface::class);
        try {
            $this->lock->create($resource);
            if (!$this->lock->acquire()) {
                $logger->error('Lock resource conflict', [
                    'resource' => $resource,
                ]);
                return Response::respond(
                    $this->module->l('Resource conflict', self::FILE_NAME),
                    Response::HTTP_CONFLICT
                );
            }
        } catch (\Throwable $exception) {
            $logger->error('Failed to lock process', [
                'Exception message' => $exception->getMessage(),
                'Exception code' => $exception->getCode(),
            ]);
            return Response::respond(
                $this->module->l('Internal error', self::FILE_NAME),
                Response::HTTP_INTERNAL_SERVER_ERROR
            );
        }
        return Response::respond(
            '',
            Response::HTTP_OK
        );
    }
    protected function releaseLock(): void
    {
        /** @var PrestaLoggerInterface $logger */
        $logger = $this->module->getService(PrestaLoggerInterface::class);
        try {
            $this->lock->release();
        } catch (\Throwable $exception) {
            $logger->error('Failed to release process', [
                'Exception message' => $exception->getMessage(),
                'Exception code' => $exception->getCode(),
            ]);
        }
    }
}
xxxxx1.0, XXX xxxx