diff --git a/src/User.ts b/src/User.ts index c100fda..fcafa29 100644 --- a/src/User.ts +++ b/src/User.ts @@ -21,6 +21,7 @@ export class User { LoginRateLimit : RateLimiter; RenameRateLimit : RateLimiter; TurnRateLimit : RateLimiter; + VoteRateLimit : RateLimiter; constructor(ws : WebSocket, ip : IPData, config : IConfig, username? : string, node? : string) { this.IP = ip; this.connectedToNode = false; @@ -48,6 +49,8 @@ export class User { this.LoginRateLimit.on('limit', () => this.closeConnection()); this.TurnRateLimit = new RateLimiter(5, 3); this.TurnRateLimit.on('limit', () => this.closeConnection()); + this.VoteRateLimit = new RateLimiter(3, 3); + this.VoteRateLimit.on('limit', () => this.closeConnection()); } assignGuestName(existingUsers : string[]) : string { var username; diff --git a/src/WSServer.ts b/src/WSServer.ts index 6482ec8..d29e553 100644 --- a/src/WSServer.ts +++ b/src/WSServer.ts @@ -272,6 +272,7 @@ export default class WSServer { case "vote": if (!client.connectedToNode) return; if (msgArr.length !== 2) return; + if (!client.VoteRateLimit.request()) return; switch (msgArr[1]) { case "1": if (!this.voteInProgress) {