use of org.xmpp.packet.IQ in project Openfire by igniterealtime.
the class IQRosterPayloadProcessor method sendRosterToComponent.
private void sendRosterToComponent(IQ requestPacket, Collection<RosterItem> items, String subdomain) {
IQ response = IQ.createResultIQ(requestPacket);
response.setTo(subdomain);
Element query = new DefaultElement(QName.get("query", "jabber:iq:roster"));
for (RosterItem i : items) {
String jid = i.getJid().toString();
if (!jid.equals(subdomain) && jid.contains(subdomain)) {
Log.debug("Roster exchange for external component " + subdomain + ". Sending user " + i.getJid().toString());
Element item = new DefaultElement("item", null);
item.add(new DefaultAttribute("jid", i.getJid().toString()));
item.add(new DefaultAttribute("name", i.getNickname()));
item.add(new DefaultAttribute("subscription", "both"));
for (String s : i.getGroups()) {
Element group = new DefaultElement("group");
group.setText(s);
item.add(group);
}
query.add(item);
}
}
response.setChildElement(query);
dispatchPacket(response);
}
use of org.xmpp.packet.IQ in project Openfire by igniterealtime.
the class IQRosterPayloadProcessor method process.
@Override
public void process(Packet packet, String subdomain, String to, String from) throws PacketRejectedException {
Log.debug("Processing packet in IQRosterPayloadProcessor for " + subdomain + " : " + packet.toString());
IQ myPacket = (IQ) packet;
String username = getUsernameFromJid(to);
if (myPacket.getType().equals(IQ.Type.get)) {
handleIQget(myPacket, subdomain, username);
} else if (myPacket.getType().equals(IQ.Type.set)) {
handleIQset(myPacket, subdomain, username);
}
}
use of org.xmpp.packet.IQ in project Openfire by igniterealtime.
the class IQRosterPayloadProcessor method sendEmptyRoster.
private void sendEmptyRoster(Packet requestPacket, String subdomain) {
IQ iq = (IQ) requestPacket;
IQ response = IQ.createResultIQ(iq);
response.setTo(subdomain);
Element query = new DefaultElement(QName.get("query", "jabber:iq:roster"));
response.setChildElement(query);
dispatchPacket(response);
}
use of org.xmpp.packet.IQ in project Openfire by igniterealtime.
the class MucFilterProcessor method process.
/**
* 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);
}
}
}
use of org.xmpp.packet.IQ in project Openfire by igniterealtime.
the class WhitelistProcessor method process.
/**
* If this is valid disco#items package for this Use-Case we iterate through
* the nodes and check if we have to remove nodes, this way they are not
* shown to the user receiving this disco#items.
*
* @param subdomain
* not the actual Subdomain here, as we have to use our set.
*/
@Override
public void process(Packet packet, String subdomain, String to, String from) throws PacketRejectedException {
IQ myPacket = (IQ) packet;
if (myPacket.getType().equals(IQ.Type.result) && (from.length() == 0 || from.equals(_server.getServerInfo().getXMPPDomain()))) {
Log.debug("Processing packet in Whitelistprocessor for " + to + "Packet: " + packet.toString());
Element root = myPacket.getChildElement();
List<Node> nodes = XpathHelper.findNodesInDocument(root.getDocument(), "//discoitems:item");
for (Node node : nodes) {
String node_domain = node.valueOf("@jid");
if (watchedSubdomains.contains(node_domain)) {
if (_permissions.isGatewayLimited(node_domain) && !_permissions.allowedForUser(node_domain, myPacket.getTo()))
root.remove(node);
}
}
}
}
Aggregations