middlewares/firewall
Middleware to provide IP filtering using M6Web/Firewall.
Requirements
- PHP >= 7.2
- A PSR-7 http library
- A PSR-15 middleware dispatcher
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.