@@ 953,11 953,15 @@ void BiboumiComponent::send_self_disco_info(const std::string& id, const std::st
iq["from"] = this->served_hostname;
XmlSubNode query(iq, "query");
query["xmlns"] = DISCO_INFO_NS;
+ XmlSubNode gwid(query, "identity");
+ gwid["category"] = "gateway";
+ gwid["type"] = "irc";
+ gwid["name"] = "Biboumi";
XmlSubNode identity(query, "identity");
identity["category"] = "conference";
identity["type"] = "irc";
identity["name"] = "Biboumi XMPP-IRC gateway";
- for (const char *ns: {DISCO_INFO_NS, MUC_NS, ADHOC_NS, PING_NS, MAM_NS, VERSION_NS, STABLE_MUC_ID_NS})
+ for (const char *ns: {DISCO_INFO_NS, CAPS_NS, MUC_NS, ADHOC_NS, PING_NS, MAM_NS, VERSION_NS, STABLE_MUC_ID_NS})
{
XmlSubNode feature(query, "feature");
feature["var"] = ns;
@@ 1194,6 1198,14 @@ void BiboumiComponent::send_presence_to_contact(const std::string& from, const s
presence["type"] = type;
if (!id.empty())
presence["id"] = id;
+
+ if (type.empty() && from == this->served_hostname) {
+ XmlSubNode c(presence, "c");
+ c["xmlns"] = CAPS_NS;
+ c["hash"] = "sha-1";
+ c["node"] = "https://biboumi.louiz.org/";
+ c["ver"] = "m8CzZQt9wVuZlrV5a/vZYk/zAN0=";
+ }
this->send_stanza(presence);
}
@@ 16,6 16,7 @@
#define STREAM_NS "http://etherx.jabber.org/streams"
#define COMPONENT_NS "jabber:component:accept"
+#define CAPS_NS "http://jabber.org/protocol/caps"
#define MUC_NS "http://jabber.org/protocol/muc"
#define MUC_USER_NS MUC_NS"#user"
#define MUC_ADMIN_NS MUC_NS"#admin"