This is an automated email from the ASF dual-hosted git repository. ralaoui pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-vysper.git
The following commit(s) were added to refs/heads/master by this push: new 6f73672 Limit access to XMPPServerConnectorRegistry 6f73672 is described below commit 6f736727f6816e92c3481771d17429f351455220 Author: Réda Housni Alaoui <reda.housniala...@gmail.com> AuthorDate: Sun Sep 1 18:45:25 2019 +0200 Limit access to XMPPServerConnectorRegistry --- .../DeliveringExternalInboundStanzaRelay.java | 5 ++-- .../xep0220_server_dailback/DbResultHandler.java | 23 +++++++++------- .../xmpp/server/DefaultServerRuntimeContext.java | 2 +- .../xmpp/server/InternalServerRuntimeContext.java | 31 ++++++++++++++++++++++ .../vysper/xmpp/server/ServerRuntimeContext.java | 3 --- .../org/apache/vysper/xmpp/server/XMPPServer.java | 2 +- ...liveringExternalInboundStanzaRelayTestCase.java | 5 ++-- .../vysper/xmpp/server/s2s/Server2Server.java | 3 ++- 8 files changed, 54 insertions(+), 20 deletions(-) diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java index 1fdd138..853775b 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java @@ -38,6 +38,7 @@ import org.apache.vysper.xmpp.delivery.failure.DeliveryException; import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy; import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException; import org.apache.vysper.xmpp.protocol.NamespaceURIs; +import org.apache.vysper.xmpp.server.InternalServerRuntimeContext; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.InternalSessionContext; import org.apache.vysper.xmpp.server.resources.ManagedThreadPool; @@ -81,7 +82,7 @@ public class DeliveringExternalInboundStanzaRelay implements StanzaRelay, Manage protected OfflineStanzaReceiver offlineStanzaReceiver = null; - protected ServerRuntimeContext serverRuntimeContext = null; + protected InternalServerRuntimeContext serverRuntimeContext = null; protected long lastCompleted = 0; protected long lastDumpTimestamp = 0; @@ -98,7 +99,7 @@ public class DeliveringExternalInboundStanzaRelay implements StanzaRelay, Manage this.executor = executor; } - public void setServerRuntimeContext(ServerRuntimeContext serverRuntimeContext) { + public void setServerRuntimeContext(InternalServerRuntimeContext serverRuntimeContext) { this.serverRuntimeContext = serverRuntimeContext; } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbResultHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbResultHandler.java index 8c467a1..bb6b60e 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbResultHandler.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbResultHandler.java @@ -29,7 +29,6 @@ import org.apache.vysper.xmpp.protocol.StanzaHandler; 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.s2s.XMPPServerConnector; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.stanza.StanzaBuilder; import org.slf4j.Logger; @@ -75,10 +74,15 @@ public class DbResultHandler implements StanzaHandler { Entity receiving = EntityImpl.parseUnchecked(stanza.getAttributeValue("from")); Entity originating = serverRuntimeContext.getServerEntity(); - try { - XMPPServerConnector connector = serverRuntimeContext.getServerConnectorRegistry() - .connectForDialback(receiving, sessionContext, sessionStateHolder); + Runnable onFailure = () -> { + StanzaBuilder builder = new StanzaBuilder("result", NamespaceURIs.JABBER_SERVER_DIALBACK, "db"); + builder.addAttribute("from", originating.getDomain()); + builder.addAttribute("to", receiving.getDomain()); + builder.addAttribute("type", "invalid"); + stanzaBroker.writeToSession(builder.build()); + }; + try { /* * <db:verify from='target.tld' id='417GAF25' to='sender.tld'> * 38b501ec606752318f72ad53de17ac6d15f86257485b0d8f5d54e1f619e6b869 </db:verify> @@ -89,13 +93,11 @@ public class DbResultHandler implements StanzaHandler { verifyBuilder.addAttribute("to", receiving.getFullQualifiedName()); verifyBuilder.addAttribute("id", sessionContext.getSessionId()); verifyBuilder.addText(dailbackId); - connector.write(verifyBuilder.build()); + + stanzaBroker.write(receiving, verifyBuilder.build(), + (failedToDeliverStanza, deliveryException) -> onFailure.run()); } catch (Exception e) { - StanzaBuilder builder = new StanzaBuilder("result", NamespaceURIs.JABBER_SERVER_DIALBACK, "db"); - builder.addAttribute("from", originating.getDomain()); - builder.addAttribute("to", receiving.getDomain()); - builder.addAttribute("type", "invalid"); - stanzaBroker.writeToSession(builder.build()); + onFailure.run(); } } else { // acting as the Originating server @@ -107,4 +109,5 @@ public class DbResultHandler implements StanzaHandler { } } } + } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java index 2681bf9..94aef67 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java @@ -68,7 +68,7 @@ import org.slf4j.LoggerFactory; * * @author The Apache MINA Project (d...@mina.apache.org) */ -public class DefaultServerRuntimeContext implements ServerRuntimeContext, ModuleRegistry { +public class DefaultServerRuntimeContext implements InternalServerRuntimeContext, ModuleRegistry { private final Logger logger = LoggerFactory.getLogger(DefaultServerRuntimeContext.class); diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/InternalServerRuntimeContext.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/InternalServerRuntimeContext.java new file mode 100644 index 0000000..9a8d0d7 --- /dev/null +++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/InternalServerRuntimeContext.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.vysper.xmpp.server; + +import org.apache.vysper.xmpp.server.s2s.XMPPServerConnectorRegistry; + +/** + * @author Réda Housni Alaoui + */ +public interface InternalServerRuntimeContext extends ServerRuntimeContext { + + XMPPServerConnectorRegistry getServerConnectorRegistry(); + +} diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java index 5d69892..b05babf 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java @@ -32,7 +32,6 @@ import org.apache.vysper.xmpp.modules.Module; import org.apache.vysper.xmpp.modules.ServerRuntimeContextService; import org.apache.vysper.xmpp.protocol.StanzaHandler; import org.apache.vysper.xmpp.server.components.Component; -import org.apache.vysper.xmpp.server.s2s.XMPPServerConnectorRegistry; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.state.presence.LatestPresenceCache; import org.apache.vysper.xmpp.state.resourcebinding.ResourceRegistry; @@ -71,8 +70,6 @@ public interface ServerRuntimeContext { boolean hasComponentStanzaProcessor(Entity entity); - XMPPServerConnectorRegistry getServerConnectorRegistry(); - List<Module> getModules(); <T> T getModule(Class<T> clazz); diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java index d4781b6..414313e 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java @@ -277,7 +277,7 @@ public class XMPPServer { dictionaries.add(new org.apache.vysper.xmpp.modules.core.compatibility.jabber_iq_auth.JabberIQAuthDictionary()); } - public ServerRuntimeContext getServerRuntimeContext() { + public InternalServerRuntimeContext getServerRuntimeContext() { return serverRuntimeContext; } diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java index ffbab04..0c6dc73 100644 --- a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java +++ b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java @@ -29,6 +29,7 @@ import org.apache.vysper.xmpp.delivery.failure.DeliveryException; import org.apache.vysper.xmpp.delivery.failure.RemoteServerNotFoundException; import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException; import org.apache.vysper.xmpp.protocol.NamespaceURIs; +import org.apache.vysper.xmpp.server.InternalServerRuntimeContext; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.InternalSessionContext; import org.apache.vysper.xmpp.server.s2s.XMPPServerConnector; @@ -67,7 +68,7 @@ public class DeliveringExternalInboundStanzaRelayTestCase extends TestCase { XMPPServerConnectorRegistry registry = mock(XMPPServerConnectorRegistry.class); Mockito.when(registry.connect(SERVER)).thenThrow(new RemoteServerNotFoundException()); - ServerRuntimeContext serverRuntimeContext = mock(ServerRuntimeContext.class); + InternalServerRuntimeContext serverRuntimeContext = mock(InternalServerRuntimeContext.class); Mockito.when(serverRuntimeContext.getServerConnectorRegistry()).thenReturn(registry); DeliveringExternalInboundStanzaRelay relay = new DeliveringExternalInboundStanzaRelay(new TestExecutorService()); @@ -91,7 +92,7 @@ public class DeliveringExternalInboundStanzaRelayTestCase extends TestCase { XMPPServerConnectorRegistry registry = mock(XMPPServerConnectorRegistry.class); Mockito.when(registry.connect(SERVER)).thenReturn(connector); - ServerRuntimeContext serverRuntimeContext = mock(ServerRuntimeContext.class); + InternalServerRuntimeContext serverRuntimeContext = mock(InternalServerRuntimeContext.class); Mockito.when(serverRuntimeContext.getServerConnectorRegistry()).thenReturn(registry); DeliveringExternalInboundStanzaRelay relay = new DeliveringExternalInboundStanzaRelay(new TestExecutorService()); diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java b/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java index 87e997d..f1359f7 100644 --- a/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java +++ b/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java @@ -33,6 +33,7 @@ import org.apache.vysper.xmpp.addressing.EntityImpl; import org.apache.vysper.xmpp.authentication.AccountManagement; import org.apache.vysper.xmpp.cryptography.NonCheckingX509TrustManagerFactory; import org.apache.vysper.xmpp.protocol.NamespaceURIs; +import org.apache.vysper.xmpp.server.InternalServerRuntimeContext; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.XMPPServer; import org.apache.vysper.xmpp.stanza.Stanza; @@ -102,7 +103,7 @@ public class Server2Server { // enable server connection to use ping //server.addModule(new XmppPingModule()); - ServerRuntimeContext serverRuntimeContext = server.getServerRuntimeContext(); + InternalServerRuntimeContext serverRuntimeContext = server.getServerRuntimeContext(); Thread.sleep(2000);