Minor UAC tweaks
Added an underscore to the uac info lib which prevents the server from attempting to use the file as a command module, allowing removal of the 'info' property and empty 'run' command
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
Description: Adds the target trip to the mod list then elevates the uType
|
Description: Adds the target trip to the mod list then elevates the uType
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket, data) {
|
export async function run(core, server, socket, data) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Outputs all current channels and their user nicks
|
Description: Outputs all current channels and their user nicks
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket) {
|
export async function run(core, server, socket) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Clears and resets the command modules, outputting any errors
|
Description: Clears and resets the command modules, outputting any errors
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket, data) {
|
export async function run(core, server, socket, data) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Removes target trip from the config as a mod and downgrades the socket type
|
Description: Removes target trip from the config as a mod and downgrades the socket type
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket, data) {
|
export async function run(core, server, socket, data) {
|
||||||
@@ -20,7 +20,7 @@ export async function run(core, server, socket, data) {
|
|||||||
for (let i = 0, l = targetMod.length; i < l; i += 1) {
|
for (let i = 0, l = targetMod.length; i < l; i += 1) {
|
||||||
// downgrade privilages
|
// downgrade privilages
|
||||||
targetMod[i].uType = 'user';
|
targetMod[i].uType = 'user';
|
||||||
targetMod[i].level = UAC.levels.user;
|
targetMod[i].level = UAC.levels.default;
|
||||||
|
|
||||||
// inform ex-mod
|
// inform ex-mod
|
||||||
server.send({
|
server.send({
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Writes the current config to disk
|
Description: Writes the current config to disk
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket) {
|
export async function run(core, server, socket) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Emmits a server-wide message as `info`
|
Description: Emmits a server-wide message as `info`
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket, data) {
|
export async function run(core, server, socket, data) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Rebroadcasts any `text` to all clients in a `channel`
|
Description: Rebroadcasts any `text` to all clients in a `channel`
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module support functions
|
// module support functions
|
||||||
const parseText = (text) => {
|
const parseText = (text) => {
|
||||||
@@ -45,7 +45,7 @@ export async function run(core, server, socket, data) {
|
|||||||
cmd: 'chat',
|
cmd: 'chat',
|
||||||
nick: socket.nick,
|
nick: socket.nick,
|
||||||
text,
|
text,
|
||||||
level: socket.level
|
level: socket.level,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (UAC.isAdmin(socket.level)) {
|
if (UAC.isAdmin(socket.level)) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Initial entry point, applies `channel` and `nick` to the calling socket
|
Description: Initial entry point, applies `channel` and `nick` to the calling socket
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module support functions
|
// module support functions
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
@@ -22,7 +22,7 @@ export function parseNickname(core, data) {
|
|||||||
nick: '',
|
nick: '',
|
||||||
uType: 'user',
|
uType: 'user',
|
||||||
trip: null,
|
trip: null,
|
||||||
level: UAC.levels.user,
|
level: UAC.levels.default,
|
||||||
};
|
};
|
||||||
|
|
||||||
// seperate nick from password
|
// seperate nick from password
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Adds the target socket's ip to the ratelimiter
|
Description: Adds the target socket's ip to the ratelimiter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket, data) {
|
export async function run(core, server, socket, data) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Author: simple
|
* Author: simple
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module constructor
|
// module constructor
|
||||||
export function init(core) {
|
export function init(core) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Forces a change on the target(s) socket's channel, then broadcasts event
|
Description: Forces a change on the target(s) socket's channel, then broadcasts event
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket, data) {
|
export async function run(core, server, socket, data) {
|
||||||
@@ -54,17 +54,17 @@ export async function run(core, server, socket, data) {
|
|||||||
|
|
||||||
// Announce the kicked clients arrival in destChannel and that they were kicked
|
// Announce the kicked clients arrival in destChannel and that they were kicked
|
||||||
// Before they arrive, so they don't see they got moved
|
// Before they arrive, so they don't see they got moved
|
||||||
for (let i = 0; i < kicked.length; i++) {
|
for (let i = 0; i < kicked.length; i += 1) {
|
||||||
server.broadcast({
|
server.broadcast({
|
||||||
cmd: 'onlineAdd',
|
cmd: 'onlineAdd',
|
||||||
nick: kicked[i].nick,
|
nick: kicked[i].nick,
|
||||||
trip: kicked[i].trip || 'null',
|
trip: kicked[i].trip || 'null',
|
||||||
hash: kicked[i].userHash
|
hash: kicked[i].userHash,
|
||||||
}, { channel: destChannel });
|
}, { channel: destChannel });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move all kicked clients to the new channel
|
// Move all kicked clients to the new channel
|
||||||
for (let i = 0; i < kicked.length; i++) {
|
for (let i = 0; i < kicked.length; i += 1) {
|
||||||
kicked[i].channel = destChannel;
|
kicked[i].channel = destChannel;
|
||||||
|
|
||||||
server.broadcast({
|
server.broadcast({
|
||||||
@@ -87,7 +87,7 @@ export async function run(core, server, socket, data) {
|
|||||||
// publicly broadcast kick event
|
// publicly broadcast kick event
|
||||||
server.broadcast({
|
server.broadcast({
|
||||||
cmd: 'info',
|
cmd: 'info',
|
||||||
text: `Kicked ${kicked.map(k => k.nick).join(', ')}`,
|
text: `Kicked ${kicked.map((k) => k.nick).join(', ')}`,
|
||||||
}, { channel: socket.channel, level: (level) => level < UAC.levels.moderator });
|
}, { channel: socket.channel, level: (level) => level < UAC.levels.moderator });
|
||||||
|
|
||||||
// stats are fun
|
// stats are fun
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Removes the target socket from the current channel and forces a join event in another
|
Description: Removes the target socket from the current channel and forces a join event in another
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket, data) {
|
export async function run(core, server, socket, data) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Author: simple
|
* Author: simple
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module constructor
|
// module constructor
|
||||||
export function init(core) {
|
export function init(core) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Removes a target ip from the ratelimiter
|
Description: Removes a target ip from the ratelimiter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket, data) {
|
export async function run(core, server, socket, data) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
Description: Clears all bans and ratelimits
|
Description: Clears all bans and ratelimits
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as UAC from "../utility/UAC/info";
|
import * as UAC from '../utility/UAC/_info';
|
||||||
|
|
||||||
// module main
|
// module main
|
||||||
export async function run(core, server, socket) {
|
export async function run(core, server, socket) {
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/**
|
||||||
|
* User Account Control information containing level constants
|
||||||
|
* and simple helper functions used to verify permissions
|
||||||
|
* @property {Object} levels - Defines labels for default permission ranges
|
||||||
|
* @author MinusGix ( https://github.com/MinusGix )
|
||||||
|
* @version v1.0.0
|
||||||
|
* @license WTFPL ( http://www.wtfpl.net/txt/copying/ )
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Object defining labels for default permission ranges
|
||||||
|
* @typedef {Object} levels
|
||||||
|
* @property {number} admin Global administrator range
|
||||||
|
* @property {number} moderator Global moderator range
|
||||||
|
* @property {number} channelOwner Local administrator range
|
||||||
|
* @property {number} channelModerator Local moderator range
|
||||||
|
* @property {number} channelTrusted Local (non-public) channel trusted
|
||||||
|
* @property {number} trustedUser Public channel trusted
|
||||||
|
* @property {number} default Default user level
|
||||||
|
*/
|
||||||
|
export const levels = {
|
||||||
|
admin: 9999999,
|
||||||
|
moderator: 999999,
|
||||||
|
|
||||||
|
channelOwner: 99999,
|
||||||
|
channelModerator: 9999,
|
||||||
|
channelTrusted: 8999,
|
||||||
|
|
||||||
|
trustedUser: 500,
|
||||||
|
default: 100,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if target level is equal or greater than the global admin level
|
||||||
|
* @public
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
export function isAdmin(level) {
|
||||||
|
return level >= levels.admin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if target level is equal or greater than the global moderator level
|
||||||
|
* @public
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
export function isModerator(level) {
|
||||||
|
return level >= levels.moderator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if target level is equal or greater than the channel owner level
|
||||||
|
* @public
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
export function isChannelOwner(level) {
|
||||||
|
return level >= levels.channelOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if target level is equal or greater than the channel moderator level
|
||||||
|
* @public
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
export function isChannelModerator(level) {
|
||||||
|
return level >= levels.channelModerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if target level is equal or greater than the channel trust level
|
||||||
|
* @public
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
export function isChannelTrusted(level) {
|
||||||
|
return level >= levels.channelTrusted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if target level is equal or greater than a trusted user
|
||||||
|
* @public
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
export function isTrustedUser(level) {
|
||||||
|
return level >= levels.trustedUser;
|
||||||
|
}
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
export const levels = {
|
|
||||||
admin : 9999999,
|
|
||||||
moderator : 999999,
|
|
||||||
|
|
||||||
channelOwner : 99999,
|
|
||||||
channelModerator : 9999,
|
|
||||||
|
|
||||||
user : 100,
|
|
||||||
};
|
|
||||||
|
|
||||||
export function isAdmin (level) {
|
|
||||||
return level >= levels.admin;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isModerator (level) {
|
|
||||||
return level >= levels.moderator;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isChannelOwner (level) {
|
|
||||||
return level >= levels.channelOwner;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isChannelModerator (level) {
|
|
||||||
return level >= levels.channelModerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function run (core, server, socket, data) {}
|
|
||||||
|
|
||||||
export const info = {
|
|
||||||
name: 'uac_info',
|
|
||||||
description: 'This module contains information about UAC levels, and minor utility functions.',
|
|
||||||
};
|
|
||||||
@@ -77,7 +77,7 @@ class RateLimiter {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
record.score *= Math.pow(2, -(Date.now() - record.time ) / this.halflife);
|
record.score *= Math.pow(2, -(Date.now() - record.time) / this.halflife);
|
||||||
record.score += deltaScore;
|
record.score += deltaScore;
|
||||||
record.time = Date.now();
|
record.time = Date.now();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user