public String authenticateAnonymously() throws XMPPException { // Create the authentication packet we'll send to the server. Authentication auth = new Authentication(); PacketCollector collector = connection.createPacketCollector(new PacketIDFilter(auth.getPacketID())); // Send the packet. connection.sendPacket(auth); // Wait up to a certain number of seconds for a response from the server. IQ response = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout()); if (response == null) { throw new XMPPException("Anonymous login failed."); } else if (response.getType() == IQ.Type.ERROR) { throw new XMPPException(response.getError()); } // We're done with the collector, so explicitly cancel it. collector.cancel(); if (response.getTo() != null) { return response.getTo(); } else { return connection.getServiceName() + "/" + ((Authentication) response).getResource(); } }
private IQ parseIQ(Element doc) { Element pingEl = doc.element(Ping.ELEMENT); if (pingEl != null && pingEl.getNamespace().getURI().equals(Ping.NAMESPACE)) { return new Ping(doc); } Element bindEl = doc.element(Bind.ELEMENT); if (bindEl != null && bindEl.getNamespace().getURI().equals(Bind.NAMESPACE)) { return new Bind(doc); } Element query = doc.element("query"); if (query != null) { if ("jabber:iq:roster".equals(query.getNamespaceURI())) { return new Roster(doc); } if ("jabber:iq:auth".equals(query.getNamespaceURI())) { return new Authentication(doc); } } return new IQ(doc); }
private static Authentication parseAuthentication(XmlPullParser parser) throws Exception { Authentication authentication = new Authentication(); boolean done = false; while (!done) { int eventType = parser.next(); if (eventType == XmlPullParser.START_TAG) { if (parser.getName().equals("username")) { authentication.setUsername(parser.nextText()); } else if (parser.getName().equals("password")) { authentication.setPassword(parser.nextText()); } else if (parser.getName().equals("digest")) { authentication.setDigest(parser.nextText()); } else if (parser.getName().equals("resource")) { authentication.setResource(parser.nextText()); } } else if (eventType == XmlPullParser.END_TAG) { if (parser.getName().equals("query")) { done = true; } } } return authentication; }
public String authenticateAnonymously() throws XMPPException { // Create the authentication packet we'll send to the server. Authentication auth = new Authentication(); PacketCollector collector = connection .createPacketCollector(new PacketIDFilter(auth.getPacketID())); // Send the packet. connection.sendPacket(auth); // Wait up to a certain number of seconds for a response from the // server. IQ response = (IQ) collector.nextResult(SmackConfiguration .getPacketReplyTimeout()); if (response == null) { throw new XMPPException("Anonymous login failed."); } else if (response.getType() == IQ.Type.ERROR) { throw new XMPPException(response.getError()); } // We're done with the collector, so explicitly cancel it. collector.cancel(); if (response.getTo() != null) { return response.getTo(); } else { return connection.getServiceName() + "/" + ((Authentication) response).getResource(); } }
public String authenticateAnonymously() throws XMPPException { // Create the authentication packet we'll send to the server. Authentication auth = new Authentication(); PacketCollector collector = connection .createPacketCollector(new PacketIDFilter(auth.getID())); // Send the packet. connection.sendPacket(auth); // Wait up to a certain number of seconds for a response from the // server. IQ response = (IQ) collector.nextResult(SmackConfiguration .getPacketReplyTimeout()); if (response == null) { throw new XMPPException("Anonymous login failed."); } else if (response.getType() == IQ.Type.error) { throw new XMPPException(response.getError()); } // We're done with the collector, so explicitly cancel it. collector.cancel(); if (response.getTo() != null) { return response.getTo().toFullJID(); } else { return connection.getServiceName() + "/" + ((Authentication) response).getResource(); } }
public String authenticate(String username, String password, String resource) throws XMPPException { // If we send an authentication packet in "get" mode with just the username, // the server will return the list of authentication protocols it supports. Authentication discoveryAuth = new Authentication(); discoveryAuth.setType(IQ.Type.GET); discoveryAuth.setUsername(username); PacketCollector collector = connection.createPacketCollector(new PacketIDFilter(discoveryAuth.getPacketID())); // Send the packet connection.sendPacket(discoveryAuth); // Wait up to a certain number of seconds for a response from the server. IQ response = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout()); if (response == null) { throw new XMPPException("No response from the server."); } // If the server replied with an error, throw an exception. else if (response.getType() == IQ.Type.ERROR) { throw new XMPPException(response.getError()); } // Otherwise, no error so continue processing. Authentication authTypes = (Authentication) response; collector.cancel(); // Now, create the authentication packet we'll send to the server. Authentication auth = new Authentication(); auth.setUsername(username); // Figure out if we should use digest or plain text authentication. if (authTypes.getDigest() != null) { auth.setDigest(connection.getConnectionID(), password); } else if (authTypes.getPassword() != null) { auth.setPassword(password); } else { throw new XMPPException("Server does not support compatible authentication mechanism."); } auth.setResource(resource); collector = connection.createPacketCollector(new PacketIDFilter(auth.getPacketID())); // Send the packet. connection.sendPacket(auth); // Wait up to a certain number of seconds for a response from the server. response = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout()); if (response == null) { throw new XMPPException("Authentication failed."); } else if (response.getType() == IQ.Type.ERROR) { throw new XMPPException(response.getError()); } // We're done with the collector, so explicitly cancel it. collector.cancel(); return response.getTo(); }
public String authenticate(String username, String password, String resource) throws XMPPException { // If we send an authentication packet in "get" mode with just the // username, // the server will return the list of authentication protocols it // supports. Authentication discoveryAuth = new Authentication(); discoveryAuth.setType(IQ.Type.GET); discoveryAuth.setUsername(username); PacketCollector collector = connection .createPacketCollector(new PacketIDFilter(discoveryAuth .getPacketID())); // Send the packet connection.sendPacket(discoveryAuth); // Wait up to a certain number of seconds for a response from the // server. IQ response = (IQ) collector.nextResult(SmackConfiguration .getPacketReplyTimeout()); if (response == null) { throw new XMPPException("No response from the server."); } // If the server replied with an error, throw an exception. else if (response.getType() == IQ.Type.ERROR) { throw new XMPPException(response.getError()); } // Otherwise, no error so continue processing. Authentication authTypes = (Authentication) response; collector.cancel(); // Now, create the authentication packet we'll send to the server. Authentication auth = new Authentication(); auth.setUsername(username); // Figure out if we should use digest or plain text authentication. if (authTypes.getDigest() != null) { auth.setDigest(connection.getConnectionID(), password); } else if (authTypes.getPassword() != null) { auth.setPassword(password); } else { throw new XMPPException( "Server does not support compatible authentication mechanism."); } auth.setResource(resource); collector = connection.createPacketCollector(new PacketIDFilter(auth .getPacketID())); // Send the packet. connection.sendPacket(auth); // Wait up to a certain number of seconds for a response from the // server. response = (IQ) collector.nextResult(SmackConfiguration .getPacketReplyTimeout()); if (response == null) { throw new XMPPException("Authentication failed."); } else if (response.getType() == IQ.Type.ERROR) { throw new XMPPException(response.getError()); } // We're done with the collector, so explicitly cancel it. collector.cancel(); return response.getTo(); }