tshelper - Telnet server helper for IRC services and server developers tshelper is a small program that can be used in place of telnet or netcat to open a raw datastream to an IRC server. tshelper provides some functionality that makes it far easier on the developer than telnet or netcat, including: 1. Silent handling of PING (both the 1 parameter prefixless version and the 2 parameter prefixed version). This can be disabled if a user wishes to handle PING him or her self. 2. tee-like logging of all data sent to or received from the IRC server. 3. Full IPv6 and UNIX domain socket support to connect to the server, as well as vhost (bind ip) support. 4. An optional script file, listing all commands that would be sent to the server after it connects. Each command is listed per line, and # comments are permitted (provided the # character is in the very first column of a line). 5. Easy marking of all text by a 4 character prefix. '*** ' marks text generated by the tshelper program itself, '<== ' marks text received from the IRC server, '==> ' marks text sent to the IRC server from user input, and 'S=> ' marks text sent to the server from the script file. This marking makes it easier to follow the data stream. These prefixes can also be disabled if desired. 6. A control code usable in the interactive interface and in the script file that is replaced with the current timestamp (in UNIX epoch format) before being sent to the server. This can vastly simplify developers work and efforts. The control code is CTRL-K. 7. A control code usable in the interactive interface and in the script file to force a blank line to be sent to the server. This is needed for interacting with certain non-IRC protocols. The control code is CTRL-E. 8. Local echo is by default on. This can be disabled if desired. 9. Unique exit codes for each type of error situation, useful in a shell script or another program via system(): 0 - Successful completion (EOF from user) 1 - Syntax error on the command line 2 - DNS lookup error for the target hostname 3 - Connection error (in connect()) 4 - Connection error (in select()) 5 - Read error from server 6 - Read error from STDIN (shouldn't be possible) 7 - The user or server tried to use too long of a line, 512 bytes per RFC1459 8 - Write error to server 9 - Logfile error 10 - DNS lookup error for the vhost/bind hostname 11 - Binding error for the vhost/bind ip 12 - Script file error 13 - EOF from server, the server closed the link without a read() error 14 - Unable to create a UNIX domain socket (client) tshelper is written by W. Campbell with some code from Sentinel (also by W. Campbell) and FreeBSD's whois client. The UNIX domain socket code is from J. Johnston NOTE: If there is a better suggestion for a control code rather than CTRL-K, please tell me so. NOTE: To compile this on Solaris, you must edit the Makefile and add: -lsocket to the LDFLAGS line. For such a small program, it is not worth creating a configure script. WARNING: The author is not responsible for any problem this program may cause, or the behavior of any user of this program. tshelper is provided 'AS IS' with no warranty or liability. # $Id: README,v 1.11 2004/05/18 02:49:32 wcampbel Exp $