Exemple #1
0
        public override bool Run()
        {
            byte version = Convert.ToByte(Target["Version"]);

            object filterObject = null;

            TcpForwarder.delDataFilter s = null, r = null;

            if (FilterFile != null)
            {
                if (!FilterFile.Exists)
                {
                    WriteError("FilterFile dosen't exists");
                    return(false);
                }

                ScriptHelper script = ScriptHelper.CreateFromFile(FilterFile.FullName, ScriptHelper.DefaultCoreOptions);
                filterObject = script.CreateNewInstance();

                s = (TcpForwarder.delDataFilter)ReflectionHelper.GetDelegate <TcpForwarder.delDataFilter>(filterObject, "OnSend");
                r = (TcpForwarder.delDataFilter)ReflectionHelper.GetDelegate <TcpForwarder.delDataFilter>(filterObject, "OnReceive");

                WriteInfo("Filter Send", s == null ? "NULL" : "OK", s == null ? ConsoleColor.Red : ConsoleColor.Green);
                WriteInfo("Filter Receive", r == null ? "NULL" : "OK", r == null ? ConsoleColor.Red : ConsoleColor.Green);
            }

            TcpForwarder tcp = null;

            try
            {
                tcp = new TcpForwarder(ProxyEndPoint, version, ProxyUser, ProxyPassword, s, r);

                tcp.OnConnect  += Tcp_OnConnect;
                tcp.OnEror     += Tcp_OnEror;
                tcp.OnDisposed += (sender, e) => { ReflectionHelper.FreeObject(filterObject); };

                tcp.Start(new IPEndPoint(IPAddress.Any, LocalPort), RemoteEndPoint);
            }
            catch
            {
                if (tcp != null)
                {
                    tcp.Dispose();
                }
                return(false);
            }

            return(CreateJob(tcp) != null);
        }
        public override bool Run()
        {
            byte version = Convert.ToByte(Target["Version"]);

            TcpForwarder tcp = new TcpForwarder(this, ProxyEndPoint, version, ProxyUser, ProxyPassword);
            try
            {
                tcp.Start(new IPEndPoint(IPAddress.Any, LocalPort), RemoteEndPoint);
            }
            catch
            {
                tcp.Dispose();
                return false;
            }
            return CreateJob(tcp) != null;
        }
        public override bool Run()
        {
            byte version = Convert.ToByte(Target["Version"]);

            TcpForwarder tcp = new TcpForwarder(this, ProxyEndPoint, version, ProxyUser, ProxyPassword);

            try
            {
                tcp.Start(new IPEndPoint(IPAddress.Any, LocalPort), RemoteEndPoint);
            }
            catch
            {
                tcp.Dispose();
                return(false);
            }
            return(CreateJob(tcp) != null);
        }
Exemple #4
0
        public override void OnReceived(TcpSession tcpSession, byte[] buffer, long offset, long size)
        {
            var receivedDataByteArray = new byte[size];

            Array.Copy(buffer, receivedDataByteArray, size);
            var receivedData = ParserInfo.ParserDataType == ParserDataType.Hex
                ? SplitData.GetHexValueFromByteArray(receivedDataByteArray)
                : Encoding.UTF8.GetString(receivedDataByteArray);

            Console.WriteLine($"{receivedData}");
            if (ParserInfo.IsAknowledge)
            {
                SendAcknowledgeMent(tcpSession, receivedData);
            }
            RavenDB.RavenDbConnector.Add(new RavenDB.GpsData {
                Data = receivedData
            });
            Rabbitmq.RabbitBusProvider.AddToQueue(new Rabbitmq.GpsData {
                DeviceName = ParserInfo.ParserName, CreatedDateTime = DateTime.Now, Message = receivedData
            }, ParserInfo.ParserName);
            //Rabbitmq.QueueHandler.AddToSubscriber(ParserInfo.ParserName, ReceivedData);
            if (ParserInfo.IsForwardData)
            {
                if (!string.IsNullOrEmpty(ParserInfo.RedirectIp) && ParserInfo.RedirectPort > 0)
                {
                    if (TcpForwarder == null)
                    {
                        Console.WriteLine($"Forwarding data:{receivedData}");

                        TcpForwarder = new TcpForwarder(IPAddress.Parse(ParserInfo.RedirectIp), ParserInfo.RedirectPort);
                        TcpForwarder.ForwardData(receivedDataByteArray);
                    }
                    else
                    {
                        Console.WriteLine($"Forwarding data:{receivedData}");
                        TcpForwarder.ForwardData(receivedDataByteArray);
                    }
                }
            }
        }
            void thStart(object sender)
            {
                IPEndPoint remote = (IPEndPoint)sender;

                while (!IsDisposed)
                {
                    try
                    {
                        Socket source = MainSocket.Accept();

                        _Module.WriteInfo("Connected: " + source.RemoteEndPoint.ToString());

                        TcpForwarder destination = new TcpForwarder(_Module, ProxySocket, bSocketType, true, _User, _Password);
                        socks.Add(destination);

                        State state = new State(source, destination.MainSocket);
                        destination.Connect(remote, source);
                        source.BeginReceive(state.Buffer, 0, state.Buffer.Length, 0, OnDataReceive, state);
                    }
                    catch
                    {
                        break;
                    }
                }
            }