mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 09:31:20 -04:00
did stuff
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
const io = require('../globals/io');
|
||||
const { MODES, getMode, modeEvents } = require('./modeManager');
|
||||
const { isLockdownAdmin } = require('./roleService');
|
||||
|
||||
function disconnectForLockdown(socket) {
|
||||
socket.emit('lockdown', { message: 'Server is in lockdown mode' });
|
||||
socket.disconnect(true);
|
||||
}
|
||||
|
||||
function clearLockdownTimer(socket) {
|
||||
if (socket?.data?.lockdownTimer) {
|
||||
clearTimeout(socket.data.lockdownTimer);
|
||||
socket.data.lockdownTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
function enforceLockdown() {
|
||||
for (const socket of io.sockets.sockets.values()) {
|
||||
if (!isLockdownAdmin(socket)) {
|
||||
disconnectForLockdown(socket);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
io.on('connection', (socket) => {
|
||||
if (getMode() === MODES.LOCKDOWN && !isLockdownAdmin(socket)) {
|
||||
socket.data.lockdownTimer = setTimeout(() => {
|
||||
if (!isLockdownAdmin(socket)) {
|
||||
disconnectForLockdown(socket);
|
||||
}
|
||||
}, 10000);
|
||||
socket.once('disconnect', () => clearLockdownTimer(socket));
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
enforceLockdown,
|
||||
disconnectForLockdown,
|
||||
clearLockdownTimer,
|
||||
};
|
||||
|
||||
modeEvents.on('change', (mode) => {
|
||||
if (mode === MODES.LOCKDOWN) {
|
||||
enforceLockdown();
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user