agper-perubahan/Program.cs
2025-05-17 03:56:24 +07:00

64 lines
2.6 KiB
C#

using perubahan;
using Microsoft.Extensions.DependencyInjection;
try
{
Console.WriteLine($"Kementerian ATR/BPN Kanwil Riau");
Console.WriteLine($"Agen Perubahan Server Versi {VerNum}");
Console.Write($"Loading settings file...");
if (!File.Exists(Path.Combine(AppContext.BaseDirectory, "settings.json")))
{
Console.WriteLine("No settings file found. Make sure settings.json exists at BaseDirectory.");
WriteLog("No default settings file found. Make sure settings.json exists at BaseDirectory.");
return;
}
string SettingsJson = File.ReadAllText(Path.Combine(AppContext.BaseDirectory, "settings.json"));
Settings = JsonNode.Parse(SettingsJson) ?? JsonNode.Parse("{}")!;
Console.WriteLine($"Done.");
Console.Write($"Preparing database connection string... ");
SqlConnectionStringBuilder CSBuilder = new ()
{
DataSource = (string)Settings["database"]!["datasource"]! ?? "",
UserID = (string)Settings["database"]!["user"]! ?? "",
Password = (string)Settings["database"]!["pass"]! ?? "",
InitialCatalog = (string)Settings["database"]!["initialcatalog"]! ?? "",
Encrypt = SqlConnectionEncryptOption.Mandatory,
TrustServerCertificate = true
};
CS = CSBuilder.ConnectionString;
Console.WriteLine($"Done.");
await UpdateCache();
Console.Write($"Configuring Kestrel Backend... ");
IWebHost host = new WebHostBuilder()
.UseKestrel(options => {
options.ListenAnyIP(443, opt =>{
opt.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2;
opt.UseHttps(Path.Combine(AppContext.BaseDirectory,"origin.pfx"));
});
options.Limits.MaxRequestBodySize = 104857600;
})
.UseContentRoot(AppContext.BaseDirectory)
// .ConfigureServices(r=>{
// r.AddResponseCompression(o=>{
// o.EnableForHttps = true;
// o.Providers.Add<Microsoft.AspNetCore.ResponseCompression.BrotliCompressionProvider>();
// o.Providers.Add<Microsoft.AspNetCore.ResponseCompression.GzipCompressionProvider>();
// });
// })
.Configure(app=>{
app
.UseMiddleware<ErrorHandling>()
.UseMiddleware<CancellationTokenSourceLinker>()
.UseMiddleware<DomainNormalize>()
.UseMiddleware<AuthCheck>()
.UseDefaultFiles()
.Map("/api",APIHandler.Handle)
.Map("/auth",Auth.Handle)
.UseStaticFiles();
})
.Build();
host.Run();
}
catch (Exception ex)
{
WriteLog(ex, "Program.cs");
}