コード例 #1
0
        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>();
            }));
        }
コード例 #2
0
        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;