/** * @dataProvider ipsProvider */ public function testIps(array $headers, array $CLIENT_IPS, $CLIENT_IP) { $response = $this->execute([Middleware::ClientIp(), function ($request, $response, $next) { $response->getBody()->write(json_encode(['CLIENT_IPS' => $request->getAttribute('CLIENT_IPS'), 'CLIENT_IP' => $request->getAttribute('CLIENT_IP')])); return $response; }], '', $headers); $body = json_decode((string) $response->getBody(), true); $this->assertEquals($body['CLIENT_IPS'], $CLIENT_IPS); $this->assertEquals($body['CLIENT_IP'], $CLIENT_IP); }
/** * @dataProvider ipsProvider */ public function testFirewall(array $headers, array $trusted, array $untrusted, $status) { $response = $this->execute([Middleware::ClientIp(), Middleware::Firewall()->trusted($trusted)->untrusted($untrusted)], '', $headers); $this->assertEquals($status, $response->getStatusCode()); }
use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use Psr7Middlewares\Middleware; use League\Flysystem\Adapter\Local; use League\Flysystem\Filesystem; use Cache\Adapter\Filesystem\FilesystemCachePool; $app = AppFactory::create(); $errorLog = new Logger('error'); $errorLog->pushHandler(new StreamHandler('log/error.log', Logger::DEBUG)); ErrorHandler::register($errorLog); $accessLog = new Logger('error'); $accessLog->pushHandler(new StreamHandler('log/access.log', Logger::DEBUG)); $filesystemAdapter = new Local('cache/'); $filesystem = new Filesystem($filesystemAdapter); $pool = new FilesystemCachePool($filesystem); $app->pipe(Middleware::ClientIp()->remote(false)); // required for AccessLog, Geolocate $app->pipe(Middleware::AccessLog($accessLog)->combined(true)); $app->pipe(Middleware::TrailingSlash(false)->redirect(301)); $app->pipe(Middleware::FormatNegotiator()); // required for Expires, Minify //$app->pipe(Middleware::Expires()); //$app->pipe(Middleware::Minify()); $app->pipe(Middleware::BlockSpam()); //$app->pipe(Middleware::PhpSession()->name('DetectorSessionId')); //$app->pipe(Middleware::Geolocate()->saveInSession(true)); //$app->pipe(Middleware::Cache($pool)); $app->pipe(Middleware::responseTime()); $app->pipeRoutingMiddleware(); $app->pipeDispatchMiddleware(); $cache = new File(array(File::DIR => 'cache/'));