Search in sources :

Example 1 with ServiceDiscoveryManager

use of org.jivesoftware.smackx.ServiceDiscoveryManager in project ecf by eclipse.

the class MultiUserChat method getHostedRooms.

/**
 * Returns a collection of HostedRooms where each HostedRoom has the XMPP address of the room
 * and the room's name. Once discovered the rooms hosted by a chat service it is possible to
 * discover more detailed room information or join the room.
 *
 * @param connection the XMPP connection to use for discovering hosted rooms by the MUC service.
 * @param serviceName the service that is hosting the rooms to discover.
 * @return a collection of HostedRooms.
 * @throws XMPPException if an error occured while trying to discover the information.
 */
public static Collection<HostedRoom> getHostedRooms(Connection connection, String serviceName) throws XMPPException {
    List<HostedRoom> answer = new ArrayList<HostedRoom>();
    ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection);
    DiscoverItems items = discoManager.discoverItems(serviceName);
    for (Iterator<DiscoverItems.Item> it = items.getItems(); it.hasNext(); ) {
        answer.add(new HostedRoom(it.next()));
    }
    return answer;
}
Also used : ArrayList(java.util.ArrayList) DiscoverItems(org.jivesoftware.smackx.packet.DiscoverItems) ServiceDiscoveryManager(org.jivesoftware.smackx.ServiceDiscoveryManager)

Example 2 with ServiceDiscoveryManager

use of org.jivesoftware.smackx.ServiceDiscoveryManager in project ecf by eclipse.

the class UserSearchManager method getSearchServices.

/**
 * Returns a collection of search services found on the server.
 *
 * @return a Collection of search services found on the server.
 * @throws XMPPException thrown if a server error has occurred.
 */
public Collection<String> getSearchServices() throws XMPPException {
    final List<String> searchServices = new ArrayList<String>();
    ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(con);
    DiscoverItems items = discoManager.discoverItems(con.getServiceName());
    Iterator<DiscoverItems.Item> iter = items.getItems();
    while (iter.hasNext()) {
        DiscoverItems.Item item = iter.next();
        try {
            DiscoverInfo info;
            try {
                info = discoManager.discoverInfo(item.getEntityID());
            } catch (XMPPException e) {
                // Ignore Case
                continue;
            }
            if (info.containsFeature("jabber:iq:search")) {
                searchServices.add(item.getEntityID());
            }
        } catch (Exception e) {
            // No info found.
            break;
        }
    }
    return searchServices;
}
Also used : DiscoverInfo(org.jivesoftware.smackx.packet.DiscoverInfo) ArrayList(java.util.ArrayList) DiscoverItems(org.jivesoftware.smackx.packet.DiscoverItems) XMPPException(org.jivesoftware.smack.XMPPException) XMPPException(org.jivesoftware.smack.XMPPException) ServiceDiscoveryManager(org.jivesoftware.smackx.ServiceDiscoveryManager)

Example 3 with ServiceDiscoveryManager

use of org.jivesoftware.smackx.ServiceDiscoveryManager in project ecf by eclipse.

the class FileTransferNegotiator method isServiceEnabled.

/**
 * Checks to see if all file transfer related services are enabled on the
 * connection.
 *
 * @param connection The connection to check
 * @return True if all related services are enabled, false if they are not.
 */
public static boolean isServiceEnabled(final Connection connection) {
    ServiceDiscoveryManager manager = ServiceDiscoveryManager.getInstanceFor(connection);
    List<String> namespaces = new ArrayList<String>();
    namespaces.addAll(Arrays.asList(NAMESPACE));
    namespaces.add(InBandBytestreamManager.NAMESPACE);
    if (!IBB_ONLY) {
        namespaces.add(Socks5BytestreamManager.NAMESPACE);
    }
    for (String namespace : namespaces) {
        if (!manager.includesFeature(namespace)) {
            return false;
        }
    }
    return true;
}
Also used : ArrayList(java.util.ArrayList) ServiceDiscoveryManager(org.jivesoftware.smackx.ServiceDiscoveryManager)

Example 4 with ServiceDiscoveryManager

use of org.jivesoftware.smackx.ServiceDiscoveryManager in project ecf by eclipse.

the class FileTransferNegotiator method setServiceEnabled.

/**
 * Enable the Jabber services related to file transfer on the particular
 * connection.
 *
 * @param connection The connection on which to enable or disable the services.
 * @param isEnabled  True to enable, false to disable.
 */
public static void setServiceEnabled(final Connection connection, final boolean isEnabled) {
    ServiceDiscoveryManager manager = ServiceDiscoveryManager.getInstanceFor(connection);
    List<String> namespaces = new ArrayList<String>();
    namespaces.addAll(Arrays.asList(NAMESPACE));
    namespaces.add(InBandBytestreamManager.NAMESPACE);
    if (!IBB_ONLY) {
        namespaces.add(Socks5BytestreamManager.NAMESPACE);
    }
    for (String namespace : namespaces) {
        if (isEnabled) {
            if (!manager.includesFeature(namespace)) {
                manager.addFeature(namespace);
            }
        } else {
            manager.removeFeature(namespace);
        }
    }
}
Also used : ArrayList(java.util.ArrayList) ServiceDiscoveryManager(org.jivesoftware.smackx.ServiceDiscoveryManager)

Example 5 with ServiceDiscoveryManager

use of org.jivesoftware.smackx.ServiceDiscoveryManager in project ecf by eclipse.

the class Socks5BytestreamManager method determineProxies.

/**
 * Returns a list of JIDs of SOCKS5 proxies by querying the XMPP server. The SOCKS5 proxies are
 * in the same order as returned by the XMPP server.
 *
 * @return list of JIDs of SOCKS5 proxies
 * @throws XMPPException if there was an error querying the XMPP server for SOCKS5 proxies
 */
private List<String> determineProxies() throws XMPPException {
    ServiceDiscoveryManager serviceDiscoveryManager = ServiceDiscoveryManager.getInstanceFor(this.connection);
    List<String> proxies = new ArrayList<String>();
    // get all items form XMPP server
    DiscoverItems discoverItems = serviceDiscoveryManager.discoverItems(this.connection.getServiceName());
    Iterator<Item> itemIterator = discoverItems.getItems();
    // query all items if they are SOCKS5 proxies
    while (itemIterator.hasNext()) {
        Item item = itemIterator.next();
        // skip blacklisted servers
        if (this.proxyBlacklist.contains(item.getEntityID())) {
            continue;
        }
        try {
            DiscoverInfo proxyInfo;
            proxyInfo = serviceDiscoveryManager.discoverInfo(item.getEntityID());
            Iterator<Identity> identities = proxyInfo.getIdentities();
            // item must have category "proxy" and type "bytestream"
            while (identities.hasNext()) {
                Identity identity = identities.next();
                if ("proxy".equalsIgnoreCase(identity.getCategory()) && "bytestreams".equalsIgnoreCase(identity.getType())) {
                    proxies.add(item.getEntityID());
                    break;
                }
                /*
                     * server is not a SOCKS5 proxy, blacklist server to skip next time a Socks5
                     * bytestream should be established
                     */
                this.proxyBlacklist.add(item.getEntityID());
            }
        } catch (XMPPException e) {
            // blacklist errornous server
            this.proxyBlacklist.add(item.getEntityID());
        }
    }
    return proxies;
}
Also used : Item(org.jivesoftware.smackx.packet.DiscoverItems.Item) DiscoverInfo(org.jivesoftware.smackx.packet.DiscoverInfo) ArrayList(java.util.ArrayList) DiscoverItems(org.jivesoftware.smackx.packet.DiscoverItems) Identity(org.jivesoftware.smackx.packet.DiscoverInfo.Identity) XMPPException(org.jivesoftware.smack.XMPPException) ServiceDiscoveryManager(org.jivesoftware.smackx.ServiceDiscoveryManager)

Aggregations

ServiceDiscoveryManager (org.jivesoftware.smackx.ServiceDiscoveryManager)11 ArrayList (java.util.ArrayList)6 DiscoverItems (org.jivesoftware.smackx.packet.DiscoverItems)6 DiscoverInfo (org.jivesoftware.smackx.packet.DiscoverInfo)5 XMPPException (org.jivesoftware.smack.XMPPException)3 Iterator (java.util.Iterator)1 XMPPConnection (org.jivesoftware.smack.XMPPConnection)1 Identity (org.jivesoftware.smackx.packet.DiscoverInfo.Identity)1 Item (org.jivesoftware.smackx.packet.DiscoverItems.Item)1