From 97672b525e4365058b7d9bb166981b22bc8df86b Mon Sep 17 00:00:00 2001 From: Keith Cully Date: Tue, 21 Nov 2023 15:19:27 +0000 Subject: [PATCH] Add custom exception type for insecure remoting --- .../RemotingListenerBuilder.cs | 4 ++-- .../Client/OmexServiceProxyFactory.cs | 3 +-- .../InsecureRemotingUnsupportedException.cs | 22 +++++++++++++++++++ .../GenericRemotingListenerBuilderTests.cs | 3 ++- 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 src/Services.Remoting/InsecureRemotingUnsupportedException.cs diff --git a/src/Hosting.Services.Remoting/RemotingListenerBuilder.cs b/src/Hosting.Services.Remoting/RemotingListenerBuilder.cs index 872f7a77..923fa539 100644 --- a/src/Hosting.Services.Remoting/RemotingListenerBuilder.cs +++ b/src/Hosting.Services.Remoting/RemotingListenerBuilder.cs @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -using System; using System.Fabric; +using Microsoft.Omex.Extensions.Services.Remoting; using Microsoft.Omex.Extensions.Services.Remoting.Runtime; using Microsoft.ServiceFabric.Services.Communication.Runtime; using Microsoft.ServiceFabric.Services.Remoting; @@ -33,7 +33,7 @@ protected RemotingListenerBuilder( { if (settings == null && !FabricTransportRemotingListenerSettings.TryLoadFrom("TransportSettings", out settings)) { - throw new InvalidOperationException("Transport security is required for Service Fabric Remoting connections. TransportSettings must be defined in settings.xml."); + throw new InsecureRemotingUnsupportedException(); } settings.ExceptionSerializationTechnique = FabricTransportRemotingListenerSettings.ExceptionSerialization.Default; diff --git a/src/Services.Remoting/Client/OmexServiceProxyFactory.cs b/src/Services.Remoting/Client/OmexServiceProxyFactory.cs index 5a33b0d0..0e8abd55 100644 --- a/src/Services.Remoting/Client/OmexServiceProxyFactory.cs +++ b/src/Services.Remoting/Client/OmexServiceProxyFactory.cs @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -using System; using Microsoft.ServiceFabric.Services.Remoting.Client; using Microsoft.ServiceFabric.Services.Remoting.FabricTransport; using Microsoft.ServiceFabric.Services.Remoting.V2.FabricTransport.Client; @@ -24,7 +23,7 @@ public static class OmexServiceProxyFactory { if (!FabricTransportRemotingSettings.TryLoadFrom("TransportSettings", out FabricTransportRemotingSettings remotingSettings)) { - throw new InvalidOperationException("Transport security is required for Service Fabric Remoting connections. TransportSettings must be defined in settings.xml."); + throw new InsecureRemotingUnsupportedException(); } remotingSettings.ExceptionDeserializationTechnique = FabricTransportRemotingSettings.ExceptionDeserialization.Default; diff --git a/src/Services.Remoting/InsecureRemotingUnsupportedException.cs b/src/Services.Remoting/InsecureRemotingUnsupportedException.cs new file mode 100644 index 00000000..ffcb1269 --- /dev/null +++ b/src/Services.Remoting/InsecureRemotingUnsupportedException.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; + +namespace Microsoft.Omex.Extensions.Services.Remoting +{ + /// + /// Specific exception type used when an attempt to create an insecure listener or insecure proxy is made. + /// + [Serializable] + public class InsecureRemotingUnsupportedException : InvalidOperationException + { + /// + /// Creates an instance of . + /// + public InsecureRemotingUnsupportedException() + : base("Transport security is required for Service Fabric Remoting connections. TransportSettings must be defined in settings.xml.") + { + } + } +} \ No newline at end of file diff --git a/tests/Hosting.Services.Remoting.UnitTests/GenericRemotingListenerBuilderTests.cs b/tests/Hosting.Services.Remoting.UnitTests/GenericRemotingListenerBuilderTests.cs index 5f90f747..46900825 100644 --- a/tests/Hosting.Services.Remoting.UnitTests/GenericRemotingListenerBuilderTests.cs +++ b/tests/Hosting.Services.Remoting.UnitTests/GenericRemotingListenerBuilderTests.cs @@ -3,6 +3,7 @@ using System; using Microsoft.Omex.Extensions.Hosting.Services.UnitTests; +using Microsoft.Omex.Extensions.Services.Remoting; using Microsoft.ServiceFabric.Services.Remoting; using Microsoft.ServiceFabric.Services.Remoting.FabricTransport.Runtime; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -21,7 +22,7 @@ public void GenericRemotingListenerBuilder_NoTransportSettigns_ThrowsException() IServiceProvider mockProvider = new Mock().Object; OmexStatefulService omexStatefulService = MockServiceFabricServices.MockOmexStatefulService; - Assert.ThrowsException(() => new GenericRemotingListenerBuilder(name, mockProvider, + Assert.ThrowsException(() => new GenericRemotingListenerBuilder(name, mockProvider, (p, s) => { Assert.AreEqual(omexStatefulService, s);