[ADD] Filtering XMPP commands

This allows us to have commands apply to admins or MUCs only(which would
help with many things I want to implement).
This commit is contained in:
LDA 2024-10-27 19:08:37 +01:00
commit 9a16d96323
9 changed files with 127 additions and 31 deletions

View file

@ -1,10 +1,15 @@
/* C X-macro file */
typedef enum XMPPCommandFlags {
XMPPCMD_ALL = 0,
XMPPCMD_MUC , /* Only for MUCs */
XMPPCMD_ADMINS /* Only for administrators */
} XMPPCommandFlags;
#define XMPPCOMMANDS \
XMPP_COMMAND(StatusCallback, "stats", "Get Parsee statistics", {}) \
XMPP_COMMAND(CleanCallback, "clean", "Cleanup temporary Parsee data", {}) \
XMPP_COMMAND(AdminsCallback, "admin", "Get Parsee admin list", {}) \
XMPP_COMMAND(NoflyCallback, "nofly", "Get Parsee nofly list", {}) \
XMPP_COMMAND(AddAdminCallback, "add-admin", "Adds glob as admin", { \
XMPP_COMMAND(StatusCallback, XMPPCMD_ALL, "stats", "Get Parsee statistics", {}) \
XMPP_COMMAND(CleanCallback, XMPPCMD_ADMINS, "clean", "Cleanup temporary Parsee data", {}) \
XMPP_COMMAND(AdminsCallback, XMPPCMD_ALL, "admin", "Get Parsee admin list", {}) \
XMPP_COMMAND(NoflyCallback, XMPPCMD_ADMINS, "nofly", "Get Parsee nofly list", {}) \
XMPP_COMMAND(AddAdminCallback, XMPPCMD_ADMINS, "add-admin", "Adds glob as admin", { \
XMPPOption *glob = XMPPCreateText(true, "glob", ""); \
XMPPSetDescription(glob, "Glob pattern to set as admin"); \
XMPPAddOption(cmd, glob); \
@ -12,12 +17,12 @@
XMPPSetFormTitle(cmd, "Admin addition form"); \
XMPPSetFormInstruction(cmd, "Select a glob pattern to add as an admin"); \
}) \
XMPP_COMMAND(DelAdminCallback, "del-admin", "Removes glob from being admin", { \
XMPP_COMMAND(DelAdminCallback, XMPPCMD_ADMINS, "del-admin", "Removes glob from being admin", { \
XMPPCmdOptionsCreator(cmd, FormDelAdminCallback); \
XMPPSetFormTitle(cmd, "Admin removal form"); \
XMPPSetFormInstruction(cmd, "Select a glob pattern to remove as an admin"); \
}) \
XMPP_COMMAND(AddNoflyCallback, "add-nofly", "Adds user to nofly", { \
XMPP_COMMAND(AddNoflyCallback, XMPPCMD_ADMINS, "add-nofly", "Adds user to nofly", { \
XMPPOption *entity = XMPPCreateText(true, "entity", ""); \
XMPPOption *reason = XMPPCreateText(false, "reason", "Not behaving"); \
XMPPSetDescription(entity, "Entity(glob) to no-fly"); \
@ -28,8 +33,8 @@
XMPPSetFormTitle(cmd, "No-fly addition form"); \
XMPPSetFormInstruction(cmd, "Select a glob pattern to add to the nofly"); \
}) \
XMPP_COMMAND(ClearWhitelistCallback, "clear-wl", "Removes the chat whitelist", {}) \
XMPP_COMMAND(AddWhitelistCallback, "add-wl", "Adds server to chat whitelist", { \
XMPP_COMMAND(ClearWhitelistCallback, XMPPCMD_ADMINS, "clear-wl", "Removes the chat whitelist", {}) \
XMPP_COMMAND(AddWhitelistCallback, XMPPCMD_ADMINS, "add-wl", "Adds server to chat whitelist", { \
XMPPOption *serv = XMPPCreateText(true, "entity", ""); \
XMPPSetDescription(serv, "Server to mark as admin"); \
XMPPAddOption(cmd, serv); \
@ -37,6 +42,6 @@
XMPPSetFormTitle(cmd, "Chatlist addition form"); \
XMPPSetFormInstruction(cmd, "Add a server to whitelist"); \
}) \
XMPP_COMMAND(WhitelistCallback, "wl", "Get Parsee's chat whitelist", {}) \
XMPP_COMMAND(WhitelistCallback, XMPPCMD_ADMINS, "wl", "Get Parsee's chat whitelist", {}) \
XMPPCOMMANDS