El framework Zend ofrece oficialmente dos tipos de esqueletos: Zend MVC y Zend Expressive.
No importa qué esqueleto estés utilizando, esta guía te dará algunas ideas sobre cómo implementar el Firewall de Shieldon. Ten en cuenta que no estoy seguro de cuál es el mejor enfoque considerado en Zend, así que puedes elegir el método que prefieras.
Utiliza PHP Composer:
composer require shieldon/shieldon
Esto también instalará las dependencias necesarias para Shieldon:
Este es un ejemplo que muestra cómo utilizar un middleware PSR-15 en el esqueleto Zend Expressive.
Ya existe una clase de integración lista para Zend Expressive.
En tu pipeline.php
, añade esta línea:
Ejemplo:
$app->pipe(\Shieldon\Firewall\Integration\ZendPsr15::class);
Ve al directorio App/src/Handler
y crea un archivo PHP llamado FirewallPanelHandler
.
Copia el siguiente texto y pégalo en ese archivo.
Ejemplo:
<?php
declare(strict_types=1);
namespace App\Handler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Zend\Diactoros\Response;
/**
* Controlador del Panel del Firewall
* Si tienes CSRF habilitado, asegúrate de pasar el token CSRF al panel de control.
*/
class FirewallPanelHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
return new Response();
}
}
En tu route.php
, añade esta línea:
Ejemplo:
// Inicio - Shieldon Firewall
$app->route('/firewall/panel/', App\Handler\FirewallPanelHandler::class, ['GET', 'POST']);
foreach(\Shieldon\Firewall\Panel::getRoutes() as $route) {
$app->route("/firewall/panel/$route/", App\Handler\FirewallPanelHandler::class, ['GET', 'POST']);
}
// Fin - Shieldon Firewall
Eso es todo.
No estoy seguro de qué versión del framework Zend estás utilizando, así que proporcionaré instrucciones que funcionan con la mayoría de las versiones de Zend.
En tu public/index.php
, debajo de esta línea:
include __DIR__ . '/../vendor/autoload.php';
Agrega el siguiente código:
/*
|--------------------------------------------------------------------------
| Ejecutar el Firewall de Shieldon
|--------------------------------------------------------------------------
|
| El Firewall de Shieldon supervisará todas las peticiones HTTP que lleguen a tu sitio web.
|
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Este directorio debe tener permisos de escritura.
$storage = dirname($_SERVER['SCRIPT_FILENAME']) . '/../shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
$firewall->controlPanel('/firewall/panel');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
El siguiente paso es crear un controlador para el panel de control.
Crea un controlador llamado FirewallController
.
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class FirewallController extends AbstractActionController
{
/**
* El punto de entrada del Panel del Firewall.
*/
public function panelAction()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Abre el archivo module.config.php
ubicado en:
module/Application/config/module.config.php
(3-1) Dentro del array ['router']['routes']
, agrega el siguiente código:
Ejemplo:
'firewallpanel' => [
'type' => Segment::class,
'options' => [
'route' => '/firewall/panel[:slug]',
'constraints' => [
'slug' => '[a-zA-Z0-9\/]*',
],
'defaults' => [
'controller' => Controller\FirewallController::class,
'action' => 'panel',
],
],
],
(3-2) Dentro del array ['controllers']['factories']
, agrega el siguiente código:
Controller\FirewallController::class => InvokableFactory::class,
Eso es todo.
Puedes acceder al Panel del Firewall visitando /firewall/panel/
. Para ver la página, ingresa a esta URL en tu navegador.
https://yourwebsite.com/firewall/panel
El inicio de sesión predeterminado es shieldon_user
, y la contraseña es shieldon_pass
. Después de iniciar sesión en el Panel del Firewall, lo primero que debes hacer es cambiar el inicio de sesión y la contraseña.
Si el Firewall de Shieldon está habilitado en la sección de configuración del Daemon
, comenzará a monitorear tu sitio web. Asegúrate de haber configurado correctamente los ajustes.