4580527 [rkeene@sledge /home/rkeene/devel/reverse-utils]$ cat -n rtelnet.tcl
   1: #!/usr/bin/tcl -n
   2: set port [lindex $argv 0]
   3: if {$port==""} { puts "Usage:\n\t$argv0 <port>"; exit 1 }
   4: 
   5: proc bgerror {error} { puts "$error" }
   6: 
   7: proc ProccessConnect {s a p} {
   8:   global DefaultSock
   9:   puts "Connection from $a/$p ($s \[Default\])"
  10:   fileevent $s readable "ProcCommand $s"
  11:   set DefaultSock $s
  12: }
  13: proc SendCommand {} {
  14:   global DefaultSock
  15:   gets stdin data
  16:   if {[string index $data 0]=="-"} {
  17:     set cmd [lindex [string range $data 1 end] 0]
  18:     switch $cmd {
  19:       exit { exit }
  20:     }
  21:   }
  22:   if {[string index $data 0]!="="} { set outsock $DefaultSock } else { set outsock [string range [lindex $data 0] 1 end]; set data [lrange $data 1 end] }
  23:   catch { 
  24:     puts $outsock "$data"
  25:     flush $outsock
  26:   }
  27: }
  28: 
  29: proc ProcCommand {sock} {
  30:   global DefaultSock
  31:   if {$sock!=$DefaultSock} { set hdr "($sock) " } else { set hdr "" }
  32:   gets $sock data
  33:   foreach ln [split $data \n] {
  34:     puts "$hdr$ln"
  35:     flush stdout
  36:   }
  37:   if {[eof $sock]} {
  38:     puts "$hdr\Connection closed."
  39:     catch { close $sock }
  40:   }
  41: }
  42: 
  43: proc sendbreak {cmd} {
  44:   global DefaultSock
  45:   catch { 
  46:     puts -nonewline $DefaultSock "$cmd"
  47:     flush $DefaultSock
  48:   }
  49:   return 0
  50: }
  51: 
  52: proc prompt {} {
  53:   global DefaultSock
  54: puts "!"
  55:   return 0
  56: }
  57: 
  58: puts "REVERSE TELNET Client.  Listening for host on port $port"
  59: fileevent stdin readable SendCommand
  60: socket -server ProccessConnect $port
  61: signal -restart trap INT "sendbreak \003"
  62: signal -restart trap TSTP "sendbreak \032"
  63: vwait forever
  64: 

rtelnet.tcl is the client (unfirewalled) side of rtelnet.
4580528 [rkeene@sledge /home/rkeene/devel/reverse-utils]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 1999-10-09 01:49:35