285 lines
11 KiB
Plaintext
285 lines
11 KiB
Plaintext
Original Message Date: 21 Sep 92 08:45:29
|
|
From: Uucp on 1:105/42
|
|
To: Tom Jennings on 1:125/111
|
|
Subj: FidoNet Tunnel paper
|
|
From m2xenix!rain.psg.com!randy
|
|
From: randy@psg.com (Randy Bush)
|
|
To: jsq@tic.com (Jay Quarterman),
|
|
Date: Mon, 21 Sep 92 7:11:07 PDT
|
|
|
|
I think that both the Internet and the FidoNet communities should learn
|
|
about this one. So, ideally, I would like to see the appended short note
|
|
published in both of your 'zines, FidoSnooze and Matrix News. As Matrix
|
|
News is more formal <g>, I could understand that John might like a
|
|
month's lead or something. Could you two guys work it out between you?
|
|
|
|
My apologies that it is so hackerish, includes code, and all that. This
|
|
stuff just needed to be written down and passed along. I have been asked
|
|
just too damn many times.
|
|
|
|
The appended is not final copy, but is quite close. A few of the usual
|
|
suspects are reviewing it. When it goes for pub, I am willing to remove
|
|
the copyright notice.
|
|
|
|
randy
|
|
|
|
- - - - - - - - - - - - - - c u t h e r e - - - - - - - - - - - - - -
|
|
|
|
How FidoNet<tm> Tunnels the Internet
|
|
Randy Bush 92.9.21
|
|
randy@psg.com 1:105/42
|
|
Copyright 1992, Pacific Systems Group. All rights reserved.
|
|
|
|
|
|
Introduction
|
|
------------
|
|
|
|
A number of the FidoNet zonegates tunnel FidoNet-FidoNet traffic over the
|
|
Internet's intercontinental TCP/IP links. This note is a short technical
|
|
explanation of how it is done. For the purposes of this note, it will be
|
|
assumed that you are familiar with FidoNet, TCP/IP, the Internet, and odd
|
|
bits of MS-DOS and uucp cruft.
|
|
|
|
|
|
Legalities
|
|
----------
|
|
|
|
FidoNet owes very deep appreciation to the IP networks which have consented
|
|
to the tunneling of FidoNet traffic through them.
|
|
|
|
FidoNet has a long-standing written agreement with the Internet not to use
|
|
the Internet for FidoNet-FidoNet traffic without explicit consent. It is
|
|
exceedingly important to note that the tunneling discussed in this note is
|
|
done with the explicit consent and encouragement of the owners of the IP
|
|
links concerned, e.g. EUnet and UNINET-ZA. It is also of note that it has
|
|
been agreed that the traffic on the link between Europe and North America
|
|
will not 'compete' with EUnet, i.e. carry traffic which should, more
|
|
appropriately, be gotten from EUnet directly, such as Internet mailing
|
|
lists, MBAS file requests, ...
|
|
|
|
|
|
Overview
|
|
--------
|
|
|
|
A goal of the hack is to make it appear as if the two FidoNet systems had
|
|
actually communicated the 'normal' way by telephone. Hence gating, in the
|
|
UFGATE sense, is not done. Instead, packed and compressed FidoNet files
|
|
(xxxxyyyy.MOn) are magically moved from the sending node's outbound
|
|
directory to the receiving node's inbound. They are then unpacked as if
|
|
they had been transported by phone.
|
|
|
|
Files are transported by moving the data from the sending FidoNet node to a
|
|
nearby UNIX<tm> host which is on the Internet. The UNIX host then sends
|
|
the file to a distant UNIX host which, in turn, transfers it to the distant
|
|
FidoNet node.
|
|
|
|
Different transports may be used between the FidoNet node and its local
|
|
UNIX host. Sending and receiving scripts are run on the UNIX hosts in
|
|
order to acommodate these differences. In the examples below, it will be
|
|
assumed that the FidoNet node is on a local ether with its local UNIX host,
|
|
but there are cases where the connection is via uucp etc.
|
|
|
|
So the file can be routed by the distant UNIX system to the target FidoNet
|
|
node, special processing and routing needs to be done by the receiving UNIX
|
|
system. Hence, inter-UNIX transport by ftp or rcp is inappropriate, and
|
|
uucp over TCP/IP, aka UUCP-t, is used, so that a command script may be
|
|
executed against the data file on the target host.
|
|
|
|
|
|
The Fidonet Node
|
|
--- ------- ----
|
|
|
|
On the local FidoNet node, mail and echomail are processed in the normal
|
|
manner using normal FidoNet tools. I happen to use Binkley and QM because
|
|
of their excellent standards conformity and their attempt to work well
|
|
despite some of the non-conforming brain-damaged implementations out there.
|
|
1:105/42 uses FTP Software's excellent PC/TCP package for IP communication
|
|
with the local SUN UNIX host rain.psg.com. Thus 1:105/42 can rcp, rsh,
|
|
etc.
|
|
|
|
On 1:105/42, the FidoNet node actually used as the zonegate, QM packs the
|
|
mail and echomail for the target FidoNet node in an outbound directory as a
|
|
uniquely named file, xxxxyyyy.MO?. As there are only ten possible unique
|
|
files of this form in any one day, *.MO[0-9], the outbound processing of
|
|
the file is done ten or less times in any one day, and is therefore run
|
|
from Binkley's event management system. So, ten times a day, 1:105/42 runs
|
|
the following .BATch file for each of the tunneled connections:
|
|
|
|
: %1 - outbound directory
|
|
: %2 - .MOn filename in outbound
|
|
: %3 - target UNIX Internet host
|
|
: %4 - script name on target UNIX Internet host
|
|
: %5 - .flo filename in outbound
|
|
: %6 - target FidoNet node on the other side of %3
|
|
:
|
|
: load ether driver and move to outbound directory
|
|
3c500
|
|
h:
|
|
cd %1
|
|
if not exist %2.* goto noout
|
|
:
|
|
: send the outbound files
|
|
for %%i in (%2.*) do call bink2eux 2fidoeu %%i %3 %4 %6
|
|
del %5.?lo
|
|
:
|
|
:noout
|
|
: go to inbound directory
|
|
cd h:\105-42
|
|
l:
|
|
cd l:\105-42\files\net\europe
|
|
:receive inbound files
|
|
rcp -b fido@rain.psg.com:%3/* .
|
|
for %%i in (*.*) do rsh rain.psg.com -l fido rm %3/%%i
|
|
: move received file to real inbound directory
|
|
mv *.* ..
|
|
:
|
|
: reset directories and get rid of driver
|
|
cd l:\105-42
|
|
c:
|
|
cd c:\105-42
|
|
inet unload
|
|
|
|
The subsidiary .BATch file BINK2UUX.BAT is as follows:
|
|
|
|
rcp -b %2 fido@rain.psg.com:%1
|
|
if errorlevel 1 goto end
|
|
rsh rain.psg.com -l fido fido2uucp %1 %2 %3 %4 %5
|
|
if errorlevel 1 goto end
|
|
: set the file length to zero but don't delete it
|
|
nullit %2
|
|
:end
|
|
|
|
|
|
The Local UNIX Host
|
|
--- ----- ---- ----
|
|
|
|
The local UNIX host, rain.psg.com, is a SUN which is on the international
|
|
Internet via UUNET's commercial IP service, AlterNet, at 56kb. It has a
|
|
user account set up named fido, with the directory structure as follows:
|
|
|
|
% ls -alg ~fido
|
|
total 9
|
|
drwxrwx--- 7 fido uucp 512 May 30 19:34 ./
|
|
drwxr-xr-x 20 root daemon 512 May 28 07:46 ../
|
|
-rw-r----- 1 fido uucp 83 May 23 18:25 .profile
|
|
-rw-r----- 1 fido uucp 74 Dec 21 1991 .rhosts
|
|
drwxrwx--- 2 fido uucp 512 Sep 20 08:17 2fidoeu/
|
|
drwxrwx--- 2 fido uucp 512 Sep 20 07:02 kudu/
|
|
drwxrwx--- 2 fido uucp 512 Sep 19 21:34 mcsun/
|
|
drwxrwx--- 2 fido uucp 512 Sep 18 07:25 pacifier/
|
|
drwxrwx--- 2 fido uucp 512 Sep 20 04:22 tmp/
|
|
|
|
The .rhosts file has an entry for puddle.fidonet.org, the FQDN for its
|
|
local friend 1:105/42, and the .profile has a restricted path as one would
|
|
have for a root account. There is a directory for each of the remote UNIX
|
|
hosts. There is also, in a directory on the .profile path, the script
|
|
invoked by 1:105/42 and that invoked by the remote UNIX system.
|
|
|
|
The script invoked by the rsh in 1:105/42's .BATch file is fido2uucp, and
|
|
is coded as follows:
|
|
|
|
#!/bin/sh
|
|
FILE=`echo $2 | tr "[A-Z]" "[a-z]"`
|
|
cd /home/fido/$1
|
|
if test -s $FILE; then
|
|
uux - -r $3!$4 $5 $2 < $FILE
|
|
fi
|
|
rm $FILE
|
|
|
|
The fidouucp script invoked by the foreign UNIX system via uuxqt is as
|
|
follows:
|
|
|
|
#!/bin/sh
|
|
SPOOL=/home/fido
|
|
SPOOLDIR=$SPOOL/$UU_MACHINE
|
|
SPOOLTMP=$SPOOL/tmp
|
|
file=`echo $2 | tr "[a-z]" "[A-Z]"`
|
|
cat - > $SPOOLTMP/$FILE
|
|
ln $SPOOLTMP/$FILE $SPOOLDIR/$FILE
|
|
rm $SPOOLTMP/$FILE
|
|
find $SPOOLDIR -size 0 -exec rm {} \;
|
|
|
|
|
|
Tying it all Together
|
|
----- -- --- --------
|
|
|
|
Of course, the two UNIX hosts must have uucp accounts for each other which
|
|
allow uuxqting of the appropriate scripts, and providing the appropriate
|
|
directories, Systems (or L.sys) entries, etc. as usual.
|
|
|
|
The observant reader will note that the system described above does not
|
|
handle transfer of arbitrary files, but only packed and compressed mail.
|
|
To make the Internet hack more general, i.e. move more than outbound mail,
|
|
we sorely need a DOS command to drive the scripts through the .?LO file in
|
|
the outbound directory. It would be invoked as, for example,
|
|
|
|
OFILES <batchname> Z:N/N <more-params>
|
|
|
|
OFILES invokes the DOS .BATch file <batchname> once for each file listed in
|
|
the .?LO file of the FidoNet node Z:N/N as follows
|
|
|
|
<batchname.BAT> <znn> <filename> <trunc-del-leave> <more-params>
|
|
|
|
where
|
|
|
|
<batchname.BAT> is the batch file named in the OFILES command
|
|
<znn> is the Z:N/N from the OFILES command
|
|
<filename> is the name of one file in the .?LO filelist
|
|
<trunc-del-leave> is TRUNC, DEL, or LEAVE depending on the .?LO options
|
|
<more-params> are the rest of the params from the OFILES command
|
|
|
|
What is missing is how OFILES knows if it can delete the entry in the .?LO
|
|
file, i.e. if the invoked .BATch file considers itself successful.
|
|
|
|
I wish to use it, for example, as
|
|
|
|
OFILES BINK2EUR 2:500/1 2fidoeu
|
|
|
|
with the .BATch file BINK2EUR as
|
|
|
|
IF NOT EXIST %2 GOTO end ; del entry if can't find
|
|
RCP -b %2 fido@rain.psg.com:%4 ; copy the file to UNIX
|
|
IF ERRORLEVEL 1 GOTO error
|
|
RSH rain.psg.com -l fido fido2uucp %2 %4 ; run the UNIX send script
|
|
IF ERRORLEVEL 1 GOTO error
|
|
IF %3 == DEL RM %2 ; delete ^ files
|
|
IF %3 == TRUNC TYPE NUL: > %2 ; truncate # files
|
|
GOTO end
|
|
:error
|
|
<tell OFILES not to delete the entry>
|
|
:end
|
|
|
|
Which would allow one to use, for example, file attaches, PLEASE, TICK, ...
|
|
via the Internet hack. Note that this hack would also allow a .BATch
|
|
hacker to drive anything against the list in a .?LO file.
|
|
|
|
|
|
Acknowledgements
|
|
----------------
|
|
|
|
Daniel Karrenberg, Daniel.Karrenberg@ripe.net, worked out the first UNIX
|
|
script file hacks with me and, more importantly, helped negotiate the very
|
|
generous permission of EUnet to carry the US/Europe traffic.
|
|
|
|
Henk Wevers, 2:500/1, helped to sort out the first such connection. We all
|
|
just wish he would share his FidoNet-side code.
|
|
|
|
Henk's partner in crime, Louis van Geel, 2:295/3, continues to very helpful
|
|
with the socio-political aspects, which seem to have become more important
|
|
than the technical in FidoNet over the years.
|
|
|
|
Dave Wilson, ccdw@hippo.ru.ac.za, and Doug Palin, doug@pacifier.rain.com,
|
|
helped generalize the hack when we added their links. They have also
|
|
contributed code.
|
|
|
|
Vince Perriello, 1:343/491, helped with some hacks and was supportive in
|
|
his wonderful garrulous way.
|
|
|
|
---
|
|
|
|
FidoNet is a trademark of Tom Jennings and Fido Software.
|
|
UNIX is a trademark of the soul-less [sic] behemouth AT&T.
|
|
|
|
-30-
|
|
|