This README is non-essential to operation as to everything is rather
simple and self explanatory, but if it doesn't work, this will offer some
clue (maybe). 

__1__ rtelnetd and rtelnet

	These opens a reverse-connection to a host's STDIN/STDOUT of an
arbitrary program (normally /bin/bash), it's rather crude but if you just
need to do a couple of things it works rather well.  But if you want to do
something more complicated (like anything requiring stderr (getpass()'d
password prompts)), use rdatapiped/rdatapipe.

__1.1__ rtelnetd

Usage:
        ./rtelnetd <host> <port> <command> [<password-file>]

argv[]	name		explanation

0	retelnetd	Program name.  
1 	host	 	Host to attempt periodic connections
			to connect to rtelnet client
2	port		Port to attempt to connect to on HOST
3	command		When a connection is established, which program do 
			you want to run (/bin/bash works well)
4.	password-file	The location to a (one-line) plain-text file which
			contains a password to restrict access.

  rtelnetd is a simple program-to-socket datapipe.

  password-file can be empty (or not exist), and it a password will not be
   prompted for.

__1.2__ rtelnet

Usage:
        ./rtelnet <port>

argv[]	name		explanation

0	rtelnet		Program name.
1	port		Port that rtelnetd is trying to connect to the current
			host on (which should be the same as the parameter
			HOST on rtelnetd).

  rtelnet is a simple script similar to (and could probably be replaced
   with) netcat (nc).


__2__ rdatapiped and rdatapipe

	These setup some rather complex webs of connections to make a port
on one host to be connected (via a datapipe) to a firewalled host, its
rather interesting. 

__2.1__ rdatapiped

Usage:
        ./rdatapiped <host>

argv[]	name		explanation

0	rdatapiped	Program name
1	host		Host which will run rdatapipe

  rdatapiped connects to HOST on port 4500 (this makes up the control
    connection, which is used to send commands) and creates datapipes
    when required.

__2.2__ rdatapipe

Usage:
        ./rdatapipe <local-port> [<remote-prot> [<remote-host>] ]

argv[]	name		explanation

0	rdatapipe	Program name.
1	local-port	Port on the local machine to listen for connections
			on.
2	remote-port	Port on the remote (firewalled) host to connect to
3	remote-host	Host behind firewall to connect to (default: localhost)


Description of operation of rdatapipe:
  A "Reverse" datapipe, useful for accessing firewalled hosts.

  rdatapiped does no listening, it handles outgoing connections,
  rdatapipe handles listening connections, it listens on CONTROLPORT
  for connection from rdatapiped, then, once it has a connection, it
  (stops listening, ) it waits for a connection on LISTENPORT, when it
  gets on, it begins listening on a random port and tells the rdatapiped
  host what port its listening on and what port it would like to connect
  with, a datapipe is established between those two, then a datapipe is
  established between the connection socket and the socket attached to the
  other datapipe.  It's all very simple, you see.


__3__ Frequently Asked Questions.

__3.1__ 
	Q. Why does rtelnet's connection freeze when I run
		telnet/ftp/lynx/login/screen/etc.?

	A. Those are (attempting to do)|doing things to the terminal
		for various reasons and they do it to the terminal
		that rtelnetd was run from and not the real session
		terminal (since there isn't one).

__3.2__

	Q. Why is this written in TCL?

	A. Because I know TCL's implementation of sockets more than C's.
		Get over it.  Or write a better one.
