From 151b7ec56445ff5ab5c31c15e3f6a1c1e0596e0d Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 28 Oct 2021 18:00:23 +0800 Subject: [PATCH 1/2] Add `MicroserviceServiceRandomizeStringEncryptionStep` --- .../MicroserviceServiceTemplateBase.cs | 2 +- ...iceServiceRandomizeStringEncryptionStep.cs | 62 +++++++++++++++++++ .../RandomizeStringEncryptionStep.cs | 2 +- 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceRandomizeStringEncryptionStep.cs 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 7f96a6556c..377a94e400 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 @@ -62,7 +62,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice private static void RandomizeStringEncryption(ProjectBuildContext context, List steps) { - steps.Add(new RandomizeStringEncryptionStep()); + steps.Add(new MicroserviceServiceRandomizeStringEncryptionStep()); } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceRandomizeStringEncryptionStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceRandomizeStringEncryptionStep.cs new file mode 100644 index 0000000000..1a041826ca --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceRandomizeStringEncryptionStep.cs @@ -0,0 +1,62 @@ +using System; +using System.IO; +using System.Linq; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates +{ + public class MicroserviceServiceRandomizeStringEncryptionStep : RandomizeStringEncryptionStep + { + public override void Execute(ProjectBuildContext context) + { + var appSettings = context.Files + .Where(x => !x.IsDirectory && x.Name.EndsWith("appSettings.json", StringComparison.InvariantCultureIgnoreCase)) + .Where(x => x.Content.IndexOf("StringEncryption", StringComparison.InvariantCultureIgnoreCase) >= 0) + .ToList(); + + const string defaultPassPhrase = "gsKnGZ041HLL4IM8"; + var randomPassPhrase = FindDefaultPassPhrase(context) ?? GetRandomString(defaultPassPhrase.Length); + 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].Contains(defaultPassPhrase)) + { + appSettingLines[i] = appSettingLines[i].Replace(defaultPassPhrase, randomPassPhrase); + } + } + + appSetting.SetLines(appSettingLines); + } + } + + protected static string FindDefaultPassPhrase(ProjectBuildContext context) + { + var directoryInfo = new DirectoryInfo(context.BuildArgs.OutputFolder); + do + { + var msSolution = Directory.GetFiles(directoryInfo.FullName, "*.sln", SearchOption.TopDirectoryOnly).FirstOrDefault(); + if (msSolution != null) + { + var appSettings = Directory.GetFiles(Path.Combine(directoryInfo.FullName, "apps", "auth-server"), + "appsettings.json", SearchOption.AllDirectories).FirstOrDefault(); + if (appSettings != null) + { + var file = File.ReadAllText(appSettings); + const string searchText = "DefaultPassPhrase\": \""; + var s = file.IndexOf(searchText, StringComparison.Ordinal) + searchText.Length; + var e = file.IndexOf("\"", s, StringComparison.Ordinal); + var defaultPassPhrase = file.Substring(s, e - s); + return defaultPassPhrase; + } + } + directoryInfo = directoryInfo.Parent; + } while (directoryInfo?.Parent != null); + + return null; + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeStringEncryptionStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeStringEncryptionStep.cs index 6fc2bafc95..4899283d62 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeStringEncryptionStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeStringEncryptionStep.cs @@ -33,7 +33,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates } } - private static string GetRandomString(int length) + protected static string GetRandomString(int length) { const string letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var builder = new StringBuilder(); From d780ca0e3035066b8efe7fc0f937f26abbda598d Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 28 Oct 2021 18:02:35 +0800 Subject: [PATCH 2/2] Rename to `MicroserviceServiceStringEncryptionStep`. --- .../Templates/Microservice/MicroserviceServiceTemplateBase.cs | 2 +- ...yptionStep.cs => MicroserviceServiceStringEncryptionStep.cs} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/{MicroserviceServiceRandomizeStringEncryptionStep.cs => MicroserviceServiceStringEncryptionStep.cs} (96%) 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 377a94e400..351c400ed8 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 @@ -62,7 +62,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice private static void RandomizeStringEncryption(ProjectBuildContext context, List steps) { - steps.Add(new MicroserviceServiceRandomizeStringEncryptionStep()); + steps.Add(new MicroserviceServiceStringEncryptionStep()); } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceRandomizeStringEncryptionStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceStringEncryptionStep.cs similarity index 96% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceRandomizeStringEncryptionStep.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceStringEncryptionStep.cs index 1a041826ca..b78723ad41 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceRandomizeStringEncryptionStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MicroserviceServiceStringEncryptionStep.cs @@ -5,7 +5,7 @@ using Volo.Abp.Cli.ProjectBuilding.Building; namespace Volo.Abp.Cli.ProjectBuilding.Templates { - public class MicroserviceServiceRandomizeStringEncryptionStep : RandomizeStringEncryptionStep + public class MicroserviceServiceStringEncryptionStep : RandomizeStringEncryptionStep { public override void Execute(ProjectBuildContext context) {