middlewares/firewall

Middleware to provide IP filtering

v2.0.3 2022-10-04 09:47 UTC

This package is auto-updated.

Last update: 2024-03-30 11:17:23 UTC


README

Latest Version on Packagist Software License Testing Total Downloads

Middleware to provide IP filtering.

Requirements

Installation

This package is installable and autoloadable via Composer as middlewares/firewall.

composer require middlewares/firewall

Example

Dispatcher::run([
    (new Middlewares\Firewall(['123.0.0.*']))
        ->blacklist([
            '123.0.0.1',
            '123.0.0.2',
        ])
]);

Usage

The constructor accepts an array with the whitelist ips. See the ip formats allowed.

$firewall = new Middlewares\Firewall([
    '127.0.0.1',
    '198.168.0.*',
]);

Optionally, you can provide a Psr\Http\Message\ResponseFactoryInterface as the second argument to create the error response (403). If it's not defined, Middleware\Utils\Factory will be used to detect it automatically.

$responseFactory = new MyOwnResponseFactory();

$firewall = new Middlewares\Firewall($whitelist, $responseFactory);

blacklist

The blacklist ips. The ip format is the same than whitelist.

$whitelist = [
    '127.0.0.1',
    '198.168.0.*',
];
$blacklist = [
    '192.168.0.50',
];

$firewall = (new Middlewares\Firewall($whitelist))->blacklist($blacklist);

ipAttribute

By default uses the REMOTE_ADDR server parameter to get the client ip. Use this option if you want to use a request attribute. Useful to combine with any ip detection middleware, for example client-ip:

Dispatcher::run([
    //detect the client ip and save it in client-ip attribute
    new Middlewares\ClientIP(),

    //use that attribute
    (new Middlewares\Firewall(['123.0.0.*']))
        ->ipAttribute('client-ip')
]);

Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.

The MIT License (MIT). Please see LICENSE for more information.