<?php
namespace App\Controller;
use App\EventListener\RequestListener;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
class MonitoringAction extends AbstractController
{
/**
* @Route("/api/monitoring")
*
* @return void
*/
public function checkIsMaintenance(): JsonResponse
{
if (in_array($this->getIPClient(), RequestListener::MAINTENANCE_IPS, true)) {
return new JsonResponse([
'isMaintenance' => false,
]);
}
return new JsonResponse([
'isMaintenance' => isset($_SERVER['IS_MAINTENANCE']) && 'true' === $_SERVER['IS_MAINTENANCE'],
]);
}
/**
* Retourne l'IP Public du Client.
* Le cas d'un proxy devant le serveur web est géré.
*
* @return string
*/
public function getIPClient()
{
return $_SERVER['HTTP_CF_CONNECTING_IP']
?? $_SERVER['HTTP_CLIENT_IP']
?? $_SERVER['HTTP_X_FORWARDED_FOR']
?? $_SERVER['REMOTE_ADDR']
?? '127.0.0.1'
;
}
}