Wed Mar 28 17:01:42 CEST 2007 Remko Troncon * XEP-0076. diff -rN -u old-psi/iris/include/im.h new-psi/iris/include/im.h --- old-psi/iris/include/im.h 2007-03-28 17:02:22.000000000 +0200 +++ new-psi/iris/include/im.h 2007-03-28 17:02:22.000000000 +0200 @@ -249,6 +249,9 @@ const QString& mucPassword() const; void setMUCPassword(const QString&); + // XEP-076: Malicious stanzas + void setEvil(); + // Obsolete invitation QString invite() const; void setInvite(const QString &s); diff -rN -u old-psi/iris/include/xmpp_status.h new-psi/iris/include/xmpp_status.h --- old-psi/iris/include/xmpp_status.h 2007-03-28 17:02:22.000000000 +0200 +++ new-psi/iris/include/xmpp_status.h 2007-03-28 17:02:22.000000000 +0200 @@ -93,6 +93,10 @@ void setXSigned(const QString &); void setSongTitle(const QString &); + + // XEP-076: Malicious stanzas + void setEvil(); + bool isEvil() const; // JEP-153: VCard-based Avatars const QString& photoHash() const; @@ -121,6 +125,8 @@ QString v_mucPassword; int v_mucHistoryMaxChars, v_mucHistoryMaxStanzas, v_mucHistorySeconds; + bool v_evil; + int ecode; QString estr; }; diff -rN -u old-psi/iris/xmpp-im/types.cpp new-psi/iris/xmpp-im/types.cpp --- old-psi/iris/xmpp-im/types.cpp 2007-03-28 17:02:22.000000000 +0200 +++ new-psi/iris/xmpp-im/types.cpp 2007-03-28 17:02:22.000000000 +0200 @@ -981,6 +981,7 @@ int mucHistoryMaxChars, mucHistoryMaxStanzas, mucHistorySeconds; bool spooled, wasEncrypted; + bool evil; }; //! \brief Constructs Message with given Jid information. @@ -1001,6 +1002,7 @@ d->errorCode = -1;*/ d->chatState = StateNone; d->mucStatus = -1; + d->evil = false; } //! \brief Constructs a copy of Message object @@ -1380,6 +1382,11 @@ d->mucPassword = p; } +void Message::setEvil() +{ + d->evil = true; +} + QString Message::invite() const { return d->invite; @@ -1617,6 +1624,9 @@ e.appendChild(d->mucDecline.toXml(s.doc())); s.appendChild(e); } + + if(d->evil) + s.appendChild(s.createElement("http://jabber.org/protocol/evil", "evil")); // http auth if(!d->httpAuthRequest.isEmpty()) { @@ -2066,6 +2076,7 @@ v_mucHistoryMaxChars = -1; v_mucHistoryMaxStanzas = -1; v_mucHistorySeconds = -1; + v_evil = false; ecode = -1; } @@ -2082,6 +2093,7 @@ v_mucHistoryMaxChars = -1; v_mucHistoryMaxStanzas = -1; v_mucHistorySeconds = -1; + v_evil = false; ecode = -1; setType(type); } @@ -2185,6 +2197,16 @@ v_songTitle = _songtitle; } +void Status::setEvil() +{ + v_evil = true; +} + +bool Status::isEvil() const +{ + return v_evil; +} + void Status::setCapsNode(const QString & _capsNode) { v_capsNode = _capsNode; diff -rN -u old-psi/iris/xmpp-im/xmpp_tasks.cpp new-psi/iris/xmpp-im/xmpp_tasks.cpp --- old-psi/iris/xmpp-im/xmpp_tasks.cpp 2007-03-28 17:02:22.000000000 +0200 +++ new-psi/iris/xmpp-im/xmpp_tasks.cpp 2007-03-28 17:02:22.000000000 +0200 @@ -606,6 +606,12 @@ tag.appendChild(m); } } + + if(s.isEvil()) { + QDomElement evil = doc()->createElement("evil"); + evil.setAttribute("xmlns","http://jabber.org/protocol/evil"); + tag.appendChild(evil); + } } void JT_Presence::pres(const Jid &to, const Status &s) diff -rN -u old-psi/options/default.xml new-psi/options/default.xml --- old-psi/options/default.xml 2007-03-28 17:02:22.000000000 +0200 +++ new-psi/options/default.xml 2007-03-28 17:02:23.000000000 +0200 @@ -23,6 +23,11 @@ true + + proprietary + closed source + Jabber sucks + true diff -rN -u old-psi/src/psiaccount.cpp new-psi/src/psiaccount.cpp --- old-psi/src/psiaccount.cpp 2007-03-28 17:02:22.000000000 +0200 +++ new-psi/src/psiaccount.cpp 2007-03-28 17:02:23.000000000 +0200 @@ -2103,6 +2103,10 @@ s.setCapsExt(d->client->capsExt()); } + // Add XEP-0076 information + if (QRegExp(PsiOptions::instance()->getOption("options.evil").toStringList().join("|"),Qt::CaseInsensitive).indexIn(s.status()) >= 0) + s.setEvil(); + // Set the status d->loginStatus = s; d->client->setPresence(s); @@ -3214,6 +3218,9 @@ } } + if (QRegExp(PsiOptions::instance()->getOption("options.evil").toStringList().join("|"),Qt::CaseInsensitive).indexIn(nm.body()) >= 0) + nm.setEvil(); + d->client->sendMessage(nm); // only toggle if not an invite or body is not empty