示例#1
0
        public override ECheck Check()
        {
            if (!SystemHelper.IsAvailableTcpPort(LocalPort))
            {
                return(ECheck.Error);
            }

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

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

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

                ReflectionHelper.FreeObject(obj);

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

                return(ECheck.Ok);
            }

            return(ECheck.Error);
        }
示例#2
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);
        }