diff --git a/src/WSServer.ts b/src/WSServer.ts index c13c90d..5045bb2 100644 --- a/src/WSServer.ts +++ b/src/WSServer.ts @@ -36,6 +36,8 @@ export default class WSServer { private voteTimeout : number; // Interval to keep track private voteTimeoutInterval? : NodeJS.Timer; + // Completely disable turns + private turnsAllowed : boolean; private ModPerms : number; private VM : QEMUVM; constructor(config : IConfig, vm : QEMUVM) { @@ -48,6 +50,7 @@ export default class WSServer { this.voteInProgress = false; this.voteTime = 0; this.voteTimeout = 0; + this.turnsAllowed = true; this.ModPerms = Utilities.MakeModPerms(this.Config.collabvm.moderatorPermissions); this.server = http.createServer(); this.socket = new WebSocketServer({noServer: true}); @@ -195,6 +198,7 @@ export default class WSServer { client.onMsgSent(); break; case "turn": + if (!this.turnsAllowed && client.rank !== Rank.Admin && client.rank !== Rank.Moderator) return; if (!client.TurnRateLimit.request()) return; if (!client.connectedToNode) return; if (msgArr.length > 2) return; @@ -413,6 +417,19 @@ export default class WSServer { break; } break; + case "22": + if (client.rank !== Rank.Admin) return; + if (msgArr.length !== 3) return; + switch (msgArr[2]) { + case "0": + this.clearTurns(); + this.turnsAllowed = false; + break; + case "1": + this.turnsAllowed = true; + break; + } + break; } break;