fix turn passwords when auth is enabled
This commit is contained in:
@@ -355,7 +355,7 @@ export default class CollabVMServer {
|
||||
client.onMsgSent();
|
||||
break;
|
||||
case 'turn':
|
||||
if ((!this.turnsAllowed || this.Config.collabvm.turnwhitelist) && client.rank !== Rank.Admin && client.rank !== Rank.Moderator && client.rank !== Rank.Turn) return;
|
||||
if ((!this.turnsAllowed || this.Config.collabvm.turnwhitelist) && client.rank !== Rank.Admin && client.rank !== Rank.Moderator && !client.turnWhitelist) return;
|
||||
if (this.Config.auth.enabled && client.rank === Rank.Unregistered && !this.Config.auth.guestPermissions.turn) {
|
||||
client.sendMsg(cvm.guacEncode('chat', '', 'You need to login to do that.'));
|
||||
return;
|
||||
@@ -419,7 +419,7 @@ export default class CollabVMServer {
|
||||
break;
|
||||
case 'vote':
|
||||
if (!this.VM.SnapshotsSupported()) return;
|
||||
if ((!this.turnsAllowed || this.Config.collabvm.turnwhitelist) && client.rank !== Rank.Admin && client.rank !== Rank.Moderator && client.rank !== Rank.Turn) return;
|
||||
if ((!this.turnsAllowed || this.Config.collabvm.turnwhitelist) && client.rank !== Rank.Admin && client.rank !== Rank.Moderator && !client.turnWhitelist) return;
|
||||
if (!client.connectedToNode) return;
|
||||
if (msgArr.length !== 2) return;
|
||||
if (!client.VoteRateLimit.request()) return;
|
||||
@@ -481,25 +481,31 @@ export default class CollabVMServer {
|
||||
switch (msgArr[1]) {
|
||||
case '2':
|
||||
// Login
|
||||
if (this.Config.auth.enabled) {
|
||||
client.sendMsg(cvm.guacEncode('chat', '', 'This server does not support staff passwords. Please log in to become staff.'));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!client.LoginRateLimit.request() || !client.username) return;
|
||||
if (msgArr.length !== 3) return;
|
||||
var sha256 = createHash('sha256');
|
||||
sha256.update(msgArr[2]);
|
||||
var pwdHash = sha256.digest('hex');
|
||||
sha256.destroy();
|
||||
|
||||
if (this.Config.collabvm.turnwhitelist && pwdHash === this.Config.collabvm.turnpass) {
|
||||
client.turnWhitelist = true;
|
||||
client.sendMsg(cvm.guacEncode('chat', '', 'You may now take turns.'));
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.Config.auth.enabled) {
|
||||
client.sendMsg(cvm.guacEncode('chat', '', 'This server does not support staff passwords. Please log in to become staff.'));
|
||||
return;
|
||||
}
|
||||
|
||||
if (pwdHash === this.Config.collabvm.adminpass) {
|
||||
client.rank = Rank.Admin;
|
||||
client.sendMsg(cvm.guacEncode('admin', '0', '1'));
|
||||
} else if (this.Config.collabvm.moderatorEnabled && pwdHash === this.Config.collabvm.modpass) {
|
||||
client.rank = Rank.Moderator;
|
||||
client.sendMsg(cvm.guacEncode('admin', '0', '3', this.ModPerms.toString()));
|
||||
} else if (this.Config.collabvm.turnwhitelist && pwdHash === this.Config.collabvm.turnpass) {
|
||||
client.rank = Rank.Turn;
|
||||
client.sendMsg(cvm.guacEncode('chat', '', 'You may now take turns.'));
|
||||
} else {
|
||||
client.sendMsg(cvm.guacEncode('admin', '0', '0'));
|
||||
return;
|
||||
|
||||
@@ -22,6 +22,7 @@ export class User {
|
||||
Config: IConfig;
|
||||
IP: IPData;
|
||||
Capabilities: CollabVMCapabilities;
|
||||
turnWhitelist: boolean = false;
|
||||
// Hide flag. Only takes effect if the user is logged in.
|
||||
noFlag: boolean = false;
|
||||
countryCode: string | null = null;
|
||||
@@ -153,6 +154,4 @@ export enum Rank {
|
||||
Registered = 1,
|
||||
Admin = 2,
|
||||
Moderator = 3,
|
||||
// Giving a good gap between server only internal ranks just in case
|
||||
Turn = 10
|
||||
}
|
||||
|
||||
10
yarn.lock
10
yarn.lock
@@ -41,14 +41,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@computernewb/superqemu@npm:^0.2.2":
|
||||
version: 0.2.2
|
||||
resolution: "@computernewb/superqemu@npm:0.2.2"
|
||||
"@computernewb/superqemu@npm:^0.2.3":
|
||||
version: 0.2.3
|
||||
resolution: "@computernewb/superqemu@npm:0.2.3"
|
||||
dependencies:
|
||||
"@computernewb/nodejs-rfb": "npm:^0.3.0"
|
||||
execa: "npm:^8.0.1"
|
||||
pino: "npm:^9.3.1"
|
||||
checksum: 10c0/db4bfed554661544028e4fa41f1869adf64292ffe2864a807e8dc0c0f1c3538cfef72292d202a8dad8ab2c066b54b3296c9456e64ea685b07a981fed89d8d6c5
|
||||
checksum: 10c0/70d63278f4cdd6e5521a9bf62b9492380c96a94dcbb2e719e7396a4139c4238560ad7deea86ea163af6fc8c526b9f658e7f5e7586391fe4b57f5257467a16eb1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -76,7 +76,7 @@ __metadata:
|
||||
resolution: "@cvmts/cvmts@workspace:cvmts"
|
||||
dependencies:
|
||||
"@computernewb/nodejs-rfb": "npm:^0.3.0"
|
||||
"@computernewb/superqemu": "npm:^0.2.2"
|
||||
"@computernewb/superqemu": "npm:^0.2.3"
|
||||
"@cvmts/cvm-rs": "npm:*"
|
||||
"@maxmind/geoip2-node": "npm:^5.0.0"
|
||||
"@types/node": "npm:^20.12.5"
|
||||
|
||||
Reference in New Issue
Block a user