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); }
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; } } }