Author: ngn Date: Mon Jul 4 20:59:38 2011 New Revision: 1142804 URL: http://svn.apache.org/viewvc?rev=1142804&view=rev Log: Only announce in-band registrations on encrypted connections. (VYSPER-288)
Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/response/ServerResponsesTestCase.java Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java?rev=1142804&r1=1142803&r2=1142804&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java Mon Jul 4 20:59:38 2011 @@ -21,6 +21,7 @@ package org.apache.vysper.xmpp.protocol. import org.apache.vysper.xmpp.modules.core.sasl.handler.AbstractSASLHandler; import org.apache.vysper.xmpp.modules.core.starttls.handler.StartTLSHandler; +import org.apache.vysper.xmpp.modules.extension.xep0077_inbandreg.InBandRegistrationHandler; import org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DbResultHandler; import org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DbVerifyHandler; import org.apache.vysper.xmpp.protocol.ResponseWriter; @@ -50,6 +51,8 @@ public class StartedProtocolWorker exten } else if (stanzaHandler instanceof AbstractSASLHandler && !sessionContext.getServerRuntimeContext().getServerFeatures().isStartTLSRequired()) { return true; + } else if (stanzaHandler instanceof InBandRegistrationHandler) { + return true; } else if (sessionContext.isServerToServer() && stanzaHandler instanceof DbVerifyHandler) { return true; } else if (sessionContext.isServerToServer() && stanzaHandler instanceof DbResultHandler) { Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java?rev=1142804&r1=1142803&r2=1142804&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java Mon Jul 4 20:59:38 2011 @@ -92,10 +92,7 @@ public class ServerMain { server.addModule(new VcardTempModule()); server.addModule(new XmppPingModule()); server.addModule(new PrivateDataModule()); - - // uncomment to enable in-band registrations (XEP-0077) - // server.addModule(new InBandRegistrationModule()); - + server.addModule(new InBandRegistrationModule()); server.addModule(new AdhocCommandsModule()); final ServiceAdministrationModule serviceAdministrationModule = new ServiceAdministrationModule(); // unless admin user account with a secure password is added, this will be not become effective Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java?rev=1142804&r1=1142803&r2=1142804&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java Mon Jul 4 20:59:38 2011 @@ -51,7 +51,7 @@ public class ServerResponses { innerFeatureStanza = getFeaturesForEncryption(sessionContext); else if (sessionContext.getState() == SessionState.ENCRYPTED) innerFeatureStanza = getFeaturesForAuthentication(sessionContext.getServerRuntimeContext() - .getServerFeatures().getAuthenticationMethods(), sessionContext); + .getServerFeatures().getAuthenticationMethods()); else if (sessionContext.getState() == SessionState.AUTHENTICATED) { sessionContext.setIsReopeningXMLStream(); innerFeatureStanza = getFeaturesForSession(); @@ -132,6 +132,10 @@ public class ServerResponses { // only add auth methods, if StartTLS is NOT REQUIRED (according to RFC6120.html#5.3.1 getFeaturesSASL(serverFeatures.getAuthenticationMethods(), stanzaBuilder); } + if(sessionContext.getServerRuntimeContext().getModule(InBandRegistrationModule.class) != null) { + // In-band registration active, show as feature + stanzaBuilder.startInnerElement("register", NamespaceURIs.JABBER_ORG_FEATURES_IQ_REGISTER); + } return stanzaBuilder.build(); } @@ -145,17 +149,11 @@ public class ServerResponses { stanzaBuilder.endInnerElement(); } - public Stanza getFeaturesForAuthentication(List<SASLMechanism> authenticationMethods, SessionContext sessionContext) { + public Stanza getFeaturesForAuthentication(List<SASLMechanism> authenticationMethods) { StanzaBuilder stanzaBuilder = startFeatureStanza(); getFeaturesSASL(authenticationMethods, stanzaBuilder); - if(sessionContext.getServerRuntimeContext().getModule(InBandRegistrationModule.class) != null) { - // In-band registration active, show as feature - stanzaBuilder.startInnerElement("register", NamespaceURIs.JABBER_ORG_FEATURES_IQ_REGISTER).endInnerElement(); - } - - return stanzaBuilder.build(); } Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/response/ServerResponsesTestCase.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/response/ServerResponsesTestCase.java?rev=1142804&r1=1142803&r2=1142804&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/response/ServerResponsesTestCase.java (original) +++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/response/ServerResponsesTestCase.java Mon Jul 4 20:59:38 2011 @@ -32,7 +32,6 @@ import org.apache.vysper.xmpp.authentica import org.apache.vysper.xmpp.authentication.SASLMechanism; import org.apache.vysper.xmpp.parser.ParsingException; import org.apache.vysper.xmpp.protocol.NamespaceURIs; -import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; import org.apache.vysper.xmpp.server.XMPPVersion; @@ -61,16 +60,13 @@ public class ServerResponsesTestCase { .endInnerElement().startInnerElement("mechanism", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL) .addText("ANONYMOUS").endInnerElement().endInnerElement().build(); - ServerRuntimeContext serverRuntimeContext = Mockito.mock(ServerRuntimeContext.class); - Mockito.when(sessionContext.getServerRuntimeContext()).thenReturn(serverRuntimeContext); - List<SASLMechanism> mechanismList = new ArrayList<SASLMechanism>(); mechanismList.add(new External()); mechanismList.add(new Plain()); mechanismList.add(new Anonymous()); // add others Assert.assertEquals("stanzas are identical", stanza.toString(), new ServerResponses().getFeaturesForAuthentication( - mechanismList, sessionContext).toString()); + mechanismList).toString()); } @Test