コード例 #1
0
 public override void init()
 {
     try
     {
         io = new IO();
         if (lport == -1)
         {
             Class c = Class.forName(target);
             ForwardedTCPIPDaemon daemon = (ForwardedTCPIPDaemon)c.newInstance();
             daemon.setChannel(this);
             Object[] foo = getPort(session, rport);
             daemon.setArg((Object[])foo[3]);
             new Thread(daemon).start();
             connected = true;
             return;
         }
         else
         {
             Socket socket = (factory == null) ?
                             new Socket(target, lport) :
                             factory.createSocket(target, lport);
             socket.setTcpNoDelay(true);
             io.setInputStream(socket.getInputStream());
             io.setOutputStream(socket.getOutputStream());
             connected = true;
         }
     }
     catch (Exception e)
     {
         Console.WriteLine("target={0},port={1}", target, lport);
         Console.WriteLine(e);
     }
 }
コード例 #2
0
        public override void init()
        {
            try
            {
                io = new IO();
                if (lport == -1)
                {
                    ForwardedTCPIPDaemon daemon = (ForwardedTCPIPDaemon)Activator.CreateInstance(Type.GetType(target));
                    daemon.setChannel(this);
                    Object[] foo = getPort(session, rport);
                    daemon.setArg((Object[])foo[3]);
                    new System.Threading.Thread(daemon.run).Start();
                    connected = true;
                    return;
                }
                else
                {
                    Socket socket;

                    if (factory == null)
                    {
                        var ep = new IPEndPoint(Dns.GetHostEntry(target).AddressList[0], lport);
                        socket = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                        socket.Connect(ep);
                    }
                    else
                    {
                        socket = factory.createSocket(target, lport);
                    }

                    socket.NoDelay = true;

                    io.setInputStream(new NetworkStream(socket));
                    io.setOutputStream(new NetworkStream(socket));
                    connected = true;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("target={0},port={1}", target, lport);
                Console.WriteLine(e);
            }
        }
コード例 #3
0
        public override void run()
        {
            try
            {
                if (lport == -1)
                {
                    Type c = Type.GetType(target);
                    daemon = (ForwardedTCPIPDaemon)c.newInstance();

                    PipedMemoryStream Out = new PipedMemoryStream(32 * 1024);
                    /*
                    PipedOutputStream Out = new PipedOutputStream();
                    io.setInputStream(new PassiveInputStream(Out
                                                             , 32 * 1024
                                                             ), false);
                    */
                    io.setInputStream(Out);
                    daemon.setChannel(this, getInputStream(), Out);
                    object[] foo = getPort(getSession(), rport);
                    daemon.setArg((object[])foo[3]);

                    new Thread(new ThreadStart(daemon.run)).Start();
                }
                else
                {
                    socket = (factory == null) ?
                       Util.createSocket(target, lport, TIMEOUT) :
                      factory.createSocket(target, lport);
                    socket.NoDelay=true;
                    io.setInputStream(socket.GetStream());
                    io.setOutputStream(socket.GetStream());
                }
                sendOpenConfirmation();
            }
            catch //(Exception e)
            {
                sendOpenFailure(SSH_OPEN_ADMINISTRATIVELY_PROHIBITED);
                close = true;
                disconnect();
                return;
            }

            thread = Thread.CurrentThread;
            Buffer buf = new Buffer(rmpsize);
            Packet packet = new Packet(buf);
            int i = 0;
            try
            {
                while (thread != null &&
                      io != null &&
                      io.In != null)
                {
                    i = io.In.Read(buf.buffer,
                                 14,
                                 buf.buffer.Length - 14
                                 - 32 - 20 // padding and mac
                                 );
                    if (i <= 0)
                    {
                        eof();
                        break;
                    }
                    packet.reset();
                    if (close) break;
                    buf.putByte((byte)Session.SSH_MSG_CHANNEL_DATA);
                    buf.putInt(recipient);
                    buf.putInt(i);
                    buf.skip(i);
                    getSession().write(packet, this, i);
                }
            }
            catch //(Exception e)
            {
                //Console.Error.WriteLine(e);
            }
            //thread=null;
            //eof();
            disconnect();
        }
コード例 #4
0
        public override void run()
        {
            try
            {
                if (lport == -1)
                {
                    Type c = Type.GetType(target);
                    daemon = (ForwardedTCPIPDaemon)c.newInstance();

                    PipedMemoryStream Out = new PipedMemoryStream(32 * 1024);

                    /*
                     * PipedOutputStream Out = new PipedOutputStream();
                     * io.setInputStream(new PassiveInputStream(Out
                     *                                       , 32 * 1024
                     *                                       ), false);
                     */
                    io.setInputStream(Out);
                    daemon.setChannel(this, getInputStream(), Out);
                    object[] foo = getPort(getSession(), rport);
                    daemon.setArg((object[])foo[3]);

                    new Thread(new ThreadStart(daemon.run)).Start();
                }
                else
                {
                    socket = (factory == null) ?
                             Util.createSocket(target, lport, TIMEOUT) :
                             factory.createSocket(target, lport);
                    socket.NoDelay = true;
                    io.setInputStream(socket.GetStream());
                    io.setOutputStream(socket.GetStream());
                }
                sendOpenConfirmation();
            }
            catch //(Exception e)
            {
                sendOpenFailure(SSH_OPEN_ADMINISTRATIVELY_PROHIBITED);
                close = true;
                disconnect();
                return;
            }

            thread = Thread.CurrentThread;
            Buffer buf    = new Buffer(rmpsize);
            Packet packet = new Packet(buf);
            int    i      = 0;

            try
            {
                while (thread != null &&
                       io != null &&
                       io.In != null)
                {
                    i = io.In.Read(buf.buffer,
                                   14,
                                   buf.buffer.Length - 14
                                   - 32 - 20 // padding and mac
                                   );
                    if (i <= 0)
                    {
                        eof();
                        break;
                    }
                    packet.reset();
                    if (close)
                    {
                        break;
                    }
                    buf.putByte((byte)Session.SSH_MSG_CHANNEL_DATA);
                    buf.putInt(recipient);
                    buf.putInt(i);
                    buf.skip(i);
                    getSession().write(packet, this, i);
                }
            }
            catch //(Exception e)
            {
                //Console.Error.WriteLine(e);
            }
            //thread=null;
            //eof();
            disconnect();
        }
コード例 #5
0
		public override void Run()
		{
			try
			{
				if (lport == -1)
				{
					Type c = Sharpen.Runtime.GetType(target);
					daemon = (ForwardedTCPIPDaemon)System.Activator.CreateInstance(c);
					PipedOutputStream @out = new PipedOutputStream();
					io.SetInputStream(new Channel.PassiveInputStream(this, @out, 32 * 1024), false);
					daemon.SetChannel(this, GetInputStream(), @out);
					object[] foo = GetPort(GetSession(), rport);
					daemon.SetArg((object[])foo[3]);
					new Sharpen.Thread(daemon).Start();
				}
				else
				{
					socket = (factory == null) ? Util.CreateSocket(target, lport, TIMEOUT) : factory.
						CreateSocket(target, lport);
					socket.NoDelay = true;
					io.SetInputStream(socket.GetInputStream());
					io.SetOutputStream(socket.GetOutputStream());
				}
				SendOpenConfirmation();
			}
			catch (Exception)
			{
				SendOpenFailure(SSH_OPEN_ADMINISTRATIVELY_PROHIBITED);
				close = true;
				Disconnect();
				return;
			}
			thread = Sharpen.Thread.CurrentThread();
			Buffer buf = new Buffer(rmpsize);
			Packet packet = new Packet(buf);
			int i = 0;
			try
			{
				while (thread != null && io != null && io.@in != null)
				{
					i = [email protected](buf.buffer, 14, buf.buffer.Length - 14 - 32 - 20);
					// padding and mac
					if (i <= 0)
					{
						Eof();
						break;
					}
					packet.Reset();
					if (close)
					{
						break;
					}
					buf.PutByte(unchecked((byte)Session.SSH_MSG_CHANNEL_DATA));
					buf.PutInt(recipient);
					buf.PutInt(i);
					buf.Skip(i);
					GetSession().Write(packet, this, i);
				}
			}
			catch (Exception)
			{
			}
			//System.err.println(e);
			//thread=null;
			//eof();
			Disconnect();
		}
コード例 #6
0
        public override void Run()
        {
            try
            {
                if (lport == -1)
                {
                    Type c = Sharpen.Runtime.GetType(target);
                    daemon = (ForwardedTCPIPDaemon)System.Activator.CreateInstance(c);
                    PipedOutputStream @out = new PipedOutputStream();
                    io.SetInputStream(new Channel.PassiveInputStream(this, @out, 32 * 1024), false);
                    daemon.SetChannel(this, GetInputStream(), @out);
                    object[] foo = GetPort(GetSession(), rport);
                    daemon.SetArg((object[])foo[3]);
                    new Sharpen.Thread(daemon).Start();
                }
                else
                {
                    socket = (factory == null) ? Util.CreateSocket(target, lport, TIMEOUT) : factory.
                             CreateSocket(target, lport);
                    socket.NoDelay = true;
                    io.SetInputStream(socket.GetInputStream());
                    io.SetOutputStream(socket.GetOutputStream());
                }
                SendOpenConfirmation();
            }
            catch (Exception)
            {
                SendOpenFailure(SSH_OPEN_ADMINISTRATIVELY_PROHIBITED);
                close = true;
                Disconnect();
                return;
            }
            thread = Sharpen.Thread.CurrentThread();
            Buffer buf    = new Buffer(rmpsize);
            Packet packet = new Packet(buf);
            int    i      = 0;

            try
            {
                Session _session = GetSession();
                while (thread != null && io != null && io.@in != null)
                {
                    i = [email protected](buf.buffer, 14, buf.buffer.Length - 14 - Session.buffer_margin);
                    if (i <= 0)
                    {
                        Eof();
                        break;
                    }
                    packet.Reset();
                    buf.PutByte(unchecked ((byte)Session.SSH_MSG_CHANNEL_DATA));
                    buf.PutInt(recipient);
                    buf.PutInt(i);
                    buf.Skip(i);
                    lock (this)
                    {
                        if (close)
                        {
                            break;
                        }
                        _session.Write(packet, this, i);
                    }
                }
            }
            catch (Exception)
            {
            }
            //System.err.println(e);
            //thread=null;
            //eof();
            Disconnect();
        }