From 1a92a83481ca46510c42d07510e2cdc3b0a82a31 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 24 Dec 2020 14:26:40 +0300 Subject: [PATCH] Added RemoveUnnecessaryPortsStep resolves https://github.com/abpframework/abp/issues/6767 --- .../Templates/App/AppTemplateBase.cs | 6 +++ .../Templates/RemoveUnnecessaryPortsStep.cs | 46 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RemoveUnnecessaryPortsStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index a598d3483c..a351589881 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -24,6 +24,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App SwitchDatabaseProvider(context, steps); DeleteUnrelatedProjects(context, steps); + RemoveUnnecessaryPorts(context, steps); RandomizeSslPorts(context, steps); RandomizeStringEncryption(context, steps); UpdateNuGetConfig(context, steps); @@ -176,6 +177,11 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App } } + private static void RemoveUnnecessaryPorts(ProjectBuildContext context, List steps) + { + steps.Add(new RemoveUnnecessaryPortsStep()); + } + private static void RandomizeSslPorts(ProjectBuildContext context, List steps) { if (context.BuildArgs.ExtraProperties.ContainsKey("no-random-port")) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RemoveUnnecessaryPortsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RemoveUnnecessaryPortsStep.cs new file mode 100644 index 0000000000..4d44cf0b05 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RemoveUnnecessaryPortsStep.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates +{ + public class RemoveUnnecessaryPortsStep : ProjectBuildPipelineStep + { + public override void Execute(ProjectBuildContext context) + { + var httpApiHostAppSettings = context.Files.FirstOrDefault(f => f.Name.EndsWith(".HttpApi.Host/appsettings.json")); + + if (httpApiHostAppSettings == null) + { + return; + } + + var portsToRemoveFromCors = new List(); + + var appSettingsJson = JObject.Parse(httpApiHostAppSettings.Content); + var appJson = (JObject) appSettingsJson["App"]; + + if (context.BuildArgs.UiFramework != UiFramework.Angular) + { + appJson.Property("ClientUrl")?.Remove(); + portsToRemoveFromCors.Add("4200"); + } + if (context.BuildArgs.UiFramework != UiFramework.Blazor) + { + portsToRemoveFromCors.Add("44307"); + } + + if (appJson["CorsOrigins"] != null) + { + appJson["CorsOrigins"] = string.Join(",", + appJson["CorsOrigins"].ToString().Split(",").Where(u=> !portsToRemoveFromCors.Any(u.EndsWith)) + ); + } + + httpApiHostAppSettings.SetContent(JsonConvert.SerializeObject(appSettingsJson, Formatting.Indented)); + } + } +}