package org.jivesoftware.openfire.plugin.gojara.messagefilter.processors;
import java.util.List;
import org.dom4j.Element;
import org.dom4j.Node;
import org.jivesoftware.openfire.interceptor.PacketRejectedException;
import org.jivesoftware.openfire.plugin.gojara.utils.XpathHelper;
import org.xmpp.packet.IQ;
import org.xmpp.packet.Packet;
/**
* @author axel.frederik.brand
*/
public class MucFilterProcessor extends AbstractRemoteRosterProcessor {
public MucFilterProcessor() {
Log.info("Created MucFilterProcessor");
}
/**
* At this Point we know: MucBlock = true, !incoming, !processed Package is
* IQ with Namespace disco#info, from equals the watched subdomain given
* through subdomain
*/
@Override
public void process(Packet packet, String subdomain, String to, String from) throws PacketRejectedException {
IQ iqPacket = (IQ) packet;
if (iqPacket.getType().equals(IQ.Type.result) && to.length() > 0) {
Element root = iqPacket.getChildElement();
List<Node> nodes = XpathHelper.findNodesInDocument(root.getDocument(), "//disco:feature");
for (Node node : nodes) {
String var = node.valueOf("@var");
if (var.equals("http://jabber.org/protocol/muc"))
root.remove(node);
}
}
}
}