cosmetic cleanup of files in xmpp directory
[citadel.git] / citadel / modules / xmpp / serv_xmpp.c
index 3248a11cb39bbbf98b1281ec78082c10d3da3774..07188c2e948594fb57c25c8aea4cce9e5dee5e1c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * XMPP (Jabber) service for the Citadel system
- * Copyright (c) 2007-2017 by Art Cancro and citadel.org
+ * Copyright (c) 2007-2018 by Art Cancro and citadel.org
  *
  * This program is open source software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -57,6 +57,9 @@
 #include "ctdl_module.h"
 #include "serv_xmpp.h"
 
+/* uncomment for more verbosity - it will log all received XML tags */
+#define XMPP_XML_DEBUG
+
 /* XML_StopParser is present in expat 2.x */
 #if XML_MAJOR_VERSION > 1
 #define HAVE_XML_STOPPARSER
@@ -64,9 +67,6 @@
 
 struct xmpp_event *xmpp_queue = NULL;
 
-
-
-
 #ifdef HAVE_XML_STOPPARSER
 /* Stop the parser if an entity declaration is hit. */
 static void xmpp_entity_declaration(void *userData, const XML_Char *entityName,
@@ -81,7 +81,6 @@ static void xmpp_entity_declaration(void *userData, const XML_Char *entityName,
 #endif
 
 
-
 /*
  * Given a source string and a target buffer, returns the string
  * properly escaped for insertion into an XML stream.  Returns a
@@ -92,20 +91,21 @@ static inline int Ctdl_GetUtf8SequenceLength(const char *CharS, const char *Char
        int n = 0;
         unsigned char test = (1<<7);
 
-       if ((*CharS & 0xC0) != 0xC0) 
+       if ((*CharS & 0xC0) != 0xC0) {
                return 1;
+       }
 
-       while ((n < 8) && 
-              ((test & ((unsigned char)*CharS)) != 0)) 
-       {
+       while ((n < 8) && ((test & ((unsigned char)*CharS)) != 0))  {
                test = test >> 1;
                n ++;
        }
-       if ((n > 6) || ((CharE - CharS) < n))
+       if ((n > 6) || ((CharE - CharS) < n)) {
                n = 0;
+       }
        return n;
 }
 
+
 char *xmlesc(char *buf, char *str, int bufsiz)
 {
        int IsUtf8Sequence;
@@ -238,12 +238,12 @@ void xmpp_xml_start(void *data, const char *supplied_el, const char **attr) {
                strcpy(el, ++sep);
        }
 
-       /*
+#ifdef XMPP_XML_DEBUG
        syslog(LOG_DEBUG, "xmpp: ELEMENT START: <%s>", el);
        for (i=0; attr[i] != NULL; i+=2) {
                syslog(LOG_DEBUG, "xmpp: Attribute '%s' = '%s'", attr[i], attr[i+1]);
        }
-       uncomment for more verbosity */
+#endif
 
        if (!strcasecmp(el, "stream")) {
                xmpp_stream_start(data, supplied_el, attr);
@@ -298,7 +298,6 @@ void xmpp_xml_start(void *data, const char *supplied_el, const char **attr) {
 }
 
 
-
 void xmpp_xml_end(void *data, const char *supplied_el) {
        char el[256];
        char *sep = NULL;
@@ -310,33 +309,30 @@ void xmpp_xml_end(void *data, const char *supplied_el) {
                strcpy(el, ++sep);
        }
 
-       /*
+#ifdef XMPP_XML_DEBUG
        syslog(LOG_DEBUG, "xmpp: ELEMENT END  : <%s>", el);
        if (XMPP->chardata_len > 0) {
                syslog(LOG_DEBUG, "xmpp: chardata: %s", XMPP->chardata);
        }
-       uncomment for more verbosity */
+#endif
 
        if (!strcasecmp(el, "resource")) {
                if (XMPP->chardata_len > 0) {
-                       safestrncpy(XMPP->iq_client_resource, XMPP->chardata,
-                               sizeof XMPP->iq_client_resource);
+                       safestrncpy(XMPP->iq_client_resource, XMPP->chardata, sizeof XMPP->iq_client_resource);
                        striplt(XMPP->iq_client_resource);
                }
        }
 
        else if (!strcasecmp(el, "username")) {         /* NON SASL ONLY */
                if (XMPP->chardata_len > 0) {
-                       safestrncpy(XMPP->iq_client_username, XMPP->chardata,
-                               sizeof XMPP->iq_client_username);
+                       safestrncpy(XMPP->iq_client_username, XMPP->chardata, sizeof XMPP->iq_client_username);
                        striplt(XMPP->iq_client_username);
                }
        }
 
        else if (!strcasecmp(el, "password")) {         /* NON SASL ONLY */
                if (XMPP->chardata_len > 0) {
-                       safestrncpy(XMPP->iq_client_password, XMPP->chardata,
-                               sizeof XMPP->iq_client_password);
+                       safestrncpy(XMPP->iq_client_password, XMPP->chardata, sizeof XMPP->iq_client_password);
                        striplt(XMPP->iq_client_password);
                }
        }
@@ -352,8 +348,7 @@ void xmpp_xml_end(void *data, const char *supplied_el) {
                         * Query on a namespace
                         */
                        if (!IsEmptyStr(XMPP->iq_query_xmlns)) {
-                               xmpp_query_namespace(XMPP->iq_id, XMPP->iq_from,
-                                               XMPP->iq_to, XMPP->iq_query_xmlns);
+                               xmpp_query_namespace(XMPP->iq_id, XMPP->iq_from, XMPP->iq_to, XMPP->iq_query_xmlns);
                        }
 
                        /*
@@ -395,8 +390,7 @@ void xmpp_xml_end(void *data, const char *supplied_el) {
                        xmpp_non_sasl_authenticate(
                                XMPP->iq_id,
                                XMPP->iq_client_username,
-                               XMPP->iq_client_password,
-                               XMPP->iq_client_resource
+                               XMPP->iq_client_password
                        );
                }       
 
@@ -406,20 +400,18 @@ void xmpp_xml_end(void *data, const char *supplied_el) {
                else if (
                        (XMPP->bind_requested)
                        && (!IsEmptyStr(XMPP->iq_id))
-                       && (!IsEmptyStr(XMPP->iq_client_resource))
                        && (CC->logged_in)
-                       ) {
+               ) {
 
-                       /* Generate the "full JID" of the client resource */
+                       /* If the client has not specified a client resource, generate one */
+                       if (IsEmptyStr(XMPP->iq_client_resource)) {
+                               snprintf(XMPP->iq_client_resource, sizeof XMPP->iq_client_resource, "%d", CC->cs_pid);
+                       }
 
-                       snprintf(XMPP->client_jid, sizeof XMPP->client_jid,
-                               "%s/%s",
-                               CC->cs_inet_email,
-                               XMPP->iq_client_resource
-                       );
+                       /* Generate the "full JID" of the client (user@host/resource) */
+                       snprintf(XMPP->client_jid, sizeof XMPP->client_jid, "%s/%s", CC->cs_inet_email, XMPP->iq_client_resource);
 
                        /* Tell the client what its JID is */
-
                        cprintf("<iq type=\"result\" id=\"%s\">", xmlesc(xmlbuf, XMPP->iq_id, sizeof xmlbuf));
                        cprintf("<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\">");
                        cprintf("<jid>%s</jid>", xmlesc(xmlbuf, XMPP->client_jid, sizeof xmlbuf));
@@ -434,8 +426,9 @@ void xmpp_xml_end(void *data, const char *supplied_el) {
 
                else {
                        cprintf("<iq type=\"error\" id=\"%s\">", xmlesc(xmlbuf, XMPP->iq_id, sizeof xmlbuf));
-                       cprintf("<error>Don't know howto do '%s'!</error>", xmlesc(xmlbuf, XMPP->iq_type, sizeof xmlbuf));
+                       cprintf("<error>Don't know how to do '%s'!</error>", xmlesc(xmlbuf, XMPP->iq_type, sizeof xmlbuf));
                        cprintf("</iq>");
+                       syslog(LOG_DEBUG, "XMPP: don't know how to do iq_type='%s' with iq_query_xmlns='%s'", XMPP->iq_type, XMPP->iq_query_xmlns);
                }
 
                /* Now clear these fields out so they don't get used by a future stanza */
@@ -571,7 +564,6 @@ void xmpp_cleanup_function(void) {
 }
 
 
-
 /*
  * Here's where our XMPP session begins its happy day.
  */