You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ra...@apache.org on 2019/09/01 16:45:34 UTC

[mina-vysper] branch master updated: Limit access to XMPPServerConnectorRegistry

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 <re...@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 (dev@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);