Zend Framework официально предоставляет два типа скелетов: Zend MVC и Zend Expressive.
Независимо от того, какой скелет вы используете, этот руководство может дать вам некоторые идеи о том, как реализовать Firewall Shieldon. Обратите внимание, что я не уверен, какой способ считается наиболее правильным в Zend, поэтому вы можете выбрать метод, который вам нравится.
Используйте PHP Composer:
composer require shieldon/shieldon
Это также установит необходимые зависимости для Shieldon:
Это пример, который показывает, как использовать PSR-15 Middleware в скелете Zend Expressive.
Есть готовый интеграционный класс для Zend Expressive.
В вашем pipeline.php
добавьте эту строку:
Пример:
$app->pipe(\Shieldon\Firewall\Integration\ZendPsr15::class);
Перейдите в каталог App/src/Handler
и создайте файл PHP с именем FirewallPanelHandler
.
Скопируйте следующий текст и вставьте его в этот файл.
Пример:
<?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;
/**
* Обработчик панели брандмауэра
* Если у вас включена защита от CSRF, убедитесь, что передаете токен CSRF в панель управления.
*/
class FirewallPanelHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
return new Response();
}
}
В вашем route.php
добавьте эту строку:
Пример:
// Начало - 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']);
}
// Конец - Firewall Shieldon
Это все.
Я не уверен, какую версию Zend Framework вы используете, поэтому я предоставлю инструкции, которые работают с большинством версий Zend.
В вашем public/index.php
после этой строки:
include __DIR__ . '/../vendor/autoload.php';
Добавьте следующий код:
/*
|--------------------------------------------------------------------------
| Запустить Firewall Shieldon
|--------------------------------------------------------------------------
|
| Firewall Shieldon будет наблюдать за всеми HTTP-запросами, поступающими на ваш сайт.
|
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Этот каталог должен иметь права на запись.
$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);
}
}
Следующим шагом является создание контроллера для панели управления.
Создайте контроллер с названием FirewallController
.
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class FirewallController extends AbstractActionController
{
/**
* Точка входа в панель брандмауэра.
*/
public function panelAction()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Откройте файл module.config.php
, расположенный по адресу:
module/Application/config/module.config.php
(3-1) Внутри массива ['router']['routes']
добавьте следующий код:
Пример:
'firewallpanel' => [
'type' => Segment::class,
'options' => [
'route' => '/firewall/panel[:slug]',
'constraints' => [
'slug' => '[a-zA-Z0-9\/]*',
],
'defaults' => [
'controller' => Controller\FirewallController::class,
'action' => 'panel',
],
],
],
(3-2) Внутри массива ['controllers']['factories']
добавьте следующий код:
Controller\FirewallController::class => InvokableFactory::class,
Это все.
Вы можете получить доступ к панели брандмауэра, посетив /firewall/panel/
. Чтобы увидеть страницу, перейдите по этому URL в своем браузере.
https://yourwebsite.com/firewall/panel
Логин по умолчанию - shieldon_user
, пароль - shieldon_pass
. После входа в панель брандмауэра, первое, что вам следует сделать, - это изменить логин и пароль.
Если Firewall Shieldon включен в разделе настроек Daemon
, он начнет отслеживать ваш сайт. Убедитесь, что вы правильно настроили настройки.