From 446753b16db705c03d46404dbae190c731030829 Mon Sep 17 00:00:00 2001 From: forsthug <85173816+forsthug@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:48:11 +0100 Subject: [PATCH 1/8] Add support for the v1.IATSSCD interface --- .../Extensions/WebApplicationExtensions.cs | 14 ++++++++++++-- .../ProcessHost/ProcessHostPlebeian.cs | 7 +++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs b/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs index ef1e8cd3..eef1b1b8 100644 --- a/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs +++ b/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs @@ -1,4 +1,5 @@ using fiskaltrust.ifPOS.v1; +using fiskaltrust.ifPOS.v1.at; using fiskaltrust.ifPOS.v1.de; using fiskaltrust.ifPOS.v1.it; using Microsoft.AspNetCore.Mvc; @@ -21,8 +22,8 @@ private static IEnumerable MapMultiplePrefixed(this WebAppl public static WebApplication AddQueueEndpoints(this WebApplication app, IPOS pos) { - app.MapMultiplePrefixed(_prefixesV1, "Echo", EndpointRouteBuilderExtensions.MapPost, async (EchoRequest req) => await pos.EchoAsync(req)); - app.MapMultiplePrefixed(_prefixesV0, "Echo", EndpointRouteBuilderExtensions.MapPost, async ([FromBody] string message) => (await pos.EchoAsync(new EchoRequest { Message = message })).Message); + app.MapMultiplePrefixed(_prefixesV1, "Echo", EndpointRouteBuilderExtensions.MapPost, async (ifPOS.v1.EchoRequest req) => await pos.EchoAsync(req)); + app.MapMultiplePrefixed(_prefixesV0, "Echo", EndpointRouteBuilderExtensions.MapPost, async ([FromBody] string message) => (await pos.EchoAsync(new ifPOS.v1.EchoRequest { Message = message })).Message); app.MapMultiplePrefixed(_prefixes, "Sign", EndpointRouteBuilderExtensions.MapPost, async (ReceiptRequest req) => await pos.SignAsync(req)); app.MapMultiplePrefixed(_prefixes, "Journal", EndpointRouteBuilderExtensions.MapPost, ([FromQuery] long type, [FromQuery] long? from, [FromQuery] long? to) => { @@ -72,5 +73,14 @@ public static WebApplication AddScuItEndpoints(this WebApplication app, IITSSCD app.MapMultiplePrefixed(_prefixesV1, "GetRTInfo", EndpointRouteBuilderExtensions.MapGet, async () => await sscd.GetRTInfoAsync()); return app; } + + + public static WebApplication AddScuAtEndpoints(this WebApplication app, IATSSCD ssat) + { + app.MapMultiplePrefixed(_prefixesV1, "Certificate", EndpointRouteBuilderExtensions.MapGet, async () => await ssat.CertificateAsync()); + app.MapMultiplePrefixed(_prefixesV1, "ZDA", EndpointRouteBuilderExtensions.MapGet, async () => await ssat.ZdaAsync()); + app.MapMultiplePrefixed(_prefixesV1, "Sign", EndpointRouteBuilderExtensions.MapGet, async (SignRequest req) => await ssat.SignAsync(req)); + return app; + } } } diff --git a/src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs b/src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs index 15742ead..0146574f 100644 --- a/src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs +++ b/src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs @@ -1,4 +1,5 @@ using fiskaltrust.ifPOS.v1; +using fiskaltrust.ifPOS.v1.at; using fiskaltrust.ifPOS.v1.de; using fiskaltrust.ifPOS.v1.it; using fiskaltrust.Launcher.Common.Configuration; @@ -212,6 +213,12 @@ private static (object, Action, Type) GetScu(IServiceProvider se return (scuIt, (WebApplication app) => app.AddScuItEndpoints(scuIt), typeof(IITSSCD)); } + var scuAt = services.GetService(); + if (scuAt is not null) + { + return (scuAt, (WebApplication app) => app.AddScuAtEndpoints(scuAt), typeof(IATSSCD)); + } + throw new Exception("Could not resolve SCU with supported country. (Curently supported are DE and IT)"); } From d3ccba1aa56871469d2a11a3ab51d6d3477535e2 Mon Sep 17 00:00:00 2001 From: forsthug <85173816+forsthug@users.noreply.github.com> Date: Tue, 19 Mar 2024 14:22:21 +0100 Subject: [PATCH 2/8] .. --- src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs b/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs index eef1b1b8..bd35111b 100644 --- a/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs +++ b/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs @@ -79,7 +79,6 @@ public static WebApplication AddScuAtEndpoints(this WebApplication app, IATSSCD { app.MapMultiplePrefixed(_prefixesV1, "Certificate", EndpointRouteBuilderExtensions.MapGet, async () => await ssat.CertificateAsync()); app.MapMultiplePrefixed(_prefixesV1, "ZDA", EndpointRouteBuilderExtensions.MapGet, async () => await ssat.ZdaAsync()); - app.MapMultiplePrefixed(_prefixesV1, "Sign", EndpointRouteBuilderExtensions.MapGet, async (SignRequest req) => await ssat.SignAsync(req)); return app; } } From 1050fe4b4844939a0336e102ff4ff41cf11ed6db Mon Sep 17 00:00:00 2001 From: forsthug <85173816+forsthug@users.noreply.github.com> Date: Wed, 20 Mar 2024 07:51:56 +0100 Subject: [PATCH 3/8] add Client --- .../Clients/ATSSCDClientFactory.cs | 64 +++++++++++++++++++ .../Commands/HostCommand.cs | 3 + .../Extensions/WebApplicationExtensions.cs | 2 + 3 files changed, 69 insertions(+) create mode 100644 src/fiskaltrust.Launcher/Clients/ATSSCDClientFactory.cs diff --git a/src/fiskaltrust.Launcher/Clients/ATSSCDClientFactory.cs b/src/fiskaltrust.Launcher/Clients/ATSSCDClientFactory.cs new file mode 100644 index 00000000..078e3669 --- /dev/null +++ b/src/fiskaltrust.Launcher/Clients/ATSSCDClientFactory.cs @@ -0,0 +1,64 @@ +using fiskaltrust.ifPOS.v1.at; +using fiskaltrust.Launcher.Common.Configuration; +using fiskaltrust.Middleware.Abstractions; +using fiskaltrust.Middleware.Interface.Client; +using fiskaltrust.Middleware.Interface.Client.Grpc; +using fiskaltrust.Middleware.Interface.Client.Http; +using fiskaltrust.Middleware.Interface.Client.Http.ATSSCD; +using fiskaltrust.Middleware.Interface.Client.Soap; +using Grpc.Core; +using Grpc.Net.Client; + +namespace fiskaltrust.Launcher.Clients +{ + public class ATSSCDClientFactory : IClientFactory + { + private readonly LauncherConfiguration _launcherConfiguration; + + public ATSSCDClientFactory(LauncherConfiguration launcherConfiguration) => _launcherConfiguration = launcherConfiguration; + + public IATSSCD CreateClient(ClientConfiguration configuration) + { + if (configuration is null) + { + throw new ArgumentNullException(nameof(configuration)); + } + + var retryPolicyoptions = new RetryPolicyOptions + { + DelayBetweenRetries = configuration.DelayBetweenRetries != default ? configuration.DelayBetweenRetries : RetryPolicyOptions.Default.DelayBetweenRetries, + Retries = configuration.RetryCount ?? RetryPolicyOptions.Default.Retries, + ClientTimeout = configuration.Timeout != default ? configuration.Timeout : RetryPolicyOptions.Default.ClientTimeout + }; + + var isHttps = !string.IsNullOrEmpty(_launcherConfiguration?.TlsCertificatePath) || !string.IsNullOrEmpty(_launcherConfiguration?.TlsCertificateBase64); + var sslValidationDisabled = _launcherConfiguration != null && _launcherConfiguration.SslValidation.HasValue && !_launcherConfiguration.SslValidation.Value; + + return configuration.UrlType switch + { + "grpc" => GrpcATSSCDFactory.CreateSSCDAsync(new GrpcClientOptions + { + Url = new Uri(configuration.Url.Replace("grpc://", isHttps ? "https://" : "http://")), + RetryPolicyOptions = retryPolicyoptions, + ChannelOptions = new GrpcChannelOptions + { + Credentials = isHttps ? ChannelCredentials.SecureSsl : ChannelCredentials.Insecure, + HttpHandler = isHttps && sslValidationDisabled ? new HttpClientHandler { ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) => true } : null + } + }).Result, + "rest" => HttpATSSCDFactory.CreateSSCDAsync(new HttpATSSCDClientOptions + { + Url = new Uri(configuration.Url.Replace("rest://", isHttps ? "https://" : "http://")), + RetryPolicyOptions = retryPolicyoptions, + DisableSslValidation = sslValidationDisabled + }).Result, + "http" or "https" or "net.tcp" => SoapATSSCDFactory.CreateSSCDAsync(new ClientOptions + { + Url = new Uri(configuration.Url), + RetryPolicyOptions = retryPolicyoptions + }).Result, + _ => throw new ArgumentException("This version of the fiskaltrust Launcher currently only supports gRPC, REST and SOAP communication."), + }; + } + } +} diff --git a/src/fiskaltrust.Launcher/Commands/HostCommand.cs b/src/fiskaltrust.Launcher/Commands/HostCommand.cs index 42ff82a5..14c65bbc 100644 --- a/src/fiskaltrust.Launcher/Commands/HostCommand.cs +++ b/src/fiskaltrust.Launcher/Commands/HostCommand.cs @@ -23,6 +23,7 @@ using fiskaltrust.Launcher.Helpers; using ILogger = Microsoft.Extensions.Logging.ILogger; using fiskaltrust.Launcher.Factories; +using fiskaltrust.ifPOS.v1.at; namespace fiskaltrust.Launcher.Commands { @@ -133,6 +134,7 @@ public static async Task HandleAsync(HostOptions hostOptions, HostServices services.AddSingleton, DESSCDClientFactory>(); services.AddSingleton, ITSSCDClientFactory>(); + services.AddSingleton, ATSSCDClientFactory>(); services.AddSingleton, POSClientFactory>(); using var downloader = new PackageDownloader(services.BuildServiceProvider().GetRequiredService>(), launcherConfiguration, hostServices.LauncherExecutablePath); @@ -150,6 +152,7 @@ public static async Task HandleAsync(HostOptions hostOptions, HostServices typeof(IClientFactory), typeof(IClientFactory), typeof(IClientFactory), + typeof(IClientFactory), typeof(JournalRequest), typeof(JournalResponse), typeof(IHelper), diff --git a/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs b/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs index bd35111b..768510b9 100644 --- a/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs +++ b/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs @@ -79,6 +79,8 @@ public static WebApplication AddScuAtEndpoints(this WebApplication app, IATSSCD { app.MapMultiplePrefixed(_prefixesV1, "Certificate", EndpointRouteBuilderExtensions.MapGet, async () => await ssat.CertificateAsync()); app.MapMultiplePrefixed(_prefixesV1, "ZDA", EndpointRouteBuilderExtensions.MapGet, async () => await ssat.ZdaAsync()); + app.MapMultiplePrefixed(_prefixesV1, "Sign", EndpointRouteBuilderExtensions.MapGet, async (SignRequest req) => await ssat.SignAsync(req)); + app.MapMultiplePrefixed(_prefixesV1, "Echo", EndpointRouteBuilderExtensions.MapGet, async (ifPOS.v1.at.EchoRequest req) => await ssat.EchoAsync(req)); return app; } } From 76935a1ec9d32afc6ee2b864c858b28e30aa1992 Mon Sep 17 00:00:00 2001 From: forsthug <85173816+forsthug@users.noreply.github.com> Date: Wed, 20 Mar 2024 09:47:18 +0100 Subject: [PATCH 4/8] .. --- src/fiskaltrust.Launcher/Commands/HostCommand.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fiskaltrust.Launcher/Commands/HostCommand.cs b/src/fiskaltrust.Launcher/Commands/HostCommand.cs index 14c65bbc..89b0659f 100644 --- a/src/fiskaltrust.Launcher/Commands/HostCommand.cs +++ b/src/fiskaltrust.Launcher/Commands/HostCommand.cs @@ -149,6 +149,7 @@ public static async Task HandleAsync(HostOptions hostOptions, HostServices typeof(IPOS), typeof(IDESSCD), typeof(IITSSCD), + typeof(IATSSCD), typeof(IClientFactory), typeof(IClientFactory), typeof(IClientFactory), From d584dfc6166698b8b40e862837588356b320e2d3 Mon Sep 17 00:00:00 2001 From: forsthug <85173816+forsthug@users.noreply.github.com> Date: Wed, 20 Mar 2024 11:15:49 +0100 Subject: [PATCH 5/8] .. --- src/fiskaltrust.Launcher/fiskaltrust.Launcher.csproj | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/fiskaltrust.Launcher/fiskaltrust.Launcher.csproj b/src/fiskaltrust.Launcher/fiskaltrust.Launcher.csproj index 8deb18d9..225c99b7 100644 --- a/src/fiskaltrust.Launcher/fiskaltrust.Launcher.csproj +++ b/src/fiskaltrust.Launcher/fiskaltrust.Launcher.csproj @@ -15,13 +15,13 @@ - + - + - - + + @@ -39,7 +39,6 @@ - + \ No newline at end of file From 7176d346490dedc17d54990bd23e0e7b5e0e720f Mon Sep 17 00:00:00 2001 From: forsthug <85173816+forsthug@users.noreply.github.com> Date: Thu, 21 Mar 2024 10:15:20 +0100 Subject: [PATCH 6/8] .. --- src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs b/src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs index 0146574f..1127bb74 100644 --- a/src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs +++ b/src/fiskaltrust.Launcher/ProcessHost/ProcessHostPlebeian.cs @@ -151,6 +151,10 @@ private async Task StartHosting(string[] uris) { await _hosting.HostService(url, hostingType.Value, (IITSSCD)instance, addEndpoints); } + else if (instanceInterface == typeof(IATSSCD)) + { + await _hosting.HostService(url, hostingType.Value, (IATSSCD)instance, addEndpoints); + } break; case PackageType.Queue: await _hosting.HostService(url, hostingType.Value, (IPOS)instance, addEndpoints); From b0ccf3d285d3c2a707f2b0e64820d29057a2d12d Mon Sep 17 00:00:00 2001 From: Leila <67684543+LeilaZarban@users.noreply.github.com> Date: Thu, 21 Mar 2024 12:03:28 +0100 Subject: [PATCH 7/8] correct SCU endpoints --- .../Extensions/WebApplicationExtensions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs b/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs index 768510b9..c3a09e70 100644 --- a/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs +++ b/src/fiskaltrust.Launcher/Extensions/WebApplicationExtensions.cs @@ -79,8 +79,8 @@ public static WebApplication AddScuAtEndpoints(this WebApplication app, IATSSCD { app.MapMultiplePrefixed(_prefixesV1, "Certificate", EndpointRouteBuilderExtensions.MapGet, async () => await ssat.CertificateAsync()); app.MapMultiplePrefixed(_prefixesV1, "ZDA", EndpointRouteBuilderExtensions.MapGet, async () => await ssat.ZdaAsync()); - app.MapMultiplePrefixed(_prefixesV1, "Sign", EndpointRouteBuilderExtensions.MapGet, async (SignRequest req) => await ssat.SignAsync(req)); - app.MapMultiplePrefixed(_prefixesV1, "Echo", EndpointRouteBuilderExtensions.MapGet, async (ifPOS.v1.at.EchoRequest req) => await ssat.EchoAsync(req)); + app.MapMultiplePrefixed(_prefixesV1, "Sign", EndpointRouteBuilderExtensions.MapPost, async (SignRequest req) => await ssat.SignAsync(req)); + app.MapMultiplePrefixed(_prefixesV1, "Echo", EndpointRouteBuilderExtensions.MapPost, async (ifPOS.v1.at.EchoRequest req) => await ssat.EchoAsync(req)); return app; } } From b411d126a8d3562a899135c4aaf7e212fde753c7 Mon Sep 17 00:00:00 2001 From: Leila <67684543+LeilaZarban@users.noreply.github.com> Date: Thu, 21 Mar 2024 12:18:59 +0100 Subject: [PATCH 8/8] correct upercases --- .../ProcessHost/ProcessHostMonarch.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fiskaltrust.Launcher/ProcessHost/ProcessHostMonarch.cs b/src/fiskaltrust.Launcher/ProcessHost/ProcessHostMonarch.cs index 64f521a0..0f6084aa 100644 --- a/src/fiskaltrust.Launcher/ProcessHost/ProcessHostMonarch.cs +++ b/src/fiskaltrust.Launcher/ProcessHost/ProcessHostMonarch.cs @@ -71,10 +71,10 @@ private void Setup() _process.OutputDataReceived += ReceiveStdOut; _process.ErrorDataReceived += ReceiveStdOut; - // if (Debugger.IsAttached && _packageType == PackageType.Helper) - // { - // _process.StartInfo.Arguments += " --debugging"; - // } + //if (Debugger.IsAttached && _packageType == PackageType.Queue) + //{ + // _process.StartInfo.Arguments += " --debugging"; + //} } private void ReceiveStdOut(object sender, DataReceivedEventArgs e)