bool ClientInfo::stanzaReadWrite(int AHandlerId, const Jid &AStreamJid, Stanza &AStanza, bool &AAccept) { if (AHandlerId == FVersionHandle) { AAccept = true; Stanza result = FStanzaProcessor->makeReplyResult(AStanza); QDomElement elem = result.addElement("query",NS_JABBER_VERSION); elem.appendChild(result.createElement("name")).appendChild(result.createTextNode(CLIENT_NAME)); if (FPluginManager->revisionDate().isValid()) { QString rev = FPluginManager->revisionDate().date().toString("yyyyMMdd"); elem.appendChild(result.createElement("version")).appendChild(result.createTextNode(QString("%1.%2 %3").arg(FPluginManager->version(),rev,CLIENT_VERSION_SUFFIX))); } else { elem.appendChild(result.createElement("version")).appendChild(result.createTextNode(QString("%1 %2").arg(FPluginManager->version(),CLIENT_VERSION_SUFFIX))); } if (Options::node(OPV_COMMON_SHAREOSVERSION).value().toBool()) elem.appendChild(result.createElement("os")).appendChild(result.createTextNode(osVersion())); if (FStanzaProcessor->sendStanzaOut(AStreamJid,result)) LOG_STRM_INFO(AStreamJid,QString("Software version sent to=%1").arg(AStanza.from())); else LOG_STRM_WARNING(AStreamJid,QString("Failed to send software version to=%1").arg(AStanza.from())); } else if (AHandlerId == FActivityHandler) { AAccept = true; Stanza result = FStanzaProcessor->makeReplyResult(AStanza); QDomElement elem = result.addElement("query",NS_JABBER_LAST); elem.setAttribute("seconds", SystemManager::systemIdle()); if (FStanzaProcessor->sendStanzaOut(AStreamJid,result)) LOG_STRM_INFO(AStreamJid,QString("Last activity sent to=%1").arg(AStanza.from())); else LOG_STRM_WARNING(AStreamJid,QString("Failed to send last activity to=%1").arg(AStanza.from())); } else if (AHandlerId == FTimeHandle) { AAccept = true; Stanza result = FStanzaProcessor->makeReplyResult(AStanza); QDomElement elem = result.addElement("time",NS_XMPP_TIME); DateTime dateTime(QDateTime::currentDateTime()); elem.appendChild(result.createElement("tzo")).appendChild(result.createTextNode(dateTime.toX85TZD())); elem.appendChild(result.createElement("utc")).appendChild(result.createTextNode(dateTime.toX85UTC())); if (FStanzaProcessor->sendStanzaOut(AStreamJid,result)) LOG_STRM_INFO(AStreamJid,QString("Current time sent to=%1").arg(AStanza.from())); else LOG_STRM_WARNING(AStreamJid,QString("Failed to send current time to=%1").arg(AStanza.from())); } else if (AHandlerId == FPingHandle) { AAccept = true; Stanza result = FStanzaProcessor->makeReplyResult(AStanza); if (FStanzaProcessor->sendStanzaOut(AStreamJid,result)) LOG_STRM_INFO(AStreamJid,QString("Ping answer sent to=%1").arg(AStanza.from())); else LOG_STRM_WARNING(AStreamJid,QString("Failed to send ping answer to=%1").arg(AStanza.from())); } else { REPORT_ERROR("Received unexpected stanza"); } return false; }