X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fjabber%2Fxmpp_query_namespace.c;h=84f49be10e321393aa5ecf2ee5a5b005965d5167;hb=a2fda4eafb51bbf58c04471522aa2d0f116c797e;hp=30b8d1680eab311c547c25867705659efaf70116;hpb=0a1e8f39d1e1d65d1d7811b3cbc641fcf47c04c8;p=citadel.git diff --git a/citadel/modules/jabber/xmpp_query_namespace.c b/citadel/modules/jabber/xmpp_query_namespace.c index 30b8d1680..84f49be10 100644 --- a/citadel/modules/jabber/xmpp_query_namespace.c +++ b/citadel/modules/jabber/xmpp_query_namespace.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include "citadel.h" #include "server.h" @@ -42,12 +43,21 @@ #include "internet_addressing.h" #include "md5.h" #include "ctdl_module.h" - -#ifdef HAVE_EXPAT -#include #include "serv_xmpp.h" +/* + * Output a single roster item, for roster queries or pushes + */ +void jabber_roster_item(struct CitContext *cptr) { + cprintf("", + cptr->cs_inet_email, + cptr->user.fullname + ); + cprintf("%s", config.c_humannode); + cprintf(""); +} + /* * Return the results for a "jabber:iq:roster:query" * @@ -58,25 +68,26 @@ void jabber_iq_roster_query(void) { struct CitContext *cptr; + int nContexts, i; int aide = (CC->user.axlevel >= 6); cprintf(""); - for (cptr = ContextList; cptr != NULL; cptr = cptr->next) { - - if ( - (((cptr->cs_flags&CS_STEALTH)==0) || (aide)) - && (cptr->user.usernum != CC->user.usernum) - ) { - cprintf("", - cptr->cs_inet_email, - cptr->user.fullname - ); - cprintf("%s", config.c_humannode); - cprintf(""); + cptr = CtdlGetContextArray(&nContexts); + if (!cptr) + return ; /** FIXME: Does jabber need to send something to maintain the protocol? */ + + for (i=0; iuser.usernum) + ) { + jabber_roster_item(&cptr[i]); + } } } - + free (cptr); cprintf(""); } @@ -92,7 +103,7 @@ xmpp_query_namespace(purple5b5c1e5a, , vcard-temp:query) void xmpp_query_namespace(char *iq_id, char *iq_from, char *iq_to, char *query_xmlns) { - lprintf(CTDL_DEBUG, "xmpp_query_namespace(%s, %s, %s, %s)\n", iq_id, iq_from, iq_to, query_xmlns); + CtdlLogPrintf(CTDL_DEBUG, "xmpp_query_namespace(%s, %s, %s, %s)\n", iq_id, iq_from, iq_to, query_xmlns); /* * Beginning of query result. @@ -106,10 +117,18 @@ void xmpp_query_namespace(char *iq_id, char *iq_from, char *iq_to, char *query_x /* * Is this a query we know how to handle? */ + if (!strcasecmp(query_xmlns, "jabber:iq:roster:query")) { jabber_iq_roster_query(); } + else if (!strcasecmp(query_xmlns, "jabber:iq:auth:query")) { + cprintf("" + "" + "" + ); + } + /* * End of query result. If we didn't hit any known namespaces then we will * have simply delivered an empty result stanza, which should be ok. @@ -117,5 +136,3 @@ void xmpp_query_namespace(char *iq_id, char *iq_from, char *iq_to, char *query_x cprintf(""); } - -#endif /* HAVE_EXPAT */