[ADD/FIX/WIP] "Fix" concurrency, prepare XEP-0421

I'll need to break down my commits more...
This commit is contained in:
LDA 2024-07-18 15:50:19 +02:00
commit 63c1bc819e
14 changed files with 356 additions and 162 deletions

View file

@ -240,4 +240,14 @@ extern char * ParseeStringifyDate(uint64_t millis);
/* Generates the JID of the Parsee bridge user. */
extern char * ParseeJID(ParseeData *data);
extern char * ParseeMXID(ParseeData *data);
/** Prints an _fatal_ and _strange_, error message, then congratulates
* the user for it(an "achievement").
* Use this for errors that have _no business_ happening, at all.
* NOTE to users: If you see this, _*OPEN AN ISSUE*_.
* ---------------------------------------------------
* Returns: NOTHING | NORETURN */
extern void ParseeAchievement(const char *func, const char *msg, bool die);
#define Achievement(msg, die) ParseeAchievement(__func__, msg, die)
#endif

View file

@ -98,4 +98,8 @@ extern char * XMPPGenerateVer(void);
extern void XMPPAnnotatePresence(XMLElement *presence);
extern bool XMPPHasError(XMLElement *stanza, char *type);
extern XMLElement * XMPPSendDisco(XMPPComponent *jabber, char *from, char *to);
extern bool XMPPDiscoAdvertises(XMLElement *disco, char *var);
#endif

View file

@ -94,35 +94,6 @@ extern bool XMPPManageCommand(XMPPCommandManager *m, XMLElement *stanza, ParseeD
/* --------------------------------- COMMANDS --------------------------------- */
/* Please edit stc/XMPPThread.c (you can just force-save) for these to apply! */
#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", { \
XMPPOption *glob = XMPPCreateText(true, "glob", ""); \
XMPPSetDescription(glob, "Glob pattern to set as admin"); \
XMPPAddOption(cmd, glob); \
\
XMPPSetFormTitle(cmd, "Admin addition form"); \
XMPPSetFormInstruction(cmd, "Select a glob pattern to add as an admin"); \
}) \
XMPP_COMMAND(DelAdminCallback, "del-admin", "Removes a glob from admin rights", { \
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", { \
XMPPOption *entity = XMPPCreateText(true, "entity", ""); \
XMPPOption *reason = XMPPCreateText(false, "reason", "Not behaving"); \
XMPPSetDescription(entity, "Entity(glob) to no-fly"); \
XMPPAddOption(cmd, entity); \
XMPPSetDescription(reason, "Reason for the no-fly"); \
XMPPAddOption(cmd, reason); \
\
XMPPSetFormTitle(cmd, "No-fly addition form"); \
XMPPSetFormInstruction(cmd, "Select a glob pattern to add to the nofly"); \
}) \
#define XMPP_COMMAND(f,n,t,s) \
extern void \
@ -132,7 +103,7 @@ extern bool XMPPManageCommand(XMPPCommandManager *m, XMLElement *stanza, ParseeD
extern void \
Form##f(XMPPCommandManager *, XMPPCommand *, char *); \
XMPPCOMMANDS
#include "XMPPCommands.x"
#undef XMPP_COMMAND
#endif

View file

@ -0,0 +1,32 @@
/* C X-macro file */
#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", { \
XMPPOption *glob = XMPPCreateText(true, "glob", ""); \
XMPPSetDescription(glob, "Glob pattern to set as admin"); \
XMPPAddOption(cmd, glob); \
\
XMPPSetFormTitle(cmd, "Admin addition form"); \
XMPPSetFormInstruction(cmd, "Select a glob pattern to add as an admin"); \
}) \
XMPP_COMMAND(DelAdminCallback, "del-admin", "Removes a glob from admin rights", { \
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", { \
XMPPOption *entity = XMPPCreateText(true, "entity", ""); \
XMPPOption *reason = XMPPCreateText(false, "reason", "Not behaving"); \
XMPPSetDescription(entity, "Entity(glob) to no-fly"); \
XMPPAddOption(cmd, entity); \
XMPPSetDescription(reason, "Reason for the no-fly"); \
XMPPAddOption(cmd, reason); \
\
XMPPSetFormTitle(cmd, "No-fly addition form"); \
XMPPSetFormInstruction(cmd, "Select a glob pattern to add to the nofly"); \
}) \
XMPPCOMMANDS