From f8f405e744aff09035d5d7a2514bc765440d6e4a Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 14 Apr 2023 14:28:34 +0800 Subject: [PATCH] Add `RandomizeAuthServerPassPhraseStep`. --- .../Templates/App/AppNoLayersTemplateBase.cs | 11 +++--- .../Templates/App/AppTemplateBase.cs | 8 ++++- .../MicroserviceServiceTemplateBase.cs | 6 ++++ .../Microservice/MicroserviceTemplateBase.cs | 28 +++++++++------ .../RandomizeAuthServerPassPhraseStep.cs | 35 +++++++++++++++++++ 5 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeAuthServerPassPhraseStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs index c5855a6671..fec1136204 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs @@ -69,19 +69,19 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host")); - + steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server", "MyCompanyName.MyProjectName.Host")); steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Client", "MyCompanyName.MyProjectName.Blazor")); - steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared", + steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared", "MyCompanyName.MyProjectName.Contracts")); - + steps.Add(new AppNoLayersMoveProjectsStep()); steps.Add(new AppNoLayersMigrateDatabaseChangeStep()); steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly")); break; - + case UiFramework.BlazorServer: steps.Add(new RemoveFolderStep("/angular")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc")); @@ -98,7 +98,7 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Mvc", "MyCompanyName.MyProjectName")); RemoveBlazorWasmProjects(steps); break; - + default: throw new AbpException("Unkown UI framework: " + context.BuildArgs.UiFramework); } @@ -107,6 +107,7 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations")); RandomizeSslPorts(context, steps); RandomizeStringEncryption(context, steps); + RandomizeAuthServerPassPhrase(context, steps); UpdateNuGetConfig(context, steps); ChangeConnectionString(context, steps); ConfigureDockerFiles(context, steps); 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 244b1008b0..8777291c24 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 @@ -41,6 +41,7 @@ public abstract class AppTemplateBase : TemplateInfo RemoveUnnecessaryPorts(context, steps); RandomizeSslPorts(context, steps); RandomizeStringEncryption(context, steps); + RandomizeAuthServerPassPhrase(context, steps); UpdateNuGetConfig(context, steps); ConfigureDockerFiles(context, steps); ChangeConnectionString(context, steps); @@ -240,7 +241,7 @@ public abstract class AppTemplateBase : TemplateInfo private static bool IsDefaultThemeForTemplate(ProjectBuildArgs args) { - var templateThemes = new Dictionary + var templateThemes = new Dictionary { { AppTemplate.TemplateName, AppTemplate.DefaultTheme }, { AppProTemplate.TemplateName, AppProTemplate.DefaultTheme }, @@ -610,6 +611,11 @@ public abstract class AppTemplateBase : TemplateInfo steps.Add(new RandomizeStringEncryptionStep()); } + protected static void RandomizeAuthServerPassPhrase(ProjectBuildContext context, List steps) + { + steps.Add(new RandomizeAuthServerPassPhraseStep()); + } + protected void UpdateNuGetConfig(ProjectBuildContext context, List steps) { steps.Add(new UpdateNuGetConfigStep("/aspnet-core/NuGet.Config")); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceServiceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceServiceTemplateBase.cs index 3aa6754c19..3e396e8113 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceServiceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceServiceTemplateBase.cs @@ -38,6 +38,7 @@ public abstract class MicroserviceServiceTemplateBase : TemplateInfo DeleteUnrelatedUiProject(context, steps); SetRandomPortForHostProject(context, steps); RandomizeStringEncryption(context, steps); + RandomizeAuthServerPassPhrase(context, steps); return steps; } @@ -69,4 +70,9 @@ public abstract class MicroserviceServiceTemplateBase : TemplateInfo { steps.Add(new MicroserviceServiceStringEncryptionStep()); } + + private static void RandomizeAuthServerPassPhrase(ProjectBuildContext context, List steps) + { + steps.Add(new RandomizeAuthServerPassPhraseStep()); + } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs index 54d234b5c3..88fc0dfcbe 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs @@ -23,19 +23,20 @@ public abstract class MicroserviceTemplateBase : TemplateInfo DeleteUnrelatedProjects(context, steps); RandomizeStringEncryption(context, steps); + RandomizeAuthServerPassPhrase(context, steps); UpdateNuGetConfig(context, steps); ConfigureTheme(context, steps); return steps; } - + protected void ConfigureTheme(ProjectBuildContext context, List steps) { if (!context.BuildArgs.Theme.HasValue) { return; } - + if (context.BuildArgs.Theme != Theme.NotSpecified) { context.Symbols.Add(context.BuildArgs.Theme.Value.ToString().ToUpper()); @@ -54,7 +55,7 @@ public abstract class MicroserviceTemplateBase : TemplateInfo private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, UiFramework uiFramework) { var mvcUiPackageName = "@volo/abp.aspnetcore.mvc.ui.theme.leptonx"; - var packageJsonFilePaths = new List + var packageJsonFilePaths = new List { "/MyCompanyName.MyProjectName.AuthServer/package.json", "/MyCompanyName.MyProjectName.Web/package.json" @@ -68,11 +69,11 @@ public abstract class MicroserviceTemplateBase : TemplateInfo if (uiFramework == UiFramework.BlazorServer) { var blazorServerUiPackageName = "@volo/aspnetcore.components.server.leptonxtheme"; - var blazorServerPackageJsonFilePaths = new List + var blazorServerPackageJsonFilePaths = new List { "/MyCompanyName.MyProjectName.Blazor/package.json" }; - + foreach (var blazorServerPackageJsonFilePath in blazorServerPackageJsonFilePaths) { steps.Add(new RemoveDependencyFromPackageJsonFileStep(blazorServerPackageJsonFilePath, mvcUiPackageName)); @@ -82,11 +83,11 @@ public abstract class MicroserviceTemplateBase : TemplateInfo else if (uiFramework == UiFramework.Angular) { var ngUiPackageName = "@volosoft/abp.ng.theme.lepton-x"; - var angularPackageJsonFilePaths = new List + var angularPackageJsonFilePaths = new List { "/angular/package.json" }; - + foreach (var angularPackageJsonFilePath in angularPackageJsonFilePaths) { steps.Add(new RemoveDependencyFromPackageJsonFileStep(angularPackageJsonFilePath, ngUiPackageName)); @@ -138,7 +139,7 @@ public abstract class MicroserviceTemplateBase : TemplateInfo steps.Add(new RemoveFolderStep("/apps/blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor-server")); - + context.Symbols.Add("ui:angular"); break; @@ -157,7 +158,7 @@ public abstract class MicroserviceTemplateBase : TemplateInfo null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveProjectFromTyeStep("blazor-server")); - + context.Symbols.Add("ui:blazor"); break; @@ -180,7 +181,7 @@ public abstract class MicroserviceTemplateBase : TemplateInfo steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server", "MyCompanyName.MyProjectName.Blazor")); steps.Add(new RenameProjectInTyeStep("blazor-server", "blazor")); - + context.Symbols.Add("ui:blazor-server"); break; @@ -198,7 +199,7 @@ public abstract class MicroserviceTemplateBase : TemplateInfo steps.Add(new RemoveProjectFromTyeStep("blazor-server")); steps.Add(new RemoveFolderStep("/apps/angular")); - + context.Symbols.Add("ui:mvc"); break; } @@ -215,4 +216,9 @@ public abstract class MicroserviceTemplateBase : TemplateInfo { steps.Add(new UpdateNuGetConfigStep("/NuGet.Config")); } + + private static void RandomizeAuthServerPassPhrase(ProjectBuildContext context, List steps) + { + steps.Add(new RandomizeAuthServerPassPhraseStep()); + } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeAuthServerPassPhraseStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeAuthServerPassPhraseStep.cs new file mode 100644 index 0000000000..b0b7dc7a44 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeAuthServerPassPhraseStep.cs @@ -0,0 +1,35 @@ +using System; +using System.Linq; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates; + +public class RandomizeAuthServerPassPhraseStep : ProjectBuildPipelineStep +{ + protected const string DefaultPassPhrase = "00000000-0000-0000-0000-000000000000"; + + public override void Execute(ProjectBuildContext context) + { + var appSettings = context.Files + .Where(x => !x.IsDirectory) + .Where(x => x.Content.IndexOf(DefaultPassPhrase, StringComparison.InvariantCultureIgnoreCase) >= 0) + .ToList(); + + var randomPassPhrase = Guid.NewGuid().ToString("D"); + foreach (var appSetting in appSettings) + { + appSetting.NormalizeLineEndings(); + + var appSettingLines = appSetting.GetLines(); + for (var i = 0; i < appSettingLines.Length; i++) + { + if (appSettingLines[i].Contains(DefaultPassPhrase)) + { + appSettingLines[i] = appSettingLines[i].Replace(DefaultPassPhrase, randomPassPhrase); + } + } + + appSetting.SetLines(appSettingLines); + } + } +}