private void SendRequestToServer(object retobj)
        {
            Hashtable hash = new Hashtable(this)
            {
                { retobj, "a" },
                { "Dummy", "a" }
            };

            if (_lease != null)
            {
                _send_object = hash;
                string obj_uri = RemotingServices.GetObjectUri((MarshalByRefObject)_lease);
                var    objref  = RemotingServices.Marshal(this);
                try
                {
                    _channel.MakeCall(obj_uri, typeof(ILease).GetMethod("Register", new[] { typeof(ISponsor) }), objref);
                }
                catch (Exception)
                {
                }
            }
            else
            {
                Trace.WriteLine(_channel.SendRequest(hash, true).ToString());
            }
        }
        static int Main(string[] args)
        {
            if (ProcessArgs(args))
            {
                try
                {
                    var channel = new CustomChannel(_uri, BindStream, GetMessageObject,
                                                    _null_uri, !string.IsNullOrEmpty(_output_path));
                    if (_cmd.Equals("raw"))
                    {
                        if (_cmdargs.Count != 1)
                        {
                            Console.Error.WriteLine("Must specify base64 encoded string or a file containing the raw data.");
                        }
                        else
                        {
                            string path = _cmdargs.First();
                            byte[] data;
                            if (File.Exists(path))
                            {
                                data = File.ReadAllBytes(path);
                            }
                            else
                            {
                                data = Convert.FromBase64String(path);
                            }

                            Console.WriteLine(channel.SendRequest(data));
                        }
                    }
                    else
                    {
                        SetupServer();
                        if (_ver == 0 && !_useser)
                        {
                            _ver = DetectMajorVersion(channel);
                            Console.WriteLine("Detected version {0} server", _ver);
                        }

                        IRemoteClass ret = CreateRemoteClass(channel);
                        ExecuteCommand(ret);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return(1);
                }
                return(0);
            }
            else
            {
                return(1);
            }
        }
Пример #3
0
        static int Main(string[] args)
        {
            if (ProcessArgs(args))
            {
                try
                {
                    SetupServer();
                    var channel = new CustomChannel(_uri, BindStream, GetMessageObject, _null_uri);
                    if (_cmd.Equals("raw"))
                    {
                        if (_cmdargs.Count != 1)
                        {
                            Console.Error.WriteLine("Must specify base64 encoded object");
                        }
                        else
                        {
                            Console.WriteLine(channel.SendRequest(Convert.FromBase64String(_cmdargs.First())));
                        }
                    }
                    else
                    {
                        if (_ver == 0 && !_useser)
                        {
                            _ver = DetectMajorVersion(channel);
                            Console.WriteLine("Detected version {0} server", _ver);
                        }

                        IRemoteClass ret = CreateRemoteClass(channel);
                        ExecuteCommand(ret);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return(1);
                }
                return(0);
            }
            else
            {
                return(1);
            }
        }
        private static IRemoteClass CreateRemoteClassSerial(CustomChannel channel)
        {
            ILease lease = null;

            if (_uselease)
            {
                lease = channel.MakeCall <ILease>(_uri.AbsolutePath, typeof(MarshalByRefObject).GetMethod("InitializeLifetimeService"));
            }

            SerializerRemoteClass remote = new SerializerRemoteClass(channel, lease);

            if (!string.IsNullOrWhiteSpace(_installdir) || _autodir)
            {
                if (_autodir)
                {
                    DirectoryInfo curr_dir = remote.GetDirectory(".");
                    _installdir = curr_dir.FullName;
                }

                string path      = Path.Combine(_installdir, "FakeAsm.dll");
                bool   installed = true;

                try
                {
                    installed = remote.FileExists(path);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex.ToString());
                }

                if (!installed)
                {
                    try
                    {
                        remote.WriteFile(path, File.ReadAllBytes(typeof(IRemoteClass).Assembly.Location));
                    }
                    catch
                    {
                    }
                }

                try
                {
                    Trace.WriteLine(string.Format("{0}", channel.SendRequest(new SerializableRegister(_remotename), false)));
                }
                catch
                {
                }
            }

            try
            {
                IRemoteClass ret = GetExistingRemoteClass();

                ret.ToString();

                return(ret);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.ToString());
            }

            return(remote);
        }