125 lines
3.8 KiB
C#
125 lines
3.8 KiB
C#
using ExtensiblePortfolioSite.SDK.Plugins;
|
|
|
|
namespace ExtensiblePortfolioSite
|
|
{
|
|
public class Program
|
|
{
|
|
private static void ParseArgs(String[] args, WebApplicationBuilder builder)
|
|
{
|
|
Boolean Error = false;
|
|
Boolean Help = false;
|
|
string ConfigPath = "eps_host_config.json";
|
|
|
|
for (int x = 0; x < args.Length; x++)
|
|
{
|
|
String arg = args[x];
|
|
if (arg[0] == '+')
|
|
{
|
|
int s = arg.IndexOf('=');
|
|
|
|
String value = arg[(s + 1)..];
|
|
|
|
switch(arg[0..s])
|
|
{
|
|
case "+config":
|
|
ConfigPath = value;
|
|
break;
|
|
|
|
default:
|
|
Console.Error.WriteLine($"Unknown Arg '{arg}'");
|
|
Error = true;
|
|
break;
|
|
}
|
|
}
|
|
else if(arg == "help")
|
|
Help = true;
|
|
}
|
|
|
|
if(Help)
|
|
{
|
|
Console.Error.WriteLine(
|
|
@"
|
|
[Help Message]
|
|
+log_nofile Disable Flle Logging
|
|
+log_output={filepath} Set Log File Output
|
|
+help Display Help Message
|
|
"
|
|
);
|
|
Environment.Exit(Error ? 0 : 2);
|
|
}
|
|
|
|
if(Error)
|
|
{
|
|
Console.Error.WriteLine("Exitting!");
|
|
Environment.Exit(2);
|
|
}
|
|
|
|
Config.SetConfigFile(ConfigPath);
|
|
LoggerProvider Logger;
|
|
builder.Logging.ClearProviders();
|
|
|
|
Config.ConfigObject Conf = Config.GetConfig();
|
|
|
|
if (!Conf.LoggingSection.FileLogging)
|
|
builder.Logging.AddProvider(Logger = new LoggerProvider(Conf.LoggingSection.ConsoleLogging));
|
|
else
|
|
builder.Logging.AddProvider(Logger = new LoggerProvider(Conf.LoggingSection.ConsoleLogging,
|
|
Conf.LoggingSection.FileLogPath!
|
|
.Replace("{date}", DateTime.Now.ToString("yyyy-MM-dd"))
|
|
.Replace("{time}", DateTime.Now.ToString("HH.mm.ss"))
|
|
));
|
|
|
|
// Log On Error
|
|
PluginManager.OnLogMessage += Logger.LogPluginManagerError;
|
|
}
|
|
|
|
public static void Main(string[] args)
|
|
{
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
// Load Config
|
|
Config.GetConfig();
|
|
|
|
// Parse input args
|
|
ParseArgs(args, builder);
|
|
|
|
// Load Plugins
|
|
PluginManager.LoadPlugins(Path.GetFullPath("Plugins/"));
|
|
|
|
//Initialize Plugins
|
|
PluginManager.InitializePlugins();
|
|
|
|
// TODO: [Resource] File Provider
|
|
// TODO: [Plugin] Web Static Files Provider
|
|
// TODO: [Plugin] Web Hook Provider
|
|
// TODO: [Plugin] API Endpoint Provider
|
|
// TODO: [Plugin] Standard Cache Provider
|
|
// TODO: [Plugin] Reloading/Updating/Disabling
|
|
|
|
// Add services to the container.
|
|
builder.Services.AddRazorPages();
|
|
|
|
var app = builder.Build();
|
|
|
|
// Configure the HTTP request pipeline.
|
|
if (!app.Environment.IsDevelopment())
|
|
{
|
|
app.UseExceptionHandler("/Error");
|
|
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
|
app.UseHsts();
|
|
}
|
|
|
|
app.UseHttpsRedirection(); // not required but, prefered
|
|
|
|
app.UseStaticFiles("/content");
|
|
|
|
app.UseRouting();
|
|
|
|
//app.UseAuthorization(); // not needed
|
|
|
|
app.MapRazorPages();
|
|
|
|
app.Run();
|
|
}
|
|
}
|
|
} |