示例#1
0
        public static async Task Start()
        {
            try
            {
                log.LogInformation("Инициализация");
                wsTunnelConfig = ConfigWatcher.GetSection("wstunnel").ConvertValue <WSTunnelConfig>();


                client = new WsClient();
                await client.OpenManagerTunnel(wsTunnelConfig, DisconnectTunnel, DisconnectSocket);

                await client.Auth();

                var tunnelGuid = await client.OpenDataTunnel(DataReceiver, DisconnecDataTunnel);

                dataConnections.TryAdd(tunnelGuid, new WSDataConnectionInfo
                {
                    TunnelId = tunnelGuid
                });
                var testObj = new EchoReq {
                    ReqId = Guid.NewGuid(), Timestamp = DateTime.UtcNow
                };
                var buffer = Encoding.UTF8.GetBytes(testObj.ToJson());
                await client.SendData(tunnelGuid, Guid.Empty, buffer, buffer.Length);

                log.LogInformation($"Послали echo - {testObj.ReqId}");

                server = new Socks5Server();
                server.Start(wsTunnelConfig.Port, RequireNewConnection, TransferData, CloseSocket);
            }
            catch (Exception e)
            {
                log.LogError($"Ошибка инициализации: {e.Message}");
                server?.Dispose();
                client?.Dispose();
            }
        }