You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.7 KiB
49 lines
1.7 KiB
// Author: Gockner, Simon
|
|
// Created: 2020-02-07
|
|
// Copyright(c) 2020 SimonG. All Rights Reserved.
|
|
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using GBase.Logging;
|
|
using GBase.Logging.Interfaces;
|
|
using GBase.Server.Interfaces;
|
|
using Microsoft.AspNetCore;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
|
|
namespace GBase.Server
|
|
{
|
|
class Program
|
|
{
|
|
static async Task Main(string[] args)
|
|
{
|
|
try
|
|
{
|
|
ILog log = new Log();
|
|
log.InitializeLog();
|
|
log.AddLogger(new ConsoleLogger());
|
|
|
|
IGBaseServerSettings serverSettings = new GBaseServerSettings();
|
|
await serverSettings.ParseArguments(args);
|
|
|
|
log.AddLogger(new FileLogger(serverSettings.LogFilePath, serverSettings.LogFileName));
|
|
|
|
IWebHost host = CreateWebHostBuilder(serverSettings).Build();
|
|
await host.RunAsync();
|
|
|
|
host.Dispose(); //TestMe: Check if this destroys the server while it is running
|
|
await log.DisposeAsync();
|
|
}
|
|
catch (Exception ex) //TODO: decide what to do in this case
|
|
{
|
|
Console.WriteLine(ex);
|
|
throw;
|
|
}
|
|
}
|
|
|
|
private static IWebHostBuilder CreateWebHostBuilder(IGBaseServerSettings serverSettings) =>
|
|
WebHost.CreateDefaultBuilder()
|
|
.UseKestrel(options => { options.Listen(serverSettings.IpAddress, serverSettings.Port); })
|
|
.UseUrls($"{serverSettings.Protocol.GetProtocolString()}{serverSettings.IpAddress}:{serverSettings.Port}")
|
|
.UseStartup<Startup>();
|
|
}
|
|
}
|
|
|