async void TcpConnection(object sender, Sockets.Plugin.Abstractions.TcpSocketListenerConnectEventArgs args)
        {
            var client = args.SocketClient;

            Packet pkt = new Packet();

            pkt.method   = "tcp";
            pkt.fromip   = client.RemoteAddress;
            pkt.fromport = client.RemotePort;
            pkt.toip     = "You";
            pkt.toport   = tcpServer.LocalPort;


            var bytesRead = -1;
            var buf       = new byte[1024];

            bytesRead = await args.SocketClient.ReadStream.ReadAsync(buf, 0, 1024);

            if (bytesRead > 0)
            {
                byte[] saveArray = new byte[bytesRead];
                Array.Copy(buf, saveArray, saveArray.Length);
                pkt.hex = Packet.byteArrayToHex(saveArray);
            }


            //TODO:make persistent?
            await client.DisconnectAsync();

            MessagingCenter.Send(this, Events.NEW_TRAFFIC_PACKET, pkt);
        }
Exemplo n.º 2
0
        private void _listener_ConnectionReceived(object sender, Sockets.Plugin.Abstractions.TcpSocketListenerConnectEventArgs e)
        {
            TcpSocketClient client = (TcpSocketClient)e.SocketClient;
            Socket          ns     = new Socket(client);

            OnNewConnection?.Invoke(ns);
        }
Exemplo n.º 3
0
 private void Listener_PeerConnectTCPRequest(object sender, Sockets.Plugin.Abstractions.TcpSocketListenerConnectEventArgs e)
 {
     //make sure its a unique peer
     foreach (Peer peer in KnownPeers)
     {
         if (peer.IpAddress == e.SocketClient.RemoteAddress)
         {
             if (baseStation.forwardAll == false)
             {
                 return;
             }
         }
     }
     //unique peer create a new TCP connection for the peer
     baseStation.NewTCPConnection(sender, e);
 }
Exemplo n.º 4
0
        private async void FirstConnection(object sender, Sockets.Plugin.Abstractions.TcpSocketListenerConnectEventArgs e)
        {
            Debug.WriteLine("TCP/ Host connected!");
            var messageBuffer = new byte[8];
            await e.SocketClient.ReadStream.ReadAsync(messageBuffer, 0, 8);

            //var client = e.SocketClient;
            //var bytesRead = -1;
            //var buf = new byte[1];
            //string message = "";
            //List<byte> bytes = new List<byte>();
            //while (bytesRead != 0)
            //{
            //    bytesRead = await e.SocketClient.ReadStream.ReadAsync(buf, 0, 1);
            //    if (bytesRead > 0)
            //    {
            //        Debug.WriteLine(buf[0]);
            //        message += System.Text.Encoding.UTF8.GetString(buf, 0, 1);
            //        bytes.Add(buf[0]);
            //    }
            //}
            //Checking if te first 4 bytes are the host address
            var connectedAddress = e.SocketClient.RemoteAddress.Split('.');

            for (int i = 0; i < 4; i++)
            {
                if ((int)messageBuffer[i] != int.Parse(connectedAddress[i]))
                {
                    Debug.WriteLine("TCP/ Connected Someone else then server. Disconnecting!");
                    await e.SocketClient.DisconnectAsync();

                    await _tcpListener.StopListeningAsync();

                    return;
                }
            }
            int deviceUserID = BitConverter.ToInt32(messageBuffer, 4);

            User.InitializeDeviceUser(deviceUserID);
            Debug.WriteLine("TCP/ RECEIVED Connection from: {0}:{1}", e.SocketClient.RemoteAddress, e.SocketClient.RemotePort);
            using (var ms = new MemoryStream())
                using (var writer = new BsonWriter(ms))
                {
                    var serializer = new JsonSerializer();
                    serializer.Serialize(writer, User.DeviceUser, typeof(User));

                    int dvcusSize = ms.ToArray().Length;
                    await e.SocketClient.WriteStream.WriteAsync(BitConverter.GetBytes(dvcusSize), 0, 4);

                    Debug.WriteLine("TCP/ Sending to server Device User Size: {0}", dvcusSize);
                    await e.SocketClient.WriteStream.FlushAsync();

                    await e.SocketClient.WriteStream.WriteAsync(ms.ToArray(), 0, (int)ms.Length);

                    Debug.WriteLine("TCP/ Sending to server Device User: {0}", Convert.ToBase64String(ms.ToArray()));
                }
            await e.SocketClient.WriteStream.FlushAsync();

            int intOk = (byte)e.SocketClient.ReadStream.ReadByte();

            //bool okCheck = BitConverter.ToBoolean(okByte, 0);
            //if ok check....

            OnMessegeTCP(messageBuffer);
            await _tcpListener.StopListeningAsync();
        }