Notes on jpIRC -------------- IRC ("Internet Relay Chat") is a method of conducting multiuser conversations in real time over the Internet. The system consists of a set of interconnected IRC servers (an IRC "network") to which users running IRC clients can connect. jpIRC is one of those clients. You do not need to be connected to set it up. jpIRC is a Trumpet TCP application. To run it, you will need the Trumpet TCP package as well; get tcp201.zip, tcp201.txt, and ntcpdrv.zip on my site. (Fortunately, jpIRC works better than most Trumpet TCP applications. jpIRC works fine with PPP.) While it is still under development, jpIRC has a few features that other DOS IRC clients do not have: ident and CTCP PING support, the ability to shell out, and support for incoming /DCC file transfers. Ident is particularly valuable in that more and more IRC servers require it; jpIRC can thus connect to many more servers than IRC101 or Voice. To a lesser extent, some servers require CTCP PING as well. The author, Jeff Patterson, would like to hear about your experiences with jpIRC. His email address is aa093@fan.nb.ca (preferable) or tytarg@geocities.com. Jeff recommends using Scrollit to add scrollback to jpIRC. It didn't work for me. To set up jpIRC, first set up Ntcpdrv, the TCP/IP stack it uses. You need to set some environment variables. See tcp201.txt for details. When Trumpet TCP is working, or at least as well as it's going to :-), you can set up jpIRC itself, by editing JPTCP.INI. Set Nick to the nickname you want to use on IRC. It should be one word and 9 characters or less; it is not case-sensitive. If somebody is already using the nickname you chose, the server will ask you to set another one with the /NICK command when you connect. Whatever you put for RealName will be displayed when people use the /WHOIS command on you. It does not have to be your real name. Most people like to make it a short humorous string. If your RealName is more than one word, be sure to enclose it in double quotes, for example, I have: Nick = tvdog RealName = "Cerberus, the hound of hell" (Please don't use my nick. :-) Set DefaultServer to the domain name of the server you want to use. It is futile for me to give a list of servers here since they are constantly going up and down. To find a server, check out these WWW sites: http://deckard.mc.duke.edu/irchelp/networks/index.html http://www.irchelp.org/ http://www.undernet.org/ (requires Java-capable browser) Set DefaultPort to the port on the server to connect to. 6667 is the standard IRC port, but connecting will generally be faster if you can use another one. To be safe, leave it at 6667 for now; you can change it later when you find out what ports your server listens to. UserInfo is what will be displayed when somebody uses the /CTCP USERINFO command on you. It can be whatever you want. I use it to give the URL of my WWW site: UserInfo = "http://www.oldskool.org/~tvdog/" I don't use PgpInfo (i.e., I left it at the default). See README.TXT if you want to use it. You can just leave DebugLogFlag alone. Set UserName to your user name as assigned by your ISP. For example, I have UserName = tvdog (I have Nick the same as UserName, but you don't have to do that.) Turn on AutoRegister - otherwise, you will have to use the /SERVER command to connect to a server, and your settings for DefaultServer and DefaultPort will be ignored: AutoRegister = Y You probably want ExitFirstQuit to be on; that will cause the /QUIT command in jpIRC to work the same as in ircII - i.e., you will exit jpIRC. You can exit jpIRC at any time by hitting -X also: ExitFirstQuit = Y hostname needs to be set correctly for ident to work (if ident doesn't work, many servers won't let you on, as noted above). It should normally be OK to leave it at the default: hostname = ! With that setting, jpIRC will get your machine's numeric IP address from NTCPDRV, then use that to get your machine's name from your nameserver. If you have this instead: hostname = * ... then jpIRC will use your machine's numeric address as your hostname. That won't work with many IRC servers, but it is an alternative if you have dynamic IP and "!" doesn't work for some reason. (Best advice for you is to get a new ISP! Its domain name service is broken.) Finally, if you have static IP, you can just set hostname to your (fixed) hostname: hostname = mypc.foo.bar.net TcpOpenTime should be OK as it is. If you get timeout errors while attempting to connect to a server, I think it is better to just find a faster server. HBSecs doesn't make any difference if you don't use the mail checking feature. If you do decide to use that feature, you might want to increase HBSecs, particularly if your POP server is slow to respond. In the [identd] section, leave Port and OS alone. Set UserName to your account username, the same thing you set UserName to in the [JPIRC] section above. If you want jpIRC to check periodically whether you have incoming email, fill in the stuff in the [pop3] section. Set Server to your POP server name. Set User to your POP username. Set Password to your POP password. If you have POP2 instead (do any ISP's use POP2 any more?) you could try changing Port to 109, but I don't know if that would work. Otherwise, leave it alone. Note: to enable the POP checking feature, you also have to do /SET CHKMAIL TRUE when you get online. To find out if you have mail waiting, issue /STATUS HB. Ignore the stuff in the [tn102] section. I don't use SERVERS.IRC. I find it easier just to give server names. To run jpIRC, you need to load your packet driver (of course), then load NTCPDRV.EXE, then run jpIRC. The handiest way to run it is from a batch file like this: NTCPDRV JPIRC NTCPDRV -u You don't want to leave NTCPDRV.EXE loaded all the time, since it will conflict with non-Trumpet TCP applications (as well as taking up valuable memory). The documentation in this version of jpIRC is improved over previous versions. You probably want to print out JPTCP.DOC to have a ready command reference. The online help is better too; type /HELP to see available commands, /HELP for help on a particular command. Unfortunately, many commands are undocumented. You can use them if you are familiar with ircII. Here's a little extra stuff on the commands. Jeff doesn't like to write documentation, so there are more undocumented commands than I have here (see the online help for some). If something works in ircII, you can try and see if it works in jpIRC also, even if it's not listed here or in JPIRC.DOC: /CTCP [] CTCP allows you access to the client-to-client protocol used to perform certain client specific actions between different clients on the network. The CTCP mechanism works by sending a specially coded message to another user whose client is supposed to reply with a reply message of the type, or with an error message, unless you sent it to a channel. For example, if you do: CTCP BigCheese VERSION you will receive: *** CTCP REPLY VERSION from BigCheese: ircII 2.2.2 *IX. The field may be of several types, new ones are introduced all the time, but there is a mechanism for you to find out what you can use: see CLIENTINFO. /CTCP ACTION This command can be used to send a description of what you are doing or how you are feeling or just about anything concerning you, to the current channel or query. It's just the low-level version of ME and DESCRIBE. /CTCP CLIENTINFO [] CLIENTINFO returns the known CTCP commands from another client in a list. You can inspect commands further by calling 'CLIENTINFO VERSION' for example. You will (or should) be given a one-line explanation of what this command is supposed to do. To find out about your own client services, execute a CLIENTINFO on yourself: CTCP mynick CLIENTINFO /CTCP ECHO Simply asks the remote client to return whatever you send to it. /CTCP FINGER FINGER will attempt to show the real name and idle time for the specified nickname. /CTCP PING Current time is the same as what the function $TIME() returns and represents the number of seconds since Jan 1, 1970. Other ircII clients will take a CTCP ping and bounce the time back to you. This CTCP function is used by the PING command. /CTCP TIME TIME will return the current time for the nickname specified. This differs from the /TIME command in that it asks the user's client for the time instead of the user's server, which can be a long distance away. /CTCP USERINFO USERINFO returns whatever information a person choses to put in their USER_INFORMATION variable (or the UserInfo in JPTCP.INI for jpIRC). /CTCP VERSION VERSION will show you the version of the client that a particular person is using. /DATE [|] /TIME [|] Shows the current time of day and date. If a server is specified, the time of day and date are reported from that server. If a nickname is specified it shows you the above information for that person's current server. DATE and TIME are identical. /DCC [ []] DCC handles direct connections to remote clients. The behaviour of DCC is determined by the FUNCTION specified. DCC called with no function is the same as DCC LIST /DCC CHAT DCC CHAT initiates a direct client connection chat to the given nick, who must respond with DCC CHAT. This is the most secure form of communication available on IRC. Messages sent via a DCC CHAT connection are not sent through IRC, but are sent by a direct connection between your client and the remote client. Messages are sent over a DCC CHAT connection with /MSG =nick Do *not* use this on jpIRC; it will crash the program. /DCC CLOSE [] DCC CLOSE closes an unwanted DCC connection or offer. The type, nick and arguments are the same as those shown by DCC LIST. If the arguments are not specified, the oldest connection of the specified type is closed. Problem-prone on jpIRC. /DCC GET DCC GET accepts a file transfer by direct client connection. If the filename is not supplied then it defaults to the first file offered by that nickname. The sender must first have offered the file with DCC SEND. /DCC LIST DCC LIST lists all the current DCC connections showing the type of connection, the nick of the person on the other end of the connection, the current state of that connection and any other information associated with that connection. /DCC RENAME [ [ ...]] DCC RENAME renames a file prior to a DCC GET from filename1 to filename2. If filename1 is not specified, the oldest file connection to the given nick is renamed. /DCC SEND DCC SEND initiates a file transfer by direct client connection. The recipient must accept your offer of a file transfer with DCC GET. Do *not* use this in jpIRC; it will crash the program. /DESCRIBE | This command can be used to send a description of what you are doing or how you are feeling or just about anything concerning you, to the person or channel you pass as first argument. /DESCRIBE BigCheese takes a flask of whisky out of the fridge. is supposed to produce a line on BigCheese's screen stating: * Lynx takes a flask of whisky out of the fridge. This command makes use of CTCP and is not understood by all clients. If you get an error message, your description has not arrived properly. /EXEC [-SWAP] Shells out of jpIRC and runs the command specified. If -SWAP is given, jpIRC will swap itself out to disk (using Ralf Brown's SPAWNO routines) before running the command, to give the subprogram the maximum possible memory. When the subprogram exits, you return to jpIRC. It is not a good idea to try running another Internet program with /EXEC. /KICK *| [] Kicks specified user off a given channel. Only channel operators are privileged to use this command. The is to supply some reason for the kick to the user affected as well as to other people on your channel. /LUSERS [ []] Gives a brief listing of the number of visible users, the number of invisible users (marked UMODE +i), servers and the number of operators. Given a wildcard mask such as LUSERS *.edu it will count up the number of servers and users that match. If you add a , it'll be asked for the above information. /MODE *| [+|-] [] /MODE *| [+|-]b [[![@]]] Mode command is quite complicated and it allows channel operators to change channel mode, or any user to change their personal mode. For a channel mode, is one of the following: i - channel is invite only k - Adds join key to the channel. Keys can added or removed (MODE -k ), but not changed. l - channel is limited, where is the maximum number of users allowed m - channel is moderated (only channel operators talk) n - No MSGs to the channel are allowed from someone outside the channel. o - Makes a channel operator p - channel is private s - channel is secret Note: On 2.8 servers you cannot set both +p and +s modes t - topic limits, only the channel operators may change it v - Gives someone a voice to talk on a moderated channel. A + or - sign determines whether the specified mode should be added or deleted. If you supply * as channel name, modes will apply to your current channel. The second form of the MODE command allows you to ban somebody from a channel. This is done by specifying a sting of the form nick!user@host. For example: MODE #MyChannel +b *!*@gus.* bans everybody from the channel who is on IRC from any machine whose name is gus. MODE #MyChannel +b netw1z bans anybody using the nickname netw1z. MODE #MyChannel +b *!merklin@* bans anybody whose user name is merklin. MODE #MyChannel +b jerk!tug@boat.edu bans the user tug@boat.edu from the channel whenever he is using the nickname "jerk". If you are channel operator, you can list the bans in effect on a channel: MODE #MyCHannel b /PING This command will send a CTCP PING to the given nickname. The remote client will bounce the time back and that is compared with the new current time. The difference in the two times, is how long it takes for a message to get to that person and get back. This should give you some idea of how slow or fast the network is. /QUIT [] Quits your IRC session. If a reason is supplied, it is displayed to other people on your channels. /SERVER [| []] Switches your primary server to the server specified at the specified port number. If no port number is given, the default port number is used. Your channel and AWAY status will remain unchanged. Occasionally, you can switch servers faster than the irc network can send out the information that you have left a server. So don't be surprised if it says your nickname is in use... just wait a moment and set it with NICK. If you give a number, jpIRC connects you to that numbered server in SERVERS.IRC: SERVER Doing a /SERVER with no parameters will show you your primary server. /TOPIC [] [] Changes the topic for the named channel. You have to be on the channel to change the topic and if the channel mode is +t then only a channel-operator can change the topic. /WHO *| Gives a listing of the users on an irc channel. If "*" (an asterisk) is given, the users on the current channel are shown. Note that WHO * will fail if you are not on a channel. /WINDOW [KILL|NEW|NEXT] The WINDOW command lets you manipulate multiple "windows" in jpIRC. Windows are horizontally divided sections of the screen in which different bits of irc information can be displayed. WINDOW lets you create, manipulate, and remove such windows. The parameters to WINDOW are described in their own sections. Each window can have the conversation of a channel going to it, which can be specified by executing the JOIN command in a window. /WINDOW KILL Removes the current window. This does not remove you from any channel you were on in that window. Doesn't seem to work. You can use /CLEAR -RESET. /WINDOW NEW Creates a new window by splitting either current window, or the largest window on the screen. /WINDOW NEXT Set the current window to the next numbered window. F5 is a hotkey for this.