Files
Ngino/src/Ngino.Client/Program.cs
T

38 lines
1.4 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Ngino.Client;
try
{
var options = ClientOptions.Parse(args);
Console.WriteLine("Ngino client");
Console.WriteLine($" client id: {options.ClientId}");
Console.WriteLine($" server tunnel: {options.TunnelUri}");
Console.WriteLine($" local upstream: {options.Upstream}");
if (options.InsecureSkipTlsVerify)
{
Console.WriteLine(" WARNING: server TLS certificate validation is disabled");
}
// Args are parsed by ClientOptions; keep them away from the host configuration.
var builder = Host.CreateApplicationBuilder(new HostApplicationBuilderSettings { Args = [] });
builder.Services.AddSingleton(options);
builder.Services.AddSingleton<TunnelClient>();
builder.Services.AddHostedService<TunnelWorker>();
builder.Services.AddWindowsService(service => service.ServiceName = "NginoClient");
// The EventLog provider defaults to Warning; connection state is worth seeing there.
builder.Logging.AddFilter<Microsoft.Extensions.Logging.EventLog.EventLogLoggerProvider>("Ngino.Client", LogLevel.Information);
await builder.Build().RunAsync();
return 0;
}
catch (Exception exception)
{
Console.Error.WriteLine(exception.Message);
Console.Error.WriteLine();
Console.Error.WriteLine(ClientOptions.Usage);
return 1;
}