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