Software /
code /
prosody
Comparison
plugins/mod_admin_shell.lua @ 12866:54aea2622459
mod_admin_shell: Add muc:affiliations(room) command to list memberships
Easier than going trough muc:room():each_affiliation() since you have to
do fiddly things to reach the print() function.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 29 Jan 2023 17:53:21 +0100 |
parent | 12865:e6324117f124 |
child | 12867:2defb0fc2be9 |
comparison
equal
deleted
inserted
replaced
12865:e6324117f124 | 12866:54aea2622459 |
---|---|
288 -- TODO `muc:room():foo()` commands | 288 -- TODO `muc:room():foo()` commands |
289 print [[muc:create(roomjid, { config }) - Create the specified MUC room with the given config]] | 289 print [[muc:create(roomjid, { config }) - Create the specified MUC room with the given config]] |
290 print [[muc:list(host) - List rooms on the specified MUC component]] | 290 print [[muc:list(host) - List rooms on the specified MUC component]] |
291 print [[muc:room(roomjid) - Reference the specified MUC room to access MUC API methods]] | 291 print [[muc:room(roomjid) - Reference the specified MUC room to access MUC API methods]] |
292 print [[muc:occupants(roomjid, filter) - List room occupants, optionally filtered on substring or role]] | 292 print [[muc:occupants(roomjid, filter) - List room occupants, optionally filtered on substring or role]] |
293 print [[muc:affiliations(roomjid, filter) - List affiliated members of the room, optionally filtered on substring or affiliation]] | |
293 elseif section == "server" then | 294 elseif section == "server" then |
294 print [[server:version() - Show the server's version number]] | 295 print [[server:version() - Show the server's version number]] |
295 print [[server:uptime() - Show how long the server has been running]] | 296 print [[server:uptime() - Show how long the server has been running]] |
296 print [[server:memory() - Show details about the server's memory usage]] | 297 print [[server:memory() - Show details about the server's memory usage]] |
297 print [[server:shutdown(reason) - Shut down the server, with an optional reason to be broadcast to all connections]] | 298 print [[server:shutdown(reason) - Shut down the server, with an optional reason to be broadcast to all connections]] |
1411 else | 1412 else |
1412 return true, ("%d out of %d occupant%s listed"):format(displayed, total, total ~= 1 and "s" or "") | 1413 return true, ("%d out of %d occupant%s listed"):format(displayed, total, total ~= 1 and "s" or "") |
1413 end | 1414 end |
1414 end | 1415 end |
1415 | 1416 |
1417 function def_env.muc:affiliations(room_jid, filter) | |
1418 local room_name, host = check_muc(room_jid); | |
1419 if not room_name then | |
1420 return room_name, host; | |
1421 end | |
1422 local room_obj = prosody.hosts[host].modules.muc.get_room_from_jid(room_jid); | |
1423 if not room_obj then | |
1424 return nil, "No such room: " .. room_jid; | |
1425 end | |
1426 | |
1427 local print = self.session.print; | |
1428 local total, displayed = 0, 0; | |
1429 for affiliated_jid, affiliation, affiliation_data in room_obj:each_affiliation() do | |
1430 if filter == nil or affiliation == filter or affiliated_jid:find(filter, 1, true) then | |
1431 print(affiliation, affiliated_jid, affiliation_data and affiliation_data.reserved_nickname or "") | |
1432 displayed = displayed + 1; | |
1433 end | |
1434 total = total + 1 | |
1435 end | |
1436 | |
1437 if total == displayed then | |
1438 return true, ("%d affiliation%s listed"):format(total, total ~= 1 and "s" or "") | |
1439 else | |
1440 return true, ("%d out of %d affiliation%s listed"):format(displayed, total, total ~= 1 and "s" or "") | |
1441 end | |
1442 end | |
1443 | |
1416 local um = require"core.usermanager"; | 1444 local um = require"core.usermanager"; |
1417 | 1445 |
1418 def_env.user = {}; | 1446 def_env.user = {}; |
1419 function def_env.user:create(jid, password, role) | 1447 function def_env.user:create(jid, password, role) |
1420 local username, host = jid_split(jid); | 1448 local username, host = jid_split(jid); |