Add connection rate limiting to collaboration server

This commit is contained in:
Tom Moor
2023-06-25 22:46:07 -04:00
parent 453bbb3b25
commit 94882d4d3a
4 changed files with 26 additions and 1 deletions

View File

@@ -1,12 +1,14 @@
import http, { IncomingMessage } from "http";
import { Duplex } from "stream";
import url from "url";
import { Throttle } from "@hocuspocus/extension-throttle";
import { Server } from "@hocuspocus/server";
import Koa from "koa";
import WebSocket from "ws";
import { DocumentValidation } from "@shared/validations";
import { ConnectionLimitExtension } from "@server/collaboration/ConnectionLimitExtension";
import { ViewsExtension } from "@server/collaboration/ViewsExtension";
import env from "@server/env";
import Logger from "@server/logging/Logger";
import ShutdownHelper, { ShutdownOrder } from "@server/utils/ShutdownHelper";
import AuthenticationExtension from "../collaboration/AuthenticationExtension";
@@ -30,6 +32,11 @@ export default function init(
timeout: 30000,
maxDebounce: 10000,
extensions: [
new Throttle({
throttle: env.RATE_LIMITER_COLLABORATION_REQUESTS,
// Ban time is defined in minutes
banTime: 5,
}),
new ConnectionLimitExtension(),
new AuthenticationExtension(),
new PersistenceExtension(),