JEMBOT MAWOT Bypass Shell

Current Path : /home/cinepatreb/billetterie/modules/mollie/src/Controller/
Upload File :
Current File : /home/cinepatreb/billetterie/modules/mollie/src/Controller/AbstractMollieController.php

<?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