ircgate-0.9b


This is the ircgate-0.9 documentation. There is a ASCII-only version available in ircgate.txt.
Please read this manual completely before setting up a gateway. As of Version 0.9, support for Linux AX.25 sockets was added. This was only tested against the new implementation of the AX.25 protocol stack. Take a look at this to find out what I am talking about here.

Index

The following topics are available:


General Introduction

"What is ircgate?"

Ircgate is a perl hack written by scratch by Jens David, DG1KJD . My intention was it to create a program which allows IRC (=Internet Relay Chat) users to talk to convers users (a quite similar but not compatible system created by Dieter Deyke, DK5SG/N0PRA and improved by Fred Baumgarten, DC6IQ ). This aim is achieved by translating the inter-server communication so that all users on both networks can talk to each other just as usual. In fact they don't even need to know about the existence of the gateway.

Advantages

"Why should I use the IRC system? I'm happy with the convers system!"

Well, if you're satisfied with the convers system you're lucky. I'm not. In addition to the facts that it is not very well specified (which leads to problems and strange behaviour when connecting different implementations or versions of conversd) and suffers from a lot of technical restrictions (no loop prevention, lack of KICK command...) it is just inconvenient. There is (at least to my knowledge) only one line-orientated client available which only runs on UNIX-like operating systems. Have you ever tried chatting on two channels simoultanously? Or exchanging personal messages with two persons at the same time? Did you ever lose some screens full of text in an interesting conversation because you had to go to lunch?
Modern graphical IRC clients, available for all operating systems and wanna-bes (Unix systems (X11), OS/2, Win NT, Win 95, even DOS/Win 3.1) solve all these problems. The IRC system is well-defined in RFC-1459 and stability-approved (there are IRC-networks on the global internet keeping more than 6000 users spread over 2000 channels on more than 200 servers). Moreover there are advanced features available like direct-link file transfer, digital audio transfer, scripting capabilities and so on.
Software is freely available on the net, most of it including source code, take a look at the Additional Suggestions section to find out where to get it and which packages I recommend.

"How can I use this gateway?"

First of all let me explain that it would not be an ideal situation to have everybody run his own version of this program. This would include running your own ircd and in most cases your own conversd, which increases the traffic on the net dramatically and might also lead to chaotic structures. In addition to that I did not try running two or more of these beasts on the same network, I'm pretty sure it will cause a lot of mystic and difficult-to-track-down problems, especially if people forget to change the default settings for $ircnet and $ircgate. At least the conversd-type interserver communication protocol is not very fault tolerant.
Instead, I suggest setting up our network topology like this:


U       U   U
|       |   |     U: User
I---I---I---I
|       |         I: IRC Server (ircd)
U       |
        G         G: Gateway
        |   U
        |   |     C: Convers Server (conversd)
C---C---C---C
|      / \   \
U     U   U   U     Yeah, I always liked chemistry
                        lessons at school. ;)


Setup guide

Requirements

As already stated above, ircgate is written in perl, a "Practical Extraction and Report Language" created by Larry Wall .
Since ircgate makes use of the socket interface perl 5 is required. Perl is available for nearly every unix system and also for some operating systems like windows NT and so on. But remember, you need a version with socket interface compiled in.

As of 0.9, you can also use Linux's AX.25 sockets to connect to a convers system. Take a look at the script itself to find out how.

Installation

  1. If you did not already do so, install Perl, preferably Perl 5, but Perl 4 might also do if network socket support is included.
  2. Create a directory for ircgate. I suggest /usr/local/ircgate.
  3. Extract or copy this archive's contents into the directory.
  4. Edit the script ircgate.pl itself. At the beginning you will find a paragraph marked User configurable parameter section. Read the comments and adjust the settings, adjust the first line to match the path to your perl interpreter binary, then save the script.
  5. Set the file permissions so that the script is executable and not world-readable because it contains unencrypted password strings.
  6. You should now be able to invoke the script by typing:
    ircgate.pl
    or:
    nohup ircgate.pl >/dev/null 2>/dev/null &
    The last line will make the program a background process which will even keep running after you logged out.


Technical details

"How does it work?"

Ircgate connects to both, exactly one convers server (conversd) on one side and exactly one irc server (ircd) on the other side. It acts like a native link partner for both of them, which means it meets the specifications for both systems (RFC-1459 for IRC and the SPECS file distributed with the current pp-convers implementation 3.12 for convers) but translates and exchanges messages between them:

In order to keep the networks stable (in particular most convers networks seem pretty vulnerable because of the fact that there are many different implementations but no real specification) I decided to hide both networks from each other. That means, users from one network seem to originate from the gateway host for the users on the other network.

Moreover, ircgate keeps (nearly) no own status information about channels and users. It relies on reasonable information from both its link partners, so make sure there's a reasonable implementation of the conversd and ircd systems on those hosts. During my tests I used pp-convers 3.12 and ircd 2.8.21 which seemed to be ok. As you may already have noticed the gateway script doesn't necessarily need to run on the system the ircd or the conversd is running on.


Additional Suggestions

Here are some recommended software packages:

IRC Server
This archive at ftp.funet.fi contains current IRC Server implementations
MIrc 5.0
A very powerful IRC client for Windows. There are two different versions, a 16-bit version for Windows 3.1 and a 32-bit version for Windows '95 and NT.
Zircon
IRC client for Linux (requires X11)
Internet Adventurer
Complete Internet suite including IRC Client, WWW browser, FTP client, Newsreader...
Ircle
IRC Client for Mac OS

Legal Stuff

Restrictions by law

A lot of countries, with Germany being one of them, are very restrictive about connecting amateur radio equipment with public communication services. In addition to this third-party-traffic (i.e. one of the participants of a conversation is not an amateur) is usually forbidden, so be careful about what you do.

Copyright and warranty

This perl script was written "from scratch" by Jens David, DG1KJD.
It is far from complete, but it serves its intended purpose pretty well (I think).
You may freely use, copy and modify it, as long as you respect the following rules:

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. The author(s) can't be held reliable for any misfunction or misuse of this package.


by Jens David, DG1KJD 07/11/99