Merge pull request #10463 from abpframework/maliming/ms-patch

Add `MicroserviceServiceStringEncryptionStep`
pull/10467/head
liangshiwei 4 years ago committed by GitHub
commit bb4b682309
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -62,7 +62,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice
private static void RandomizeStringEncryption(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
steps.Add(new RandomizeStringEncryptionStep());
steps.Add(new MicroserviceServiceStringEncryptionStep());
}
}
}

@ -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 MicroserviceServiceStringEncryptionStep : 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;
}
}
}

@ -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();

Loading…
Cancel
Save