Skip to content

Instantly share code, notes, and snippets.

@itszero
Forked from anonymous/port_forwarding.rb
Created August 13, 2010 15:38

Revisions

  1. itszero revised this gist Aug 13, 2010. 1 changed file with 17 additions and 10 deletions.
    27 changes: 17 additions & 10 deletions port_forwarding.rb
    Original file line number Diff line number Diff line change
    @@ -1,21 +1,28 @@
    #!/usr/bin/ruby -w

    require 'socket'

    server = TCPServer.open(7788)
    loop do
    Thread.start(server.accept) do |client|
    remote = TCPSocket.open("bbs.csie.ntnu.edu.tw", 23)
    client.write "[Host]:[Port]> "
    target = ""
    while s = client.getc.chr
    client.write s
    break if s == "\n" || s == "\r"
    target += s
    end
    target = target.split(":")
    client.write "Connecting to #{target.inspect}...\n"
    remote = TCPSocket.open(target[0], target[1] || 23)
    loop do
    r, w, e = IO.select([client, remote], nil, nil, 0)
    next if r.nil?
    r.each do |f|
    r, w, e = IO.select([client, remote], nil, nil, 0)
    (r || []).each do |f|
    if f == remote
    client.write remote.getc.chr
    else
    remote.write client.getc.chr
    end
    end
    end
    end
    end
    end
    end
    end
    end
    end
  2. itszero revised this gist Aug 13, 2010. 1 changed file with 14 additions and 13 deletions.
    27 changes: 14 additions & 13 deletions port_forwarding.rb
    Original file line number Diff line number Diff line change
    @@ -5,16 +5,17 @@
    server = TCPServer.open(7788)
    loop do
    Thread.start(server.accept) do |client|
    remote = TCPSocket.open("bbs.csie.ntnu.edu.tw", 23)
    Thread.start do
    while s = remote.getc do
    client.write s.chr
    end
    end
    Thread.start do
    while s = client.getc do
    remote.write s.chr
    end
    end
    end
    end
    remote = TCPSocket.open("bbs.csie.ntnu.edu.tw", 23)
    loop do
    r, w, e = IO.select([client, remote], nil, nil, 0)
    next if r.nil?
    r.each do |f|
    if f == remote
    client.write remote.getc.chr
    else
    remote.write client.getc.chr
    end
    end
    end
    end
    end
  3. @invalid-email-address Anonymous created this gist Aug 13, 2010.
    20 changes: 20 additions & 0 deletions port_forwarding.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    #!/usr/bin/ruby -w

    require 'socket'

    server = TCPServer.open(7788)
    loop do
    Thread.start(server.accept) do |client|
    remote = TCPSocket.open("bbs.csie.ntnu.edu.tw", 23)
    Thread.start do
    while s = remote.getc do
    client.write s.chr
    end
    end
    Thread.start do
    while s = client.getc do
    remote.write s.chr
    end
    end
    end
    end