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