diff --git a/SfeduSchedule/Program.cs b/SfeduSchedule/Program.cs index b981530..3cc24ad 100644 --- a/SfeduSchedule/Program.cs +++ b/SfeduSchedule/Program.cs @@ -3,6 +3,7 @@ using System.Reflection; using System.Threading.RateLimiting; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.OpenIdConnect; +using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.AspNetCore.Mvc.ApplicationParts; using Microsoft.Identity.Web; @@ -41,12 +42,19 @@ var timeLimit = int.TryParse(configuration["TIME_LIMIT"], out var parsedTimeLimi #endregion #region Работа с папкой данных -// создать папку data если не существует +// Создать папку data если не существует var dataDirectory = Path.Combine(AppContext.BaseDirectory, "data"); if (!Directory.Exists(dataDirectory)) Directory.CreateDirectory(dataDirectory); GlobalConsts.JwtFilePath = Path.Combine(dataDirectory, "jwt.txt"); + +// Создать подкаталог для плагинов var pluginsPath = Path.Combine(dataDirectory, "Plugins"); +if (!Directory.Exists(pluginsPath)) Directory.CreateDirectory(pluginsPath); + +// Создать подкаталог для ключей Data Protection +var dataProtectionKeysDirectory = Path.Combine(dataDirectory, "keys"); +if (!Directory.Exists(dataProtectionKeysDirectory)) Directory.CreateDirectory(dataProtectionKeysDirectory); #endregion #region Работа с логированием @@ -229,6 +237,10 @@ builder.Services.Configure(options => options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("172.16.0.0"), 12)); // 172.16.x.x - 172.31.x.x }); +// Хранение ключей Data Protection в папке data +builder.Services.AddDataProtection() + .PersistKeysToFileSystem(new DirectoryInfo(dataProtectionKeysDirectory)); + var app = builder.Build(); var logger = app.Services.GetRequiredService>();