Exemple #1
0
        private void ProcessPortforwardingRequest(ISSHConnectionEventReceiver receiver, SSH1DataReader reader)
        {
            int    server_channel = reader.ReadInt32();
            string host           = Encoding.ASCII.GetString(reader.ReadString());
            int    port           = reader.ReadInt32();

            SSH1DataWriter            writer = new SSH1DataWriter();
            PortForwardingCheckResult result = receiver.CheckPortForwardingRequest(host, port, "", 0);

            if (result.allowed)
            {
                int local_id = _channel_collection.RegisterChannelEventReceiver(null, result.channel).LocalID;
                _eventReceiver.EstablishPortforwarding(result.channel, new SSH1Channel(this, ChannelType.ForwardedRemoteToLocal, local_id, server_channel));

                writer.WriteInt32(server_channel);
                writer.WriteInt32(local_id);
                SSH1Packet p = SSH1Packet.FromPlainPayload(PacketType.SSH_MSG_CHANNEL_OPEN_CONFIRMATION, writer.ToByteArray());
                p.WriteTo(_stream, _tCipher);
            }
            else
            {
                writer.WriteInt32(server_channel);
                SSH1Packet p = SSH1Packet.FromPlainPayload(PacketType.SSH_MSG_CHANNEL_OPEN_FAILURE, writer.ToByteArray());
                p.WriteTo(_stream, _tCipher);
            }
        }
Exemple #2
0
        public override PortForwardingCheckResult CheckPortForwardingRequest(string remote_host, int remote_port, string originator_ip, int originator_port)
        {
            PortForwardingCheckResult r = new PortForwardingCheckResult();

            try {
                if (!_profile.AllowsForeignConnection && originator_ip != "127.0.0.1")
                {
                    r.allowed        = false;
                    r.reason_message = "refused";
                    return(r);
                }

                Socket local = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                local.Connect(new IPEndPoint(Util.ResolveHost(_profile.DestinationHost), _profile.DestinationPort));

                r.allowed = true;
                r.channel = new Channel(_profile.SSHHost, originator_ip, _id, null, local);
                return(r);
            }
            catch (Exception ex) {
                Debug.WriteLine(ex.StackTrace);
                Util.InterThreadWarning(ex.Message);
                r.allowed        = false;
                r.reason_message = "refused";
                return(r);
            }
        }
Exemple #3
0
        public PortForwardingCheckResult CheckPortForwardingRequest(string host, int port, string originator_host, int originator_port)
        {
            PortForwardingCheckResult r = new PortForwardingCheckResult();

            r.allowed = true;
            r.channel = this;
            return(r);
        }
 public PortForwardingCheckResult CheckPortForwardingRequest(string host, int port, string originator_host, int originator_port)
 {
     PortForwardingCheckResult r = new PortForwardingCheckResult();
     r.allowed = true;
     r.channel = this;
     return r;
 }