Пример #1
0
        public bool Connect(string ip, ushort port, string name)
        {
            if (tcpClient == null)
            {
                initializeClient();
            }
            else
            {
                if (tcpClient.IsConnected())
                {
                    throw new Exception("You are allready connected to a server, try to disconnect first!");
                }
            }

            if (ip == "localhost")
            {
                ip = "127.0.0.1";
            }

            if (!tcpClient.Connect(ip, port))
            {
                tcpClient.Dispose();
                tcpClient = null;
                return(false);
            }

            tcpClient.SendAction("CONNECT", name, Encoding.Unicode);
            return(true);
        }
Пример #2
0
 public void Disconnect(string name)
 {
     if (tcpClient != null)
     {
         if (tcpClient.IsConnected())
         {
             tcpClient.SendAction("DISCONNECT", name, Encoding.Unicode);
             tcpClient = null;
         }
     }
 }
Пример #3
0
 public void SameNameError(Message message)
 {
     tcpClient = null;
     if (mainApp.InvokeRequired)
     {
         mainApp.Invoke((Action <string>)mainApp.WriteMessage, new object[] { message.ToString(Encoding.Unicode) });
     }
     else
     {
         mainApp.WriteMessage(message.ToString(Encoding.Unicode));
     }
 }
Пример #4
0
        public async Task Start(string ip, ushort port)
        {
            // Use namespace filter to only get the actions of this client
            using var client        = new EasyTcpActionClient(nameSpace: "EasyTcp3.Examples.ReverseShell.Client.Actions");
            client.OnUnknownAction += (s, m) => client.Send("Unknown action");
            client.OnError         += (s, e) => client.Send($"Client error: {e.Message}");
            client.OnDisconnect    += async(s, c) => await Start(ip, port);

            while (!await client.ConnectAsync(ip, port))
            {
                await Task.Delay(ConnectTimeout);
            }
            await Task.Delay(-1);
        }
Пример #5
0
        public async Task Start(string ip, ushort port)
        {
            // Use namespace filter to only get the actions of this client
            using var client = new EasyTcpActionClient(nameSpace: "EasyTcp3.Examples.ReverseShell.Client.Actions");

            client.OnUnknownAction += // Send message to server if action is unknown
                                      (s, m) => client.Send("Unknown action");

            client.OnError += (s, e) => client.Send($"Client error: {e.Message}");

            client.OnDisconnect += // Try to reconnect if disconnected from server
                                   async(s, c) => await Connect(client, ip, port);

            await Connect(client, ip, port); // Connect to server

            await Task.Delay(-1);
        }
Пример #6
0
        public void TestClientActionsTrigger()
        {
            ushort port = TestHelper.GetPort();

            using var server = new EasyTcpServer().Start(port);

            using var client      = new EasyTcpActionClient();
            client.OnDataReceive += (sender, message) => Console.WriteLine("123");
            Assert.IsTrue(client.Connect(IPAddress.Loopback, port));

            string data = "test";

            foreach (var c in server.GetConnectedClients())
            {
                var reply = c.SendActionAndGetReply("ECHO", data);
                Assert.AreEqual(data, reply.ToString());
            }
        }
Пример #7
0
        public async Task TestDetectAllTypes()
        {
            var client = new EasyTcpActionClient(nameSpace: "EasyTcp3.Test.Actions.Types");

            for (int i = 1; i <= 7; i++)
            {
                await client.ExecuteAction(i);

                Assert.AreEqual(i, TestActions.Counter);
            }

            var server = new EasyTcpActionServer(nameSpace: "EasyTcp3.Test.Actions.Types");

            TestActions.Counter = 0;
            for (int i = 1; i <= 7; i++)
            {
                await server.ExecuteAction(i);

                Assert.AreEqual(i, TestActions.Counter);
            }
        }
Пример #8
0
 private void TcpClient_OnDisconnect(object sender, EasyTcpClient e)
 {
     tcpClient = null;
 }
Пример #9
0
 public void initializeClient()
 {
     tcpClient               = new EasyTcpActionClient();
     tcpClient.OnError      += TcpClient_OnError;
     tcpClient.OnDisconnect += TcpClient_OnDisconnect;
 }
Пример #10
0
        public void DetectAllTypes()
        {
            var client = new EasyTcpActionClient(nameSpace: "DetectTestActions");

            Assert.AreEqual(7, client.Actions.Count);
        }