Skip to content

Zend Framework Expressive

Terry L edited this page Aug 23, 2020 · 2 revisions

Zend framework officially provides two types of skeleton - Zend MVC and Zend Expressive.

No matter which skeleton you are using, this guide might give you some ideas on how to implement Shieldon Firewall, not sure which way is considered the best practice to Zend, you can pick one you prefer.

Firewall in Zend Framework

Installation

Use PHP Composer:

composer require shieldon/shieldon ^2

This will also install dependencies built for Shieldon:

Implementing

This is an example that shows you using a PSR-15 Middleware in Zend Expressive skeleton.

1. Register a middleware.

There is a integration class ready for Zend Expressive.

In your pipeline.php, add this line:

Example:

$app->pipe(\Shieldon\Firewall\Integration\ZendPsr15:class);

2. Define a handler.

Let's go to App/src/Handler directory and create a PHP file named FirewallPanelHandler.

Copy the text blew, paste them into that file.

Example:

<?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
 * If you have CSRF enabled, make sure to pass the csrf token to the control panel.
 */
class FirewallPanelHandler implements RequestHandlerInterface
{
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();

        return new Response();
    }
}

3. Define a route for firewall panel.

In your route.php, add this line:

Example:

// Begin - 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']);
}

// End - Shieldon Firewall

That's it.

Control Panel

You can access the Firewall Panel by /firewall/panel/, to see the page, go to this URL in your browser.

https://yourwebsite.com/firewall/panel

The default login is shieldon_user and password is shieldon_pass. After logging in the Firewall Panel, the first thing you need to do is to change the login and password.

Shieldon Firewall will start watching your website if it get enabled in Deamon setting section, make sure you have set up the settings correctly.