From 97878c51b447d9dc7e7572e3e7d463439d5e26a3 Mon Sep 17 00:00:00 2001 From: yellows111 Date: Sat, 20 Apr 2024 21:16:42 +0100 Subject: [PATCH 1/3] add perm settings for guest voting i'm mad that this wasn't thought about --- config.example.toml | 2 ++ src/WSServer.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/config.example.toml b/config.example.toml index c37c86d..78ab4d1 100644 --- a/config.example.toml +++ b/config.example.toml @@ -21,6 +21,8 @@ secretKey = "hunter2" [auth.guestPermissions] chat = true turn = false +callForReset = false +vote = true [vm] qemuArgs = "qemu-system-x86_64" diff --git a/src/WSServer.ts b/src/WSServer.ts index dde946a..6155b00 100644 --- a/src/WSServer.ts +++ b/src/WSServer.ts @@ -452,6 +452,10 @@ export default class WSServer { switch (msgArr[1]) { case "1": if (!this.voteInProgress) { + if (this.Config.auth.enabled && client.rank === Rank.Unregistered && !this.Config.auth.guestPermissions.callForReset) { + client.sendMsg(guacutils.encode("chat", "", "You need to login to do that.")); + return; + } if (this.voteCooldown !== 0) { client.sendMsg(guacutils.encode("vote", "3", this.voteCooldown.toString())); return; @@ -459,12 +463,20 @@ export default class WSServer { this.startVote(); this.clients.forEach(c => c.sendMsg(guacutils.encode("chat", "", `${client.username} has started a vote to reset the VM.`))); } + if (this.Config.auth.enabled && client.rank === Rank.Unregistered && !this.Config.auth.guestPermissions.vote) { + client.sendMsg(guacutils.encode("chat", "", "You need to login to do that.")); + return; + } else if (client.IP.vote !== true) this.clients.forEach(c => c.sendMsg(guacutils.encode("chat", "", `${client.username} has voted yes.`))); client.IP.vote = true; break; case "0": if (!this.voteInProgress) return; + if (this.Config.auth.enabled && client.rank === Rank.Unregistered && !this.Config.auth.guestPermissions.vote) { + client.sendMsg(guacutils.encode("chat", "", "You need to login to do that.")); + return; + } if (client.IP.vote !== false) this.clients.forEach(c => c.sendMsg(guacutils.encode("chat", "", `${client.username} has voted no.`))); client.IP.vote = false; From 820ef05832b896479d23bc00fc970d27c5d1a7e7 Mon Sep 17 00:00:00 2001 From: modeco80 Date: Tue, 23 Apr 2024 07:14:13 -0400 Subject: [PATCH 2/3] chore: Remove reference to "fs" dummy package Not needed. This will end up landing again anyways in a major refactoring job, but for now I'm making the change here because it's a one line change. --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 1114024..07ec309 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "async-mutex": "^0.4.0", "canvas": "^2.11.2", "execa": "^8.0.1", - "fs": "^0.0.1-security", "jimp": "^0.22.10", "mnemonist": "^0.39.5", "rfb2": "github:elijahr2411/node-rfb2", From 8452f8d2200d566209092a54226e2b03699be209 Mon Sep 17 00:00:00 2001 From: Elijah R Date: Wed, 24 Apr 2024 14:34:03 -0400 Subject: [PATCH 3/3] nice one declan --- src/IConfig.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/IConfig.ts b/src/IConfig.ts index 2d465b4..d4d920c 100644 --- a/src/IConfig.ts +++ b/src/IConfig.ts @@ -15,6 +15,8 @@ export default interface IConfig { guestPermissions : { chat : boolean; turn : boolean; + callForReset : boolean; + vote : boolean; } } vm : {