public static IHostBuilder CreateHostBuilder(string[] args) { var configuration = new ReverseProxyConfiguration(); ConfiguratorBuilder.InitializeConfiguration(args, new[] { "logger.yml", "reverse-proxy.yml" }).Bind(configuration); LogLanguage.Language = configuration.Language; return(Host.CreateDefaultBuilder(args) .UseWindowsService() .UseSystemd() .ConfigureLogging( loggingBuilder => { loggingBuilder.ClearProviders(); loggingBuilder.AddSerilog(dispose: true); } ) .ConfigureServices((hostContext, services) => { services.AddSingleton(configuration); services.AddSingleton(typeof(ITcpClientFactory), typeof(TcpClientFactory.TcpClientFactory)); services.AddSingleton(typeof(IProxy), typeof(TcpProxy.TcpProxy)); services.AddHostedService <Worker>(); })); }
public TcpProxy(ILogger <TcpProxy> logger, ReverseProxyConfiguration configuration, ITcpClientFactory tcpClientFactory) { _logger = logger; _configuration = configuration; _tcpClientFactory = tcpClientFactory; var serializer = new Serializer(new[] { typeof(FailcPacket) }); var packetString = serializer.Serialize(new FailcPacket { Type = LoginFailType.Maintenance }); _packet = Encoding.Default.GetBytes($"{packetString} "); for (var i = 0; i < packetString.Length; i++) { _packet[i] = Convert.ToByte(_packet[i] + 15); } _packet[^ 1] = 25;