コード例 #1
0
ファイル: Channel.cs プロジェクト: wantaotao1994/TrojanDotnet
        private async System.Threading.Tasks.Task HandRecieveDataFromClientAsync(Memory <byte> memoryBuffer, int offset, int length)
        {
            var stream = _clientInProxy.GetStream();

            var    byteData = memoryBuffer.ToArray();
            string str      = Encoding.UTF8.GetString(byteData);

            if (LocalProxyStatus.Connect == localProxyStatus)
            {
                var address = SetHttpProxy(byteData);
                await _clientOutProxy.ConnectAsync(memoryBuffer.ToArray(), offset, length, address);

                localProxyStatus = LocalProxyStatus.Transfer;
                if (address.IsHttps)
                {
                    await stream.WriteAsync(Encoding.UTF8.GetBytes(HTTP_CONECTED_RES_STR));
                }
                else
                {
                    await _clientOutProxy.WriteDataAsync(memoryBuffer.ToArray(), offset, length);
                }
            }
            else if (LocalProxyStatus.Transfer == localProxyStatus)
            {
                await _clientOutProxy.WriteDataAsync(memoryBuffer.ToArray(), offset, length);
            }
        }
コード例 #2
0
ファイル: Channel.cs プロジェクト: wantaotao1994/TrojanDotnet
 public Channel(TcpClient clientInProxy, AbsClientOutProxy clientOutProxy)
 {
     localProxyStatus = LocalProxyStatus.Connect;
     _clientInProxy   = clientInProxy;
     _clientOutProxy  = clientOutProxy;
 }