O Zend Framework oficialmente fornece dois tipos de esqueletos: Zend MVC e Zend Expressive.
Não importa qual esqueleto você esteja usando, este guia pode fornecer algumas ideias sobre como implementar o Firewall Shieldon. Por favor, note que não tenho certeza de qual método é considerado a melhor prática no Zend, então você pode escolher o método que preferir.
Use o Composer do PHP:
composer require shieldon/shieldon
Isso também instalará as dependências necessárias para o Shieldon:
Este é um exemplo que mostra como usar um Middleware PSR-15 no esqueleto Zend Expressive.
Existe uma classe de integração pronta para o Zend Expressive.
Em seu pipeline.php
, adicione esta linha:
Exemplo:
$app->pipe(\Shieldon\Firewall\Integration\ZendPsr15:class);
Vá para o diretório App/src/Handler
e crie um arquivo PHP chamado FirewallPanelHandler
.
Copie o texto abaixo e cole no arquivo.
Exemplo:
<?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;
/**
* Firewall Panel Handler
* Se você tiver o CSRF habilitado, certifique-se de passar o token CSRF para o painel de controle.
*/
class FirewallPanelHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
return new Response();
}
}
Em seu route.php
, adicione esta linha:
Exemplo:
// Início - Firewall Shieldon
$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']);
}
// Fim - Firewall Shieldon
Isso é tudo.
Não tenho certeza qual versão do Zend Framework você está usando, então fornecerei instruções que funcionam com a maioria das versões do Zend.
Em seu public/index.php
, logo abaixo desta linha:
include __DIR__ . '/../vendor/autoload.php';
Adicione o seguinte código:
/*
|--------------------------------------------------------------------------
| Executar o Firewall Shieldon
|--------------------------------------------------------------------------
|
| O Firewall Shieldon irá monitorar todas as solicitações HTTP que chegam ao seu site.
|
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Este diretório deve ter permissão de escrita.
$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);
}
}
O próximo passo é criar um controlador para o painel de controle.
Vamos criar um controlador chamado FirewallController
.
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class FirewallController extends AbstractActionController
{
/**
* O ponto de entrada do Painel do Firewall.
*/
public function panelAction()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Abra o arquivo module.config.php
localizado em:
module/Application/config/module.config.php
(3-1) Dentro do array ['router']['routes']
, adicione o seguinte código:
Exemplo:
'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 do array ['controllers']['factories']
, adicione o seguinte código:
Controller\FirewallController::class => InvokableFactory::class,
Isso é tudo.
Você pode acessar o Painel de Firewall visitando /firewall/panel/
. Para ver a página, vá para esta URL em seu navegador.
https://seusite.com/firewall/panel
O login padrão é shieldon_user
e a senha é shieldon_pass
. Após fazer login no Painel de Firewall, a primeira coisa que você deve fazer é alterar o login e a senha.
Se o Firewall Shieldon estiver habilitado na seção de configurações do Daemon
, ele começará a monitorar seu site. Certifique-se de ter configurado corretamente as configurações.