aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/commands/admin/listusers.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/commands/admin/listusers.js')
-rw-r--r--server/src/commands/admin/listusers.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/server/src/commands/admin/listusers.js b/server/src/commands/admin/listusers.js
new file mode 100644
index 0000000..a539a3c
--- /dev/null
+++ b/server/src/commands/admin/listusers.js
@@ -0,0 +1,38 @@
+/*
+ Description: Outputs all current channels and their user nicks
+*/
+
+exports.run = async (core, server, socket, data) => {
+ if (socket.uType != 'admin') {
+ // ignore if not admin
+ return;
+ }
+
+ let channels = {};
+ for (var client of server.clients) {
+ if (client.channel) {
+ if (!channels[client.channel]) {
+ channels[client.channel] = [];
+ }
+ channels[client.channel].push(client.nick);
+ }
+ }
+
+ let lines = [];
+ for (let channel in channels) {
+ lines.push(`?${channel} ${channels[channel].join(", ")}`);
+ }
+
+ let text = '';
+ text += lines.join("\n");
+
+ server.reply({
+ cmd: 'info',
+ text: text
+ }, socket);
+};
+
+exports.info = {
+ name: 'listusers',
+ description: 'Outputs all current channels and sockets in those channels'
+};