yavsc/src/Yavsc.Org/Startup.cs

73 lines
2.9 KiB
C#
Raw Normal View History

2026-02-22 23:39:56 +00:00
2024-02-25 18:05:10 +00:00
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
2025-02-17 23:56:28 +00:00
using Yavsc.Server.Helpers;
2024-02-25 18:05:10 +00:00
using Yavsc.Settings;
namespace Yavsc;
public class Startup
{
public static void Configure(
IApplicationBuilder app,
IOptions<SiteSettings> siteSettings,
IOptions<SmtpSettings> smtpSettings,
IOptions<PayPalSettings> payPalSettings,
IOptions<GoogleAuthSettings> googleSettings,
2025-08-31 18:27:53 +01:00
IStringLocalizer<Startup> localizer,
2024-02-25 18:05:10 +00:00
ILoggerFactory loggerFactory,
string environmentName)
{
Config.GoogleSettings = googleSettings.Value;
ResourcesHelpers.GlobalLocalizer = localizer;
Config.SmtpSetup = smtpSettings.Value;
Config.Authority = siteSettings.Value.Authority;
string blogsDir = siteSettings.Value.Blog ?? throw new Exception("blogsDir is not set.");
string billsDir = siteSettings.Value.Bills ?? throw new Exception("billsDir is not set.");
Config.Temp = siteSettings.Value.TempDir;
Config.PayPalSettings = payPalSettings.Value;
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
// TODO implement an installation & upgrade procedure
// Create required directories
2026-09-17 22:22:18 +01:00
foreach (string dir in new string[] { blogsDir, billsDir, Config.Temp })
2024-02-25 18:05:10 +00:00
{
if (dir == null)
{
throw new Exception(nameof(dir));
}
DirectoryInfo di = new(dir);
if (!di.Exists)
{
di.Create();
}
}
2026-09-17 22:22:18 +01:00
CheckApp(siteSettings.Value, loggerFactory.CreateLogger<Startup>(), environmentName);
2024-02-25 18:05:10 +00:00
}
2026-09-17 22:22:18 +01:00
public static void CheckApp(SiteSettings settings, ILogger logger, string environmentName)
2024-02-25 18:05:10 +00:00
{
var appData = Environment.GetEnvironmentVariable("APPDATA");
if (appData == null)
{
logger.LogWarning("AppData was not found in environment variables");
2026-09-17 22:22:18 +01:00
if (settings.DataDir == null) {
settings.DataDir = "AppData"+environmentName;
logger.LogInformation("Using: "+settings.DataDir);
} else logger.LogInformation("Using value from settings: "+settings.DataDir);
DirectoryInfo di = new DirectoryInfo(settings.DataDir);
2024-02-25 18:05:10 +00:00
if (!di.Exists)
{
di.Create();
logger.LogWarning("Created dir : "+di.FullName);
}
2024-11-06 13:00:34 +00:00
logger.LogInformation("Using existing directory: "+di.FullName);
2026-09-17 22:22:18 +01:00
Environment.SetEnvironmentVariable("APPDATA", settings.DataDir);
2024-02-25 18:05:10 +00:00
logger.LogWarning("It has been set to : "+Environment.GetEnvironmentVariable("APPDATA"));
}
}
}