Request limiting, config improvements
* Added middleware to limit concurrent request and request body size * The default configuration now has the defaults
This commit is contained in:
@ -17,6 +17,8 @@ use Psr\Log\NullLogger;
|
||||
use React\EventLoop\Loop;
|
||||
use React\EventLoop\LoopInterface;
|
||||
use React\Http\HttpServer;
|
||||
use React\Http\Middleware\LimitConcurrentRequestsMiddleware;
|
||||
use React\Http\Middleware\RequestBodyBufferMiddleware;
|
||||
use React\Socket\SecureServer;
|
||||
use React\Socket\ServerInterface;
|
||||
use SplObjectStorage;
|
||||
@ -90,7 +92,15 @@ class Server
|
||||
*/
|
||||
private function createHttpServer(): HttpServer
|
||||
{
|
||||
$stack = [
|
||||
$stack = [];
|
||||
|
||||
$maxConcurrent = $this->config->get("server.limits.max_concurrent", 100);
|
||||
$maxRequestBody = $this->config->get("server.limits.max_request_body", 102400);
|
||||
|
||||
$stack[] = new LimitConcurrentRequestsMiddleware($maxConcurrent);
|
||||
$stack[] = new RequestBodyBufferMiddleware($maxRequestBody);
|
||||
|
||||
$stack = [ ...$stack,
|
||||
$this->responseMiddleware = new ResponseMiddleware(
|
||||
config: $this->config,
|
||||
logger: $this->logger->withName("http"),
|
||||
@ -99,6 +109,7 @@ class Server
|
||||
config: $this->config
|
||||
),
|
||||
];
|
||||
|
||||
if ($this->config->getEnableWebSockets()) {
|
||||
$stack = [ ...$stack,
|
||||
$this->webSocketHandler = new WebSocketHandler(
|
||||
@ -109,6 +120,7 @@ class Server
|
||||
];
|
||||
$this->logger->warning("The WebSocket support is incomplete and insecure, but enabling it as requested.");
|
||||
}
|
||||
|
||||
$stack = [ ...$stack,
|
||||
$this->mercureHandler = new MercureHandler(
|
||||
config: $this->config,
|
||||
|
Reference in New Issue
Block a user