Initial check in

This commit is contained in:
he 1999-06-30 16:50:57 +00:00
parent 7721350b09
commit 7f36d4e251
14 changed files with 2201 additions and 0 deletions

30
eurofile/doc/FAQ Normal file
View File

@ -0,0 +1,30 @@
$Id: FAQ,v 1.1 1999/06/30 16:50:57 he Exp $
QUESTION: How can I control the amount of debugging output?
=========
ANSWER:
eftd.c and eftp.c contain set a global variable tdu_stderr_mask.
Locate this and change the comment characters (/* .. */). For only
logging Error events, the final active statement should be
tdu_stderr_mask = TDU_LOG_ERR | TDU_LOG_IER;
To remove isdnlog output to stderr, you can also comment out the
'tdu_open_isdtlog()' statement.
The eftd server now also allows to
control the amount of debugging output via command line arguments,
refer to the eftd(8) man page for further info.
QUESTION: I don't want anonymous users to dial in without a MSN
=========
If a client without a MSN dials in, the ISDN number 0 is assumed.
With the line "guestservers 1* 2* 3* 4* 5* 6* 7* 8* 9*" in
/etc/isdn/eftaccess connections with ISDN numbers beginning with
"0" are refused. Don't forget the option "-a" for eftd to make him
the file /etc/isdn/eftaccess used.
(What's about international connections then? Do they begin with "0"?
I dont'n know, never had one...)

166
eurofile/doc/INTERWORKING Normal file
View File

@ -0,0 +1,166 @@
$Id: INTERWORKING,v 1.1 1999/06/30 16:50:58 he Exp $
The following classes of inter-working problems have been identified
====================================================================
Some clients rely on a particular order of file header parameters
appearing in file headers or description files resulting from an
extended format directory request. In particular, they fail when
optional parameters appear before the mandatory ones.
The current eftp4linux implementation works around this (without violating
protocol specifications) by providing
the mandatory parameters at the front of the file header or directory
records and in the same order as appearing in ETS 300 383 (which
does, however, not require for a particular order).
FileHeaderOrder (!) client depends on file attribute parameters
appearing in a particular order inside file headers.
XDirOrder (!) client depends on file attribute parameters
appearing in a particular order inside
description file records resulting from an
extended format directory request.
Clients can ask the server for a list of files or subdirectories
present the current working directory (by the T-DIR or S-LIST
primitives). The server responds by sending back a file containing
so-called transfer names (those are used to identify the files,
but are not necessarily equal to the file
names) or a list of subdirectory (`sub-filestore') names. Now,
if the client wants to load a certain file or change to a certain
directory, they need to send a request containing the desired transfer
name or sub-filestore name. However, several clients don't use the
transfer name as received from the server:
TransNameCases (+) upper/lower case letters are not preserved in
transfer names
DirNameCases (+) upper/lower case are not preserved in
sub-filestore names
DirNameSlash (+) client replaces slashes by backslashes in
directory names
The eftp4linux server can work around those, but such workarounds
impose additional restrictions. For example, if a there were two
files README and ReadMe, with the work around active you cannot access
both files any longer even when your clients is compliant with the
protocol specification. Thus, the corresponding workarounds are not
turned on by default, you need to explicitly request for them
(currently, by prepending an '+' character in front of your user id).
TransNameTruncated the clients truncates parts of the transfer name
(usually at the part until the last '/' character)
DirNameTruncated (!) the clients truncates parts of the directory name
(usually at the part until the last '/' character)
Truncating the transfer name at '/' has caused interworking problems
with eftp4liux version 0.0.2 because that eftp4linux implementation
inserted backslashes in filenames which are longer that 12 characters
As a result, clients suffering from this bug could not access files
with long file names.
ETS 300 383 refers to ETS 300 075 4.4.4,
which requires transfer names to be composed by '/' separated
words (each word not longer than 12 characters). By inserting '/'
characters, the resulting transfer name becomes compliant with
ETS 300 075 4.4.4, but the real originating file name is still
guessible by a human reader (at least much better than something
like "~FILE~.124"). Unfortunately, many clients have more problems
with compliant transfer names than with non-compliant names.
eftp4linux version 0.0.3 uses a database for mapping
between transfer names an file names, this will hopefully solve
that particual interwoking problem.
Truncating a directory name to its basename does not hurt so much
because the basename is sufficient for identifying a directory inside the
current working directory. (This will, however, currently not work if the
directory name is a symlink).
Keep in mind that, even when your client's protocol implementation is
able to access long file names, it might fail to load them because if
your operating system does not support long file names.
x suffers from the problem
+ suffers from the problem, but frequently works when compatibility mode
("+userid") is activated.
! suffers from the problem, but frequently that does not matter
because current eftp4linux frequently can work around this without
implying other restrictions.
- suffers from the problem, but that does not matter any more
because the current eftp4linux generally works around this.
FileHeaderOrder
| XDirOrder
| | TransNameCases
| | | DirNameCases
| | | | DirNameSlash
| | | | | TransNameTruncated
| | | | | | DirNameTruncated
eftp4linux client :-)
TELES.Fix 2.5
TELES.Fix 4.0 - x
TELES.Fix 6.0
AVM/FRITZ - + +
RVS-COM x !
BIANCA ISDN
(As BIANCA supports unix, the developers might have been aware of the
case sensitiveness problems. But unfortunately, I don't have any
logs from BIANCA sessions where a long nameed file was tried to be
downloaded.
If blank, then nothing is known because, i.e.,
- I received no connections attempting to use the corresponding feature
- I received such attempts only after the corresponding workarounds
were already implemented
- the client does not support this feature at all
- it works as it should work
Other observed connection attempts which were rejected due to wrong
user IDs (not "ftp" or "+ftp")
TELES.FIX 3.07
TELES.Fix 5.0
TELES.Fix 6.01NT
There also seem to be inter-working problems related the ISO 8208
(X.25 DTE-DTE) protocol which is used in the lower layers by Eurofile.
(This is usually implemented by the CAPI driver)
Some broken clients (i.e. those based on the xxxx isdn toolbox) miss
to pass mandatory X.25/ISO-8208 parameters with the X.25 call request
(CAPI Connect-B3-Request). If the Capi driver is also buggy and does
not detect and correct this, a misformatted, X.25 packet
(violating X.25 specs) is send. Such packets currently confuse the
Linux X.25 Layer. This has been observed with clients based on the
CSD isdn toolbox. Similar symptoms observed with certain RVS clients
might be caused by the same problem.
There is a kernel patch, ix25-2.1.128.diff, which detects the misformatted
packets and clears the call as required by the X.25 specification.
However, this will not fix the interworking problem. For this,
activate (uncomment) the #define at the last line of
include/net/x25.h. This partially helps, but is not bullet proof.
It has been reported to result in hangs when the buggy clients connect
and try to download files. For interworking with such clients, try
setting the facilities.winsize_in and facilities.winsize_out variable
in eftd.c to 1.
Miscc/open questions
Should the .. directory be present in the file generated in response
to an [S]LIST request? AVM/Fritz clients generate this entry locally
which causes .. to be displayed twice if the server also included a ..
entry in the SLIST response file.

View File

@ -0,0 +1,15 @@
$Id: INTERWORKING.de,v 1.1 1999/06/30 16:50:58 he Exp $
Bisher ist Interworking der 0.0.2-Version mit den folgenden
Protokollimplementierungen offenbar (teilweise) erfolgreich gewesen.
- mit der eigenen (Linux) EUROFile Implementierung als Gegenstelle
- AVM/Fritz
- TELES
- BIANCA ISDN
- RVS-COM Lite Version 1.22
(wobei trotzdem Probleme wie unten beschrieben auftreten können,
genaueres steht im File INTERWORKING in der Distribution)

View File

@ -0,0 +1,90 @@
$Id: PROBLEME.eftd,v 1.1 1999/06/30 16:50:59 he Exp $
Die Implementierung ist noch nicht komplett, folgende Probleme sind
bekannt:
- Navigation (so heißt bei EUROfile alles, was mit Directories zu tun hat)
ist noch nicht vollständig protokollkonform unterstützt. Hier sind
zuvor noch einige offene Fragen zu klären. (s.u.)
Zur Zeit wird immer der durch realpath(3) kanonisierte Directory-Pfad als
Filestore-Name benutzt. Dies kann dazu führen, daß Filestorenamen
mehrfach auftreten, wenn sie unter verschiedenen Namen (symlinks)
erreichbar sind (oder gewisse Links ganz ausgeblendet werden).
Es wird auch noch keine global eindeutige Information über die
Anordnung der Filestores untereinander ("Filestore Reference")
erzeugt. Das könnte zu Problemen führen, wenn ein besonders
intelligenter Client versucht, die Directory-Struktur des Servers
local nachzubilden.
- Bei einigen Clients wurden Probleme mit der Groß/Klein-schreibung
von Transfernamen beobachtet. Manche Clients benutzen sogar für
die Übertragung in der einen Richtung grundsätzlich Transfernamen in
Großbuchstaben, für die Gegenrichtung in Kleinbuchstaben. Da der Linux Server
die Transfernamen als Dateinamem (und nach Unix-Manier case sensitive)
interpretiert, können solche Clients ihre eigenen, gerade geschriebenen
Dateien nicht wieder zurücklesen. Nach den EUROFile Normen (ETS 300 383 /
ETS 300 075) sollten Transfernamen case-sensitive sein (zumindest steht
da nichts Gegenteiliges). Daher betrachte ich dieses Problem eigentlich
nicht als meines, bis mich jemand eines besseren belehrt. Seltsamerweise
habe ich auch schon connections von Clients gleicher Herstller gehabt, die
die Groß/Kleinschreibung konsistent benutzt haben. Daher vermute ich, daß das
Problem im User Interface der Software begründet ist und sich daher die
DOS, Win3.1, und Win95 Versionen oder gar dieselbe eft
Client-Version unter verschieden Windows-Version möglicherweise
unterschiedlich verhalten.
Wer einen Client mit solchen Problemen hat, kann einen
Kompatibilitätsmodus aktivieren, indem er dem Login-Namen ein
'+'-Zeichen voranstellt (z.B. userid "+ftp" statt "ftp"). Dann
wird Groß/Kleinschreibung bei Dateinamen ignoriert,
Directory-Prefixe werden stets in Kleinbuchstaben konvertiert.
Damit sind natürlich gewisse Dateien mit dem Eurofile-Protokoll
nicht mehr zugreifbar.
- Die meisten Clients scheinen offenbar, wenn man keinen login Namen
angibt, irgendeinen Default Namen (z.B wurde "No Name" bei Teles
beobachtet) zu verwenden. Das Einloggen geht dann schief, wenn
kein login account mit Namen "No Name" existiert. Um dem
vorzubeugen, solltet ihr grundsätzlich einen login-namen explizit
angeben (und zwar "ftp" bzw. "+ftp" bei anonymem Zugang).
- Die Datumsübertragung im ETS 300 075 Protokoll ist nicht y2k safe!
- Die maximale Länge von übertragbaren Dateien ist durch gewisse
Restriktionen im ETS 300 075 Protokoll begrenzt (auf ca 64 MByte bei
üblicher 1k Blockgröße).
Offene Fragen:
UNIX geht davon aus, daß die Dateistruktur eine gemeinsame Wurzel "/"
hat. Einzelne User haben darin Home-Directories.
EUROFile geht davon aus, daß jeder User einen Default-Filestore
(analog Home-Directory) hat, der gleichzeitig die logische Wurzel
aller erreichbaren Sub-Filestore's (analog Sub-Directories) ist.
Dieser Unterschied schlägt insbesondere bei Dateien zu, die nicht
unterhalb des Home-Directories des Benutzers liegen.
Die offene Frage ist, ob und wie diese unterschiedliche logische Sicht
auf den Dateibaum im Server umgesetzt werden soll.
Da die meisten Unix-ähnlichen Betriebssysteme Symlinks haben, ist
dasselbe Directory unter Umständen unter mehreren verschiedenen Namen
erreichbar, so daß die durch Datei/Directory-Namen beschriebene Struktur
nicht zwangsläufig eine reine Baumstruktur darstellt. EUROFILE geht
dagegen von einer logisch reinen Baumstruktur aus.
Die offene Frage ist, ob und wie der Server den Zugriff auf
Directories über Symlinks zulassen soll. Der einfachste Weg, eine
logische Baumstruktur für eft zur Verfügung zu stellen, besteht darin,
Symlinks zu Directories einfach auszublenden. Dann kann man natürlich
die ganzen Vorteile, die Symlinks in der Administration bieten, für
Eurofile nicht mehr nutzen (und z.B. bestehende ftp-Archive mit
Symlinks nur eingeschränkt über EUROFile zuganglich machen).
Vielleicht kann man auch die Einschränkungen aus ETS 300 383
einfach ignorieren, aber das bringt unter Umständen
protokollkonforme Clients durcheinander. Andere Lösungen
(Vorschläge willkommen) erfordern wohl mehr Implementierungsaufwand.
(Für die detailierte Beschreibung/Analyse der Interworking-Probleme siehe
auch das File INTERWORKING in der Distribution).

View File

@ -0,0 +1,54 @@
$Id: PROBLEMS-2.1.114,v 1.1 1999/06/30 16:51:00 he Exp $
Known problems observed when using X.25 on top of isdn with kernel 2.1.126
==========================================================================
The X.25 PLP implementation was originally designed to be used on top
of a synchronous line (accessed via an X.25 network device driver)
or on top of lan (IEEE 802 LLC type 2). Furthermore, the X.25
implementation as well as the related isdn4linux extensions are labelled
as "EXPERIMENTAL" code in the kernel source tree. Thus, the X.25 protocol
sometimes doesn't behave as you would expect, in particular when used
on top of isdn.
Problems related to isdn drivers:
=================================
The isdnloop HL driver apparently has problems to re-establish a
connection that has been hung up from the outgoing device. You have to
unload the isdnloop driver after the faked isdn-connection is closed
and insmod it again. With the Hisax driver, this problem is not present.
When ifconfig'ing isdn network interfaces (with encap x25iface set) down,
"disconnect indication while unconfigured" messages might appear in
the syslog. This does not indicate any problem and can be ignored.
When establishing the first X.25 connection on a link, there is a
delay of some seconds until the link becomes established. This is only
a performance problem and harmless. Furthermore, this is fixed with
recent isdn4linux versions from the isdn4linux CVS tree.
Problems related to the X.25 PLP implementation:
================================================
isdn B channels are not closed automatically when the X.25 PLP
connection is closed. If you are lucky, your peer does it. Thus,
monitor your isdn connections while using X.25 on top of isdn4linux
(i.e. by watching syslog messages or by an isdn monitor program).
You need to close the B channel connection by hand (using the
"isdnctrl hangup" command) or rely on the isdn network interface's
hangup timeout. The scripts provided with this this test distribution
try to provide workourounds for this.
Kernels prior to 2.1.125 have a bug in include/linux/x25.h which
has been reported to cause compilation problems on glibc2 systems.
2.1.127 introduced changes that broke current i4l CVS isdn subsystem.
Until this is fixed, only use cvs isdn with 2.1.126 or older.

6
eurofile/doc/README Normal file
View File

@ -0,0 +1,6 @@
$Id: README,v 1.1 1999/06/30 16:51:00 he Exp $
For previewing man pages (i.e. efthosts.5), use
nroff -man efthosts.5 | less

223
eurofile/doc/README.old Normal file
View File

@ -0,0 +1,223 @@
Expert start
============
This is an older setup procedure kept for compatibility and expert
users who want to do more with x25 on top of isdn4linux.
(this is no longer supported but as you are an expert user, you might
want to edit the scripts such that it works with this release again).
Even if you don't use isdn, this might be useful for testing PF_X25
network applications. The test distribution supports
setting up X.25 connections on top of the isdnloop driver. This allows
you to set up X25 connections between a client and a server application
running on the same machine. There is no physical x25 network
interface needed. This is similar to setting up tcp/ip connections
to the "localhost" IP address. (Using the isdn subsystem for this
might be overkill, but there is currently no other x25 loop device
driver at all).
A script "ix25test" is provided inside the scripts
directory. That script does all the necessary setups needed for
testing x.25 on top of isdn4linux. You need to edit the script to
account for your local configuration (i.e. your MSN, ISDN-numbers
of your peer, location of utility binaries and kernel sources/modules,
configuration of your isdn HL driver, ...).
You should unload all isdn drivers modules and the x25 module before
calling this script.
When done, you can just call "ix25test start". However, read the
comments in the script file as well as the remaining part of this
README file and the PROBLEMS.* files before using it.
Now the really cool stuff in detail:
1. Boot your (patched) kernel (see remarks below)
2. log in as root
3. Make sure that all isdn and x25 related modules are unloaded. I also
prefer to switch to runlevel 1 (using the command "init 1") when doing
my tests, this will usually unload all isdn drivers as well.
Call the configuration script:
ix25test start telnetd 01
(In case of problems, issue the command "ix25test stop", fix
the script, and repeat)
4. switch to another virtual terminal, log in (not as root), and
start the x25 based telnet client. Assuming your x25 based telnet
client resides in x25bin/telnet enter the command
x25bin/telnet 00 01
This will open an x25-based telnet session on top of isdn4linux
to your own machine. The isdnloop HL driver is used for this, thus
no real isdn line is occupied (and no phone bill will result from
this). If it works you should be able to log in, issue some commands
and log out again.
5. After exiting from the telnet session, switch back to the other
virtual console (where you started the ix25test script) and type
^C. This should kill the telnetd and shut down the test
configuration again.
If this worked well you can try x.25 connections on top of real isdn
connections to your own computer. Similar procedure as above, but
slightly different command arguments:
3. ix25test start telnetd 03
4. x25bin/telnet 00 03
This will establish a real isdn connection on top of hisax to yourself
(your PTT will probably charge you). Please monitor (i.e by watching
syslog messages) the isdn connections during and after your tests.
(Verify that connections are properly released after your tests and
no power dialing or other expensive actions happen during your tests.)
If this worked you might try a connection to a remote computer. Find a
partner operates an EUROFILE server and agrees that you connect to it
with this experimental software.
1. boot the test configuration as above. Alternatively, as you don't need
an x.25 based server on your own machine, "ix25test start" is
sufficient.
2. Assuming your user name on the eft server is "myname" and your
password is "mypass", switch to the non-root virtual console and type
eftp 05 myname/mypass
from the shell's prompt. This will try to connect to the remote
eft server.
3. type
dir *
from the "eftp>" prompt to list the directory of the eft server.
4. type
get <filename> [<local filename>]
from the "eftp>" prompt, where <filename> denotes a file name
present on the remote server (such as listed by the previously
issued "dir"-command). This will download that file.
5. type
put <filename> [<remote filename>]
to upload a file to the remote server. (This is known not to inter-work
with certain remote eftp servers when used with an unpatched 2.1.92
kernel).
6. type
quit
to exit from the eft session.
7. switch to the root shell's virtual console and type
ix25test stop
(or just ^C, if a server has been started) to shut down the test
configuration. The eftp program doesn't hangup the isdn line after
the eft connection is closed. (This is currently impossible
because the x25 socket interface does not provide for this
functionality). Therefor, it is recommended that you manually
hang up the isdn line (using "isdnctrl hangup" or shutting down
the test configuration). Your eft peer might close the isdn
connection after the eft session is finished, but you should not
rely on that.
You can also try to connect with your eftp client locally to the tdu.echod
server by
ix25test start tdu.echod 01
and then
eftp 01 myname/mypass.
However, as tdu.echod is not an eft server implementation, you will
only be able connect and disconnect. Any attempt to transfer files will
only trigger error events of the EUROFILE protocol implementation.
PLEASE, keep in mind that the eftp client (OVER-)writes local files.
In case of bugs, the file overwritten might be different from the file
which you specified in the target parameter of the "get" command.
If it doesn't work, what to do?
===============================
Well, this is alpha-test software and you should be able to assist
me in troubleshooting. To make this task more convenient, the ix25test
script provides some debugging support.
If you use the script and it fails before any B-channel connection got
set up you probably did not edit the script successfully. Check it.
If your syslog / isdnctrl messages indicate that the isdn b-channel
was successfully set up but no further data seems to be transferred,
there might be an inter-working problem of the X.25 PLP implementations.
Uncomment the line in the ix25test script where the x25trace program
is started and try again. This will leave a protocol trace in /tmp
which might be helpful in tracking down the problem. If you cannot
resolve such a problem yourself, please include that trace output in
your bug report.
If the x.25 connections set up successfully, but eft doesn't work, the
eft error messages reported by eftp program might reveal the problem.
The eft protocol implementation is incomplete. Thus, failures are not
not unlikely to occur.
If the standard error messages don't contain
enough information, you can make the eft programmes a lot more noisy
if you locate the line in eftp.c where the variable tdu_stderr_mask
is set. Change this to
tdu_stderr_mask = -1
and recompile. A lot of debugging output (protocol and call trace)
will appear on your terminal while the eftp program is running now.
Problems with the kernel part might also be present. Please refer to
the appropriate PROBLEMS-* file available from the same site as this
test distribution. But I consider the kernel stuff (x25 on top of
isdn4linux extensions), which I've used since end of May 1997 now with
only marginal modifications, to be much more stable than the user
level eft implementation. However, if you faced a serious kernel bug
(usually indicated by an oops messages in the syslog output) please
report it to me. The oops message will only be meaningful to me if
the addresses are reported in symbolic form. Thus, if you faced a
kernel oops, compile the ksymoops program present in your kernel
sources "script" directory, i.e (assuming kernel source is in
/home/kernel/linux-ix25):
cd /home/kernel/linux-ix25/scripts
g++ ksymoops.cc -o ksymoops
The ix25test script leaves a System.map file in the /tmp directory
which contains all symbolic address mappings of the resident
kernel as well as all isdn and x25 related modules. You can use this
file with your ksymoops program. For your convenience, ix25test also
leaves a script "oops_decode" left in /tmp. Type "/tmp/oops_decode"
after the oops happened, this will fetch the oops message from your
/var/log/messages syslog protocol file and decode it to stdout.

354
eurofile/doc/design.txt Normal file
View File

@ -0,0 +1,354 @@
$Id: design.txt,v 1.1 1999/06/30 16:51:01 he Exp $
This document is to briefly intruduce the EUROFILE protocol stack
and to document the design of the eftp4linux EUROFILE implementation.
It is derived from an original 'white paper' that I've written to
introduce the isdn4linux EUROFILE deveoping project to other developeres.
Enjoy,
Henner
Contents: 0.0 How to Read This
1.1 EUROFILE Protocol Stack, General Aspects
1.2 The ISO 8208 Protocol
1.3 The Data Link Protocols
2.1 ISO 8208 / X.25 inside Linux
2.2 Socket User Interface to Protocol Layer
2.3 Data Links in Linux: X.25 LAP_B vs. isdn4linux x75i
3.1 Encapsulation
3.2 L2 Protocol
3.3 Providing Data-link Control Primitives to the x25 Packet Layer
4. EUROFILE protocol higher layers themselves and their
implementation (currently empty :-)
0.0 How to Read This
====================
This document serves two purposes:
- It give a brief introduction on how i4l was interfaced with the
X.25 network layer (sections 3.* of this article). If you are familiar
with EFT related protocols and (isdn4)linux internals you can goto 3.0
right away and submit your comments.
- It also givea an introduction on EFT, and ideas how it was
implemented in linux. Since it took quite some time for me
to gather all the information related to EFT, I decided to write an
introduction as the initial task of the linux EFT project. That
introduction was also a good base for documentation.
Sections 1.* will provide the necessary background information.
Sections 2.* will provide background information concerning linux specific
EFT related protocol issues. If you focus on the user level part of the
EFT implementation 2.2 will be the most (or even only) important part for you.
In sections 3.* I'd like to discuss implementation issues concerning the
kernel related part. Please comment on that (no matter, whether
you are participating in the EFT project or not). You won't need to reed
this if you are not interested in the kernel related stuff (but I've
tried to describe my ideas from the i4l end users point of view).
Section 4 is to suggest a development strategy.
I've asked all EFT volunteers to subscribe to the i4l developer list. Since
I don't know whether all of them have already subscribed I also include
their addresses explicitly
1.1 EUROFILE Protocol Stack, General Aspects
============================================
From my point of view EFT is functionally similar to ftp (the purpose is to
transfer files), although the protocols used by them are totally different.
ftp runs on top of the TCP/IP protocol. EFT does not run on top of the
well supported TCP/IP protocol suite. It uses the less known (in the Unix
world) ISO-8208 network protocol instead.
TCP/IP and ISO-8208 provide similar services to the applications, namely a
connection oriented, reliable, multiplexed, and flow-controlled exchange of
data. There are also some differences, i.e. ISO-8208 preserves messages
boundaries while tcp/ip just provides reliable byte streams. And
ISO-8208 also has some strange stuff such as qualified data (which is
used by EUROFILE).
1.2 The ISO 8208 Protocol
=========================
ISO 8208 is similar to the packet layer protocol standardised by ITU-T
recommendation X.25. X.25 is widely applied in many public data networks
such as the German Datex-P network.
I didn't get the ISO-8208 specification yet, all of my
knowledge is from secondary sources. Thus, please correct me if I'm wrong!
But as I understand others, the differences between ITU X.25 and ISO 8208
are marginal (as far as the core functionality is concerned):
- ITU wanted to standardise the access to public data network switches.
Therefore, ITU specified the protocol as viewded from the network
switch (the Data Circuit Equipment "DCE")
- ISO describes the protocol in terms of the user equipment (the Data Terminal
equipment "DTE") that wants to communicate via the network.
Both standards essentially define the same protocol (but probably, the ISO
version has much more optional features which will never get implemented -:).
ITU X.25 specifies a whole protocol stack used to connect to X.25 switches
including the X.25 Packet Layer Protocol ("PLP", the network layer/layer 3
in terms of the OSI model), data link protocol ("LAP_B", OSI layer 2) and a
physical layer (OSI layer 1). ISO-8208 is just concerned with the network
layer.
I guess one could also say that ITU describes the process of communicating
with an X.25 network switch (which will route the packets) while ISO
describes how to communicate with your peer entity. Thus, ITU X.25 is also
refered as X.25 DTE-DCE. ISO, in contrast, also covers direct communication
of two X.25 peer entities (without involving an X.25 switch). This mode
of operation is frequently refered as X.25 DTE-DTE.
And this DTE-DTE mode is also used by EFT when operating over ISDN!
You can argue that the use of a network protocol like X.25 (which supports
routing and other stuff) is unnecessary when operating over a circuit
switched ISDN (and thus a waste of resources). You might be right,
but I didn't design the EFT protocol. So, don't blame me for that.
1.3 The Data Link Protocols
===========================
ITU X.25 PLP and ISO 8208 run on top of a data link protocol. ITU X.25
defines the LAP_B procedure itself. ISO-8208 doesn't define a data link
protocol itself. The layer-3 Protocol is just defined in terms of certain
data link service primitives which must be provided by the data link entity.
Protocols, which provide the data link service to ISO8208 are defined in
other ISO standards. I.e. a LAP_B protocol, which provides
such data link services, is defined in ISO 7776. ISO 7776 is (almost) identical
to the X.75 data link protocol. This layer-2 protocol is well known by
isdn4linux users who frequently choose it for tty-style connections in order
to benefit from its error recovery features.
X.75 by itself defines ITU's protocol stack to interconnect public
X.25 networks. Beside the data link protocol known by linux users, it
also defines (like X.25) a packet layer / layer 3 protocol which
is also very similar to X.25 PLP. We won't need any more information on
these (and other) X.75 procedures.
The ISO 7776 or X.75 LAP_B protocol is again similar to the LAP_B procedure
defined in ITU X.25.
In contrast to the packet layer / layer 3 protocols
the data link protocols are not purely symmetric:
The lap_b protocols work by exchanging "commands" and "responses".
Commands and responses are submitted on different data link addresses (the
protocols contain an address field to support this).
Usually, one peer submits commands using the data link address 1 and submits
responses using the data link address 3. The other peer sends commands on
address 3 and responses on address 1. Thus, before communication can start,
a decision has to be made on who is going to submit commands on data link 1
and on who must submit them on address 3.
With X.25, this decision is quite simple. The rule is that the DTE side
sends the commands on address 1 while the DCE sends the commands on address 3.
With X.75 or ISO-8208 there is no difference between the peers. Both peer
entities are functionally equivalent. Fortunately, for isdn, there is always
one side which must set up the physical isdn B channel connection by
calling the other side before communication can start. The rule is
that the calling party uses the addresses like the DTE while the called
party uses the addresses like the DCE.
Thus, when EFT is operated over ISDN, the latter rules will be applied.
When you configure the X.75 l2-protocol, isdn4linux will automatically
choose the proper data link addresses according to the rule above.
2.1 ISO 8208 / X.25 inside Linux
================================
Obviously, since EFT runs on top of ISO 8208, we definitely need an ISO
8208 protocol implementation before we can think about EFT. Fortunately,
Jonathan Naylor has add X.25 support to Linux (first kernel version
with X.25 was 2.1.16). This implementation was based on ITU-T X.25
specificatiion. But this also works well in the ISO 8208 DTE-DTE context.
2.2 Socket User Interface to Protocol Layer
===========================================
In Unix-like operating systems, ftp clients and servers are usually
implemented as user space programs which access the TCP/IP network protocol
service of the kernel by means of the socket interface. EFT does not run on
top of tcp/ip, but on top of the ISO 8208 protocol. But an operating system
can also provide access to the ISO 8208 / X.25 protocol by means of a socket
interface. Thus, EFT servers and clients might be similarly implemented as
user space programs like ftp or ftpd. The Linux X.25 implementation provides
such a socket interface.
To obtain information on socket programming you can start with "man socket".
There are also a lot of books which describe socket programming.
User space ftp eft
Socket Interface ------------ ------------
tcp x25
Kernel Space
ip lap_b
A lot of programmers are familiar with tcp/ip programming using the socket
interface. Since tcp/ip and x.25 provide similar services to the user,
programming an application that communicates via the X.25 protocol is
not essentially different from programming a tcp/ip application. However,
there are still some differences:
First, the address space and protocol family will be different
(PF/AF_INET vs. PF/AF_X25). For EUROFILE which applies X.25 in DTE-DTE
mode we can use an empty X.25 address anyway.
Second, in contrast to tcp/ip, X.25 preserves packet
boundaries. Thus, a SOCK_SEQPACKET type socket is used for X.25 while
tcp/ip uses SOCK_STREAM type sockets. If you write N bytes to a SOCK_SEQPACKET
socket using the Unix write() system call, then a read()
from the corresponding peer socket will return the same N bytes of data
as written. With stream sockets, this is generally not the case (the boundaries
of the written and read chunks won't necessarily match).
EFT also needs so called X25 qualified data to be transmitted.
The Linux X.25 protocol stack supports a special socket option that
makes the X.25 Q-Bit (which is used by the X.25 PLP to mark qualified
data packets) transparent to the uses.
2.3 Data Links in Linux: X.25 LAP_B vs. isdn4linux x75i
==========================================================
X25 needs a data link protocol implementation. The Linux X25 PLP is designed
to interface directly to a Linux network interface. It requires the network
interface to implement the X.25 data link protocol (this design decision has
been made in order to make use of intelligent X25 cards which implement the
LAP_B protocol in firmware). Jonathan Naylor has also written a lapb_module
which can be used by all x25 network interface driver developers who don't
want to implement the lap_b protocol on their own (see
Documentation/networking/lapb-module.txt).
i4l also supports a lap_b protocol (l2_prot x75i). The protocol is also
implemented below the network interface. Thus, the situation was almost as
required by the X25 PLP implementation.
However, there was one difference:
In the beginning of the isdn4linux EUROFILE project, i4l's x.75 only
allowed the upper protocol layers to send and receive data.
A user might send data to the i4l x.75 data link entity at any time.
When the data link is in the "connected" state, than i4l's x.75 protocol
implementation will just send the data to the peer. If the data link is not
in the "connected" state then i4l will automatically established the data link
first. After it has been established, the data will be send. No special user
intervention was (and still is) needed for establishing the data link,
i4l takes care on this.
The X25 PLP protocol, in contrast, wants to control the establishment
and release of the data link by itself. Therefore, an X.25 lap_b
implementation must provide all the lap_b service primitives
(DL_DATA request/indication, DL_ESTABLISH request/indication/confirm,
DL_RELEASE request/indication/confirm) to the upper protocol layers (and in
turn doesn't need to bother with automatic establishment procedures). Each
message exchanged between the X.25 LAP_B network interface and the X25 PLP
gets prepended a special byte. This byte is used to distinguish between the
different DL service primitives. It is not part of the protocol data units to
be sent to or received from the peer. (see
Documentation/networking/x25-iface.txt for details)
Remark: The lapb module only provides the protocol implementation. The
interpretation of the leading control byte as defined in x25-iface.txt
must be performed by the x25-network-interface-device driver which uses
the lapb module.
3. Providing the X.25 lap_b Interface in i4l
=============================================
3.1 Encapsulation
=================
Some method of providing the LAP_B data link service primitives to
the Linux X.25 layer needed to be implemented.
This was done by means of a new encapsulation type for isdn4linux
network interfaces. This encapsulation is turned on in the same manner
as all other encapsulation, namely by the isdnctrl command, e.g.
"isdnctrl encap isdn0 x25iface"
configures an isdn4linux network interface for use by the X25 PLP.
This is only to indicate that the messages sent through the network interface
are formatted according to the Linux' x25-lapb interface specification.
(it might also be used by the device driver to take special actions which are
specific for communicating with the x25 PLP layer). But the encapsulation
doesn't specify how lower parts of i4l system will provide the data link
service. (the encap doesn't specify the data link protocol which provides the
data link service, but the protocol used between the network device and the
network protocol layers).
3.2 L2 Protocol
===============
The data link protocol used to communicate between two peers is specified
as usual by the l2_prot parameter. For EFT,
"isdnctrl l2_prot isdn0 x75i"
is used and no new protocol implementation was necessary.
However, it might be a good opportunity to reserve two new
l2_prot parameters, namly x25_dte and x25_dce. These specify almost the same
as x75i, the only difference is that the data link addresses used for commands
and responses will be fixed (in X.75 they depend on who initiates the
corresponding call).
The x25_dte or dce l2-protocols are not needed for EFT, but
they might enable other x25 users to access public x25 data networks by
means of i4l b_channels (dialup as well as leased lines). Maybe some
x25 folks will be quite happy about this.
3.3 Providing Data Link Control Primitives to the x25 Packet Layer
==================================================================
One design question was how to provide the LAP_B protocol service by i4l.
(interpreting and setting the first byte and mapping them on the DL primitives
according to Documentation/networking/x25-iface.txt).
The final implementation used the existing x.75 L2 protocol
present in the HL level drivers but implemented the processing of the
first-byte (as specified in Documentation/networking/x25-iface.txt)
entirely in the isdn4linux link level module. This
was possible without any extension to the isdn4linux LL-HL driver interface.
Thus, no hardware level driver needed to be adopted and every hardware
level driver that supports l2prot x75i can be used for EUROFILE.
(This already turned out to be a FAQ: does Linux EUROFILE work with my
xy-isdn-card? Answer: Yes, if the card supports l2prot x75i. In
patricular all cards supported by HiSax work)
4. EUROFILE protocol higher layers themselves and their implementation
======================================================================
TO BE ADDED

182
eurofile/doc/eft_wuauth.5 Normal file
View File

@ -0,0 +1,182 @@
.\" $Id: eft_wuauth.5,v 1.1 1999/06/30 16:51:02 he Exp $
.\" Copyright (c) 1985, 1988 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms are permitted provided
.\" that: (1) source distributions retain this entire copyright notice and
.\" comment, and (2) distributions including binaries display the following
.\" acknowledgement: ``This product includes software developed by the
.\" University of California, Berkeley and its contributors'' in the
.\" documentation or other materials provided with the distribution and in
.\" all advertising materials mentioning features or use of this software.
.\" Neither the name of the University nor the names of its contributors may
.\" be used to endorse or promote products derived from this software without
.\" specific prior written permission.
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.\" ORIGINAL: ftpd.8 6.8 (Berkeley) 6/24/90
.\"
.\" @(#)$Original-Id: ftpd.8,v 1.5 1997/01/14 22:45:27 sob Exp sob $
.\"
.TH EFT_WUAUTH 5 "Jan 10, 1997"
.UC 5
.SH NAME
eft_wuauth \- authentication for eftp4linux Eurofile server based on wuftpd.
.SH DESCRIPTION
If the eftp4linux Eurofile server
.I eftd
is compiled with the CONFIG_EFTD_WUAUTH configuration option,
it uses user authentication code derived from
.I wuftpd,
the Washington University ftp daemon.
.PP
In that case
.I eftd
authenticates users according to four rules.
.IP 1)
The user name must be in the password data base,
.IR /etc/passwd ,
or whatever is appropriate for the operating system,
and the password must not be null. In this case a password
must be provided by the client before any file operations
may be performed.
.IP 2)
The user name must not appear in the file
.IR /etc/isdn/eftusers .
.IP 3)
The user must have a standard shell returned by
.IR getusershell (3).
If login failed for certain users, maybe that's because their login
shell is not listed in /etc/shells.
.IP 4)
If the user name is ``anonymous'' or ``ftp'', an
anonymous ftp account must be present in the password
file (user ``ftp''). In this case the user is allowed
to log in by specifying any password (by convention this
is given as the client host's name).
.PP
In the last case,
.I eftd
takes special measures to restrict the client's access privileges.
The server performs a
.IR chroot (2)
command to the home directory of the ``ftp'' user.
In order that system security is not breached, it is recommended
that the ``ftp'' subtree be constructed with care; the following
rules are recommended.
.IP ~ftp)
Make the home directory owned by super-user and unwritable by anyone.
.IP ~ftp/bin)
Make this directory owned by the super-user and unwritable by
anyone. This contains auxilary programs that might be forked by
.IR eftd(8)
or
.IR ftpd(8).
These programs should have mode 111.
.IR eftd(8)
currently does not need any auxilary programs. Thus, you only need to
put files here if you also want to provide anonymous ftp service.
.IP ~ftp/etc)
Make this directory owned by the super-user and unwritable by
anyone. The files
.IR passwd (5)
and
.IR group (5)
must be present for eftd
to be able to produce owner names rather than numbers in file headers
and extended format directory (T-DIR primitive) listings. Depending
on the operating system, there may be other required files. Check your
manual page for the
.IR getpwent (3)
library routine.
The password field in
.I passwd
is not used, and should not contain real encrypted passwords.
These files should be mode 444 and owned by the super-user.
Don't use the system's /etc/passwd file as the password file or
the system's /etc/group file as the group file in the ~ftp/etc directory.
.IP ~ftp/pub)
Create a subdirectory in ~ftp/pub
with the appropriate mode (777 or 733) if you want to allow normal
users to upload files.
.PP
The Eurofile file server also allows for finer grained access control
by means of the files /etc/isdn/eftaccess and /etc/isdn/efthosts.
.SH "COPYING"
The main part of eftp4linux is licensed under the LGPL. However,
eft servers using the wuauth authentication libray also contain code
copyrighted by the University of California, Berkeley,
by the Washington University in Saint Louis, and their contributors.
That code is subject to a BSD style licences with advertisment clause:
Copyright (c) 1990 The Regents of the University of California.
All rights reserved.
This code is derived from software contributed to Berkeley by
Chris Torek.
Redistribution and use in source and binary forms are permitted
provided that: (1) source distributions retain this entire
copyright notice and comment, and (2) distributions including binaries
display the following acknowledgement: ``This product includes software
developed by the University of California, Berkeley and its contributors''
in the documentation or other materials provided with the distribution
and in all advertising materials mentioning features or use of this
software. Neither the name of the University nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Copyright (c) 1993, 1994 Washington University in Saint Louis
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met: 1. Redistributions of source code must retain the above
copyright notice, this list of conditions and the following
disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgement: This product
includes software developed by the Washington University in Saint
Louis and its contributors.
4. Neither the name of the University nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY WASHINGTON UNIVERSITY AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASHINGTON
UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
.SH "SEE ALSO"
.BR eftd(1) ,
.BR shells(5) ,
.BR getusershell(3) ,
.BR eftaccess(5) ,
.BR efthosts(5) ,
.BR eft_xferlog(5) ,
.BR umask(2)
.SH BUGS
The anonymous account is inherently dangerous and should be
avoided when possible.
The eftaccess amd efthosts files are currently not yet working as documented.

168
eurofile/doc/eft_xferlog.5 Normal file
View File

@ -0,0 +1,168 @@
.\" $Id: eft_xferlog.5,v 1.1 1999/06/30 16:51:03 he Exp $
.TH EFT_XFERLOG 5
.SH NAME
eft_xferlog \- EFT server logfile
.SH DESCRIPTION
.LP
The
.B eft_xferlog
file contains logging information from the eftp4linux eurofile server daemon,
.BR eftd (8).
This file usually is found in /var/adm, but can be located anywhere by using a
option to
.BR eftd (8).
.P
eftd uses the same format as wu-ftpd for its log files. Thus, you
might be able to use or adapt tools that have been written to analyse
wu-ftpd xferlog files. However, for some fields of the log file
different semantics apply. This is because they are now
related to the isdn domain rather than the internet.
.P
Each server entry is composed of a single line of the following form,
with all fields being separated by spaces.
.IP
.I
current-time\ \ transfer-time\ \ remote-host\ \ file-size\ \ filename\ \ transfer-type\ \ special-action-flag\ \ direction\ \ access-mode\ \ username\ \ service-name\ \ authentication-method\ \ authenticated-user-id
.LP
.TP 20
.I current-time
is the current local time in the form "DDD MMM dd hh:mm:ss YYYY". Where DDD
is the day of the week, MMM is the month, dd is the day of the month,
hh is the hour, mm is the minutes, ss is the seconds, and YYYY is the year.
.TP
.I transfer-time
is the total time in seconds for the transfer.
.TP
.I remote-host
is the remote host's isdn number.
.TP
.I file-size
is the size of the transferred file in bytes.
.TP
.I filename
is the name of the transferred file.
.TP
.I transfer-type
is a single character indicating the type of transfer. Can be one of:
.RS
.RS
.PD 0
.TP 10
.B a
for an ascii transfer
.TP
.B b
for a binary transfer
.PD
.RE
.RE
As eftp4linux only supports binary transfers, this will
allways be 'b'.
.TP
.I special-action-flag
is one or more single character flags indicating any special action taken.
Can be one or more of:
.RS
.RS
.PD 0
.TP 10
.B C
file was compressed
.TP
.B U
file was uncompressed
.TP
.B T
file was tar'ed
.TP
.B _
no action was taken
.PD
.RE
.RE
As on-the-fly-compression is not supported by eftp4linux,
this will always be '_'.
.TP
.I direction
is the direction of the transfer. Can be one of:
.RS
.RS
.PD 0
.TP 10
.B o
outgoing
.TP
.B i
incoming
.PD
.RE
.RE
.TP
.I access-mode
is the method by which the user is logged in. Can be one of:
.RS
.RS
.PD 0
.TP 10
.B a
(anonymous) is for an anonymous guest user.
.TP
.B g
(guest) is for an passworded guest user (see the
.BR guestgroup
command in
.BR eftaccess(5)
).
.TP
.B r
(real) is for a local authenticated user.
.PD
.RE
.RE
.TP
.I username
is the local username, or if guest, the ID string given.
.TP
.I service-name
is the name of the service being invoked, which is EFT.
.TP
.I authentication-method
is the method of authentication used. Can be one of:
.RS
.RS
.PD 0
.TP 10
.B 0
none
.TP
.B 1
RFC931 Authentication
.PD
.RE
.RE
As RFC931 authentication is not used by eftp4linux, this will always
be 0.
.TP
.I authenticated-user-id
is the user id returned by the authentication method.
A * is used if an authenticated user id is not available. With
eftp4linux, this will be the same as the user name.
.SH CREDITS
.LP
This man page has been derived from the wuftpd
.BR xferlog(5)
man page. Please refer to the
.BR eft_wuauth(5)
man page for further details.
.SH FILES
.PD 0
.TP 20
.B /var/log/xferlog
.SH "SEE ALSO"
.BR ftpd(8),
.BR ftpaccess(5),
.BR xferlog(5),
.BR eftd(8),
.BR eftaccess(5),
.BR eft_wuauth(5)

334
eurofile/doc/eftaccess.5 Normal file
View File

@ -0,0 +1,334 @@
.\" $Id: eftaccess.5,v 1.1 1999/06/30 16:51:04 he Exp $
.\" SCCSID: @(#)$Original-Id: ftpaccess.5,v 1.7 1997/01/10 06:27:02 sob Exp $
.\"
.\"
.TH eftaccess 5
.SH Name
eftaccess \- eftd configuration file
.SH Description
The eftaccess file is used to configure the operation of
.BR eftd(1) .
.SH Access Capabilities
.TP 0.5i
.B autogroup <groupname> <class> [<class> ...]
If an ANONYMOUS user is a member of any of <class>, the ftp
server will perform a setegid() to <groupname>. This allows
access to group-and-owner-read-only files and directories to
a particular class of anonymous users. <groupname> is a valid
group from /etc/group (or wherever mechanism your
.IR getgrent(2)
library routine uses).
.TP 0.5i
.B class <class> <typelist> <addrglob> [<addrglob> ...]
Define <class> of users, with source addresses of the form
<addrglob>. Multiple members of <class> may be defined. There
may be multiple "class" commands listing additional members of
the class. If multiple "class" commands can apply to the
current session, the first one listed in the access file is
used. Failing to define a valid class for a host will cause
access to be denied. <typelist> is a comma-separated list of
any of the keywords "anonymous", "guest" and "real". If the
"real" keyword is included, the class can match users using FTP
to access real accounts, and if the "anonymous" keyword is
included the class can match users using anonymous FTP. The
"guest" keyword matches guest access accounts (see "guestgroup"
for more information)
<addrglob> may be a globbed isdn number.
.TP 0.5i
.B deny <addrglob> <message_file>
Always deny access to host(s) matching <addrglob>. <message_file>
is displayed.
.TP 0.5i
.B guestgroup <groupname> [<groupname> ...]
If a REAL user is a member of any of <groupname>, the session
is set up exactly as with anonymous FTP. In other words, a
chroot() is done, and the user is no longer permitted to issue
the USER and PASS commands. <groupname> is a valid group
from /etc/group (or whatever mechanism your
.IR getgrent(3)
library routine uses).
The user's home directory must be properly set up, exactly as
anonymous FTP would be. The home directory field of the
passwd entry is divided into two directories. The first
field is the root directory which will be the argument
to the
.IR chroot(2)
call. The second half is the user's
home directory relative to the root directory. The
two halves are separated by a "/./".
Example:
in /etc/passwd, the real entry:
guest1:<passwd>:100:92:Guest Account:/ftp/./incoming:/etc/ftponly
When guest1 successfully logs in, the ftp server will
chroot("/ftp") and then chdir("/incoming"). The
guest user will only be able to access the directory structure
under /ftp (which will look and act as / to guest1), just as an
anonymous FTP user would.
.TP 0.5i
.B limit <class> <n> <times> <message_file>
(currently not applicable to eftd)
.P
Limit <class> to <n> users at times <times>, displaying
<message_file> if user is denied access. Limit check is
performed at login time only. If multiple "limit" commands can
apply to the current session, the first applicable one is
used. Failing to define a valid limit, or a limit of -1, is
equivalent to unlimited. <times> is in same format as the times
in the UUCP L.sys file.
.TP 0.5i
.B noretrieve <filename> <filename> ....
(currently not applicable to eftd)
.P
Always deny retrieve-ability of these files. If the files are an
absolute path specification (i.e. begins with '/' character) then
only those files are marked un-gettable, otherwise all files with
matching the filename are refused transfer. Example:
noretrieve /etc/passwd core
specifies no one will be able to get the file /etc/passwd whereas
they will be allowed to transfer a file `passwd' if it is not in
/etc. On the other hand no one will be able to get files named
`core' wherever it is.
No globbing is done.
.TP 0.5i
.B loginfails <number>
(currently not applicable to eftd)
.P
After <number> login failures, log a "repeated login failures"
message and terminate the FTP connection. Default value is 5.
.TP 0.5i
.SH Informational Capabilities
.TP 0.5i
.B banner <path>
Works similarly to the message command, except that the banner
is displayed before the user enters the username/password. The
<path> is relative to the real system root, not the base of the
anonymous FTP directory.
.TP 0.5i
.B email <name>
Defines the email address of the ftp archive maintainer. This string
will be printed every time the %E magic cookie is used.
.TP 0.5i
.B message <path> {<when> {<class> ...}}
(currently not applicable to eftd)
.P
Define a file with <path> such that ftpd will display the
contents of the file to the user login time or upon using the
change working directory command. The <when> parameter may be
"LOGIN" or "CWD=<dir>". If <when> is "CWD=<dir>", <dir>
specifies the new default directory which will trigger the
notification.
The optional <class> specification allows the message to be
displayed only to members of a particular class. More than one
class may be specified.
There can be "magic cookies" in the readme file which cause the
ftp server to replace the cookie with a specified text string:
%T local time (form Thu Nov 15 17:12:42 1990)
%F free space in partition of CWD (kbytes)
[not supported on all systems]
%C current working directory
%E the maintainer's email address as defined in ftpaccess
%R remote host name
%L local host name
%u username as determined via RFC931 authentication
%U username given at login time
%M maximum allowed number of users in this class
%N current number of users in this class
The message will only be displayed once to avoid annoying the
user. Remember that when MESSAGEs are triggered by an
anonymous FTP user, the <path> must be relative to the base of
the anonymous FTP directory tree.
.TP 0.5i
.B readme <path> {<when> {<class>}}
Define a file with <path> such that ftpd will notify user at
login time or upon using the change working directory command
that the file exists and was modified on such-and-such date.
The <when> parameter may be "LOGIN" or "CWD=<dir>". If <when>
is "CWD=<dir>", <dir> specifies the new default directory which
will trigger the notification. The message will only be
displayed once, to avoid bothering users. Remember that when
README messages are triggered by an anonymous FTP user, the
<path> must be relative to the base of the anonymous FTP
directory tree.
The optional <class> specification allows the message to be
displayed only to members of a particular class. More than one
class may be specified.
.SH Logging Capabilities
.TP 0.5i
.B log commands <typelist>
Enables logging of individual commands by users. <typelist> is
a comma-separated list of any of the keywords "anonymous",
"guest" and "real". If the "real" keyword is included, logging
will be done for users using FTP to access real accounts, and
if the "anonymous" keyword is included logging will done for
users using anonymous FTP. The "guest" keyword matches guest
access accounts (see "guestgroup" for more information).
.TP 0.5i
.B log transfers <typelist> <directions>
Enables logging of file transfers for either real or anonymous
FTP users. Logging of transfers TO the server (incoming) can
be enabled separately from transfers FROM the server
(outbound). <typelist> is a comma-separated list of any of the
keywords "anonymous", "guest" and "real". If the "real"
keyword is included, logging will be done for users using FTP
to access real accounts, and if the "anonymous" keyword is
included logging will done for users using anonymous FTP. The
"guest" keyword matches guest access accounts (see "guestgroup"
for more information). <directions> is a comma-separated list
of any of the two keywords "inbound" and "outbound", and will
respectively cause transfers to be logged for files sent to the
server and sent from the server.
.SH Miscellaneous Capabilities
.TP 0.5i
.B alias <string> <dir>
Defines an alias, <string>, for a directory. Can be
used to add the concept of logical directories.
For example:
alias rfc: /pub/doc/rfc
would allow the user to access /pub/doc/rfc from any
directory by the command "cd rfc:". Aliases only
apply to the cd command.
.TP 0.5i
.B cdpath <dir>
Defines an entry in the cdpath. This defines a search path that is used
when changing directories.
For example:
cdpath /pub/packages
cdpath /.aliases
would allow the user to cd into any directory directly under
/pub/packages or /.aliases directories. The search path is defined by
the order the lines appear in the ftpaccess file.
If the user were to give the command:
cd foo
The directory will be searched for in the following order:
./foo
an alias called "foo"
/pub/packages/foo
/.aliases/foo
The cd path is only available with the cd command. If you have a large
number of aliases you might want to set up an aliases directory with
links to all of the areas you wish to make available to users.
.TP 0.5i
.SH Permission Capabilities
(currently not applicable to eftd)
.P
.TP 0.5i
.B chmod <yes|no> <typelist>
.TP 0.5i
.B delete <yes|no> <typelist>
.TP 0.5i
.B overwrite <yes|no> <typelist>
.TP 0.5i
.B rename <yes|no> <typelist>
.TP 0.5i
.B umask <yes|no> <typelist>
Allows or disallows the ability to perform
the specified function. By default, all users
are allowed.
<typelist> is a comma-separated list of any of the
keywords "anonymous", "guest" and "real".
.TP 0.5i
.B passwd-check <none|trivial|rfc822> (<enforce|warn>)
Define the level and enforcement of password checking
done by the server for anonymous ftp.
none no password checking performed.
trivial password must contain an '@'.
rfc822 password must be an rfc822 compliant address.
warn warn the user, but allow them to log in.
enforce warn the user, and then log them out.
.TP 0.5i
.B path-filter <typelist> <mesg> <allowed_charset> {<disallowed regexp> ...}
(currently not applicable to eftd)
.P
For users in <typelist>, path-filter defines regular expressions
that control what a filename can or can not be. There may be
multiple disallowed regexps. If a filename is invalid due to
failure to match the regexp criteria, <mesg> will be displayed to
the user. For example:
path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9\._]*$ ^\. ^-
specifies that all upload filenames for anonymous users must be
made of only the characters A-Z, a-z, 0-9, and "._-" and may not
begin with a "." or a "-". If the filename is invalid, /etc/pathmsg
will be displayed to the user.
.TP 0.5i
.B upload <root-dir> <dirglob> <yes|no> <owner> <group> <mode> ["dirs"|"nodirs"]
Define a directory with <dirglob> that permits or
denies uploads.
If it does permit uploads, all files will be owned
by <owner> and <group> and will have the permissions
set according to <mode>.
Directories are matched on a best-match basis.
For example:
upload /var/ftp * no
upload /var/ftp /incoming yes ftp daemon 0666
upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs
This would only allow uploads into /incoming and
/incoming/gifs. Files that were uploaded to
/incoming would be owned by ftp/daemon and would
have permissions of 0666. File uploaded to
/incoming/gifs would be owned by jlc/guest and
have permissions of 0600. Note that the <root-dir> here must
match the home directory specified in the password database for the
"ftp" user.
The optional "dirs" and "nodirs" keywords can be
specified to allow or disallow the creation of
new subdirectories using the mkdir command.
The upload keyword only applies to users who
have a home directory (the argument to the chroot() )
of <root-dir>.
.SH Files
FTPLIB/ftpaccess
.SH See Also
.BR ftpd(8),
.BR umask(2) ,
.BR ftplog(5) ,
.BR ftpconversions(5) ,
.BR ftpshut(8)
.SH BUGS
The eftaccess features are mainly untested. Most of this man page is
not finished. In particular, don't expect any feature to work that is
used for anything else but authenticating a user logging in.

293
eurofile/doc/eftd Normal file
View File

@ -0,0 +1,293 @@
$Id: eftd,v 1.1 1999/06/30 16:51:05 he Exp $
Sorry, rather incomplete and not in man page format.
But feel free to submit patches :-)
eftd: eftp4linux EUROFILE transfer server.
eftd allows clients to connect to your machine via the ISDN and to
transfer files by means of the EUROFILE transfer protocol. That
protocol is specified by ETSI norms ETS 300-075 and ETS 300-383.
Unless the -s option is given, the server loops forever waiting for
incoming connections and forks a child process for each connection
received.
Synopsis:
As this is alpha test software, options might change with each release!
eftd [-a [ACCESS_FILE]] [-IlsV?] [-d LEVEL] [-D MASK]
[-b LOGFILE] [-l LEVEL] [-L MASK]
[-U FALLBACK_USER_ID] [-x ADDR]
OPTIONS
-a Expects a string argument interpreted as a file name.
If eftd is compiled with the CONFIG_EFTD_WUAUTH
option, eftd reads ACCESS_FILE and uses the contents
for user authentication similarly to wu-ftpd's
ftpaccess file. See eftaccess(5) for further details.
-b Expects a string argument interpreted as a file name.
Communication events selected by the -l or -L option
are logged (appended) to the file specified by the
option's argument. (This is the 'LogBook' file in
terms of ETS 300 383, thus the 'b'). If this option is
omitted, a system dependent default (i.e.
/var/log/eftd.log) is used. Opening of the LogBook
file can be supressed simply by not suppling any -l or
-L option.
-d Expects an integer argument which is interpreted as a
log level. Protocol or internal events up to the level
are logged to stderr.
For levels 0 - 3, see the -l option.
Higher values include more events in the log,
such as low level protocol and call traces and
temporarily inserted debugging output statements.
Use of -d as well as level > 3 is primarily intended
for debugging purpose. This also implies that the
output caused by log levels > 3 is not documented and
likely to change between releases.
-D The bitmask argument allows for low level grained
control of stderr output. It overrides previous
-I and augments -d options. For maximum amount of
debugging output use "-D -1". As this is really
intended to be used for low level debugging, examine
the eftp4linux sources (start by reading the source
file src/lib/tdu_user.h) if you really want to use
this option on your own.
-I Logs the contents of /dev/isdnctrl to stderr. For this
to work, other processes reading /dev/isdnctrl (i.e.
isdnlog) should be stopped before). This option is
intended for debugging purpose only.
-l The integer argument specifies the log level for
selecting the events written to the LogBook file
(as specified by the -b option). Levels are
0 No events at all.
1 Important events related to session start
and end (login and logout)
2 Important events during each session.
Also adds some events related session
start/stop of minor priority.
3 Other minor priority events.
>3 Low level events. As these are primarily
useful for debugging purpose, it's probably
better (but not strictly necessary) to log
them by means of the -d option. See the latter
for more info.
CAUTION: this log feature is currently new, extremly
unfinished, incomplete and subject to improvements
(volunteers welcome) and not my highest priority item.
Thus, don't expect the current format of the messages
to be fixed forever.
-L Conceptually similar to -D (see the latter). Allows
fine grained control for selecting the events logged
to the LogBook (-b) file.
-x The string type argument should consist of up to 15
digits which specify the X.25 [X.121/X.301] address
the servers listens on for incoming connections. As
EUROFILE is usually used with ISO-8208 X.25 DTE-DTE
mode, you should use the empty string as argument
here, which is the default. Thus, it is extremely
unlikely that you want to use this option at all.
This option can be given two times, allowing the
server to listen on two different x25 addresses
simultaneously.
-s Single process mode. If this option is given, the
server just serves the first incoming connection and
exits when the session is finished. It does not fork a
child process for serving that connection.
This is mainly useful for running eftd under the
control of a debugger (such as gdb). If you want to
debug eftd like this, also make sure that the '-m'
option is not set. (As the -m option forks an additional
supervisor process, -s alone will not result in a
debuggable single process eftd). Further, as the
single process will not run under root permissions any
longer after an EUROFile connection has been accepted,
eftd can not clear isdn connections on its own, you
may need to do so yourself.
-m Multiple connection mode. If this option is given, the
server immidiately continues to accept new connections
without waiting for the just accepted session to finish.
The number of simultaneous served connections is not
internally limited by the server. However, upper
limits might be imposed by the mumber of physically
available isdn B-channels, the number of running
incoming isdn network interfaces configured with
"encap x25iface", or by the authentification procedure
(i.e. group limits configured in /etc/isdn/eftaccess).
When multi mode is activated, the server forks an
extra privileged supervisor process for each accepted
connections which takes care of clearing the isdn
connection after the session is finished. Thus, if N
EURFILE sessions are active, there will be 2N+1 eftd
processes.
-U USER When this option is specified, a login attempt
with a user name not in the passwd database will
be using USER as the login name (with empty password).
You might use '-U ftp' if you have configured
anonymous access and want that unknown user ids
should be handled as an anonymous eft access.
Unknown user ids frequently occur as many clients
insert some dummy user name in the t_associate request
if no user name was configured.
-V Prints version.
-? prints usage message.
FEATURES
The server supports most of the EUROFILE primitives,
including navigation and extended directory format.
However, T-RENAME, T-DELETE, and LIST are not supported yet.
If eftd is compiled with the CONFIG_EFTD_WUAUTH option, user access
is granted using an authentication procedure derived from wu-ftpd,
the Washington University ftp server. Refer to the eft_wuauth man
page for further details.
Transfers can be logged to /var/log/eft_xferlog. The format of this file
is compatible with the wu-ftpd xferlog format. Refer to the
eft_xferlog man page for details. Also see event logging below.
eftd can also be invoked (and then stopped) by means of the eftd.sh
shell script:
eftd.sh start|stop
This script reads configuration parameters (usually from
/etc/isdn/eft.conf). You might want to edit this file before
starting it.
Besides starting eftd, the script also takes care of setting up
the necessary isdn network interfaces. The script can be used by
sysvinit to automatically start eft service as part of the system boot
precedure. (But make sure it is called after isdn and x25 modules are
loaded).
TRANSFER NAMES
The EUROFILE protocol identifies files to be transferred by means of a
so called `transfer name'. According to ETS 300-383/ETS 300-075,
a transfer name may constist up to 8 keywords separated by the '/'
character. Each keyword may constist of up to 12 printable
(between 0x21 and 0x7e) ascii characters except '(', ')', '*',
'+', and '/'. The total length of the transfer name must not exceed 70
bytes.
The transfer names generated by eftd (and which will be displayed in
response to a T-Directory request) will always conform to this.
eftd will also accept transfer names within incoming request
(T-Load and T-Save request) that do not conform to the standards.
If a transfer name in an incoming request is valid, it is processed
by a mapping procedure which resolves to a file name. Transfer names
not conforming to the standard are not subject to mapping. They are
treated literally as POSIX filenames.
TRANSFER NAME MAPPING
eftd maps transfer names to file names by means of two different
methods. If the current working directory is writable by the user,
a database is used that maps between transfer names and file names.
The database is currently implemented by means of symlinks which are
created in the working directory. Symlinks matching .++eft_fn.TRANSFER_NAME
contain the file name corresponding to TRANSFER_NAME. Symlinks
matching .++eft_tn.FILE_NAME contain the transfer name name
corresponding to FILE_NAME. You can clean tha database by just
removing all those symlinks (rm .++eft_[ft]n.*).
If the directory is not writable by the user, an algorithm based ob
the file/transfer name and the file's inode number is used to map between
transfer names and file names.
EVENT LOGGING
eftd provides for two event logging channels. The first is always
stderr, the other is the so called LogBook file (an ETS 300 383 term)
(which might be altered by means of the -b option)
The amount of events logged can be controlled by a log level, which
may be supplied by means of the -d (for stderr channel) or the -l (for
LogBook file channel). An even finer grained (but even less portable)
control is possible by means of bitmask arguments supplied with the
-D or -L option.
For debugging purpose, it is somtimes helpful to write the standard
error messages syncronized with the logged events into the same stream.
Thus, for generating debugging logs, it is preferable to use the
stderr channel. For debugging certain very low (i.e. Linux kernel)
level protocol problems, it is even desirable to write the isdn
events (as read from /dev/isdnctrl) to the same stream. eftd provides
for a -I option to achieve this goal as close as possible (however,
synchronity cannot be granted here).
Wenn large log levels are used, huge amounts of stderr output will be
generated. Thus you might consider to redirect stderr to a disk file
in such a case.
Writing to a log file might block the eftd process, which might
result in timing problems if the process is blocked for a very long
(several seconds) time. Thus, it is not advisable to log events to
files (i.e. located on unreliable NFS servers) which are likly to
cause such blocking.
INTERWORKING PROBLEMS
The majority of DOS/Windows based clients implicitly assume that
file transfer names fulfil DOS file name conventions and don't
distinguish between upper and lower case names. This is in violation
to the ETSI norms and might cause inter-working problems.
The server provides for a compatibility mode to inter-operate
with such clients. In order to activate that compatibility mode,
prepend a '+' character to the login name when connecting to the
server. See the doc/INTERWOKING file for details.
If you intend to offer files for public download via eft,
it is recommended to use file names that match DOS conventions
only.
RESTRICTIONS (also called BUGS :-)
Renaming and deleting (T-RENAME, T-DELETE) of files is not supported yet.
The S-LIST primitive (recursivly listing all directories) is not
supported.
Compression is not supported. This is not a serious limitation
nowadays because on-disk compression formats like [g]zip are widley
available, compress better, and also save disk storage.

25
eurofile/doc/efthosts.5 Normal file
View File

@ -0,0 +1,25 @@
.\" $Id: efthosts.5,v 1.1 1999/06/30 16:51:06 he Exp $
.\" SCCSID: @(#)$Original-Id: ftphosts.5,v 1.2 1997/01/10 06:27:02 sob Exp $
.\" based on ftphosts.5 1.2 1/26/93
.\"
.TH ftphosts 5
.SH Name
ftphosts \- ftpd individual user host access file
.SH Description
The ftphosts file is used to allow or deny access to certain
accounts from various hosts.
.SH Access Capabilities
.TP 0.5i
.B allow <username> <addrglob> [<addrglob> ...]
Only allow host(s) matching <addrglob> to log in as <username>.
.TP 0.5i
.B deny <username> <addrglob> [<addrglob> ...]
Always deny host(s) matching <addrglob> to log in as <username>.
.SH Files
FTPLIB/ftphosts
.SH See Also
.BR ftpd(8) ,
.BR ftpaccess(5) ,
.BR ftplog(5) ,
.BR ftpconversions(5) ,
.BR ftpshut(8)

261
eurofile/doc/eftp Normal file
View File

@ -0,0 +1,261 @@
$Id: eftp,v 1.1 1999/06/30 16:51:06 he Exp $
Sorry, rather incomplete and not in man page format.
But feel free to submit patches :-)
eftp is a simple EUROFILE transfer client with a command line user
interface roughly resembling the ftp client.
Synopsis:
eftp should currently not be invoked directly be the user but by means of
the eftp.sh shell script:
eftp.sh ISDN_NUMBER [ID]
where ISDN_NUMBER is the isdn number of the peer server to connect to.
ID is usually entered as USER or USER/PASSWD, consisting of the
userid and the password on the remote EUROFILE server.
Future versions of eftp will support the following command line
options:
-i ISDN_NO
specify the isdn no of the remote EUROFILE
server to connect to. The server will try to
set up an isdn connection to this number and
an X.25 DTE-DTE connection on top of this.
-x X.25_ADDRESS
directly specify the X.25 address used for
setting up the X.25 connection. For eftp to
work, an X.25 route for that address must
already be present. The X.25 route must point
to an isdn4linux network interface that is
configured for outgoing connections to a
destination EUROFILE server. The encapsulation
of the interface must be "x25iface".
-u USER[/PASSWORD]
The user identity used to login to the
remote EUROFILE server. The password can
be appended to the user id seperated by a
'/' character. If no '/' is present in the
paramater of the -u option, eftp will prompt
for a password.
CAUTION:
Entering the password on the command line allows other users
to spoof the password, i.e. by means of the ps command. The
password might also leave other traces, i.e. in your shell's
history file. Thus, DON'T include the passwd in the -u argument
on machines where this is a concern (i.e. when untrusted users
have shell accounts on the machine).
If the -u option is missing, the client will
try to login without a user id (some servers
will treat this as anonymous access).
-p suppress prompting for a password even if the
argument to the -u option does not contain a
password. This is useful for accounts on
EUROFILE servers without password protection.
-h print a help message to stdout.
In order to set up isdn4linux network interfaces, the eftp.sh script
needs to be called from the root user. Before the eftp program itself
is executed, the userid is switched (configurable in the
/etc/isdn/eft.conf file) and the working directory is changed to /tmp.
(This is an interim measure and will be fixed in a future release).
If ISDN_NUMBER is the string "localhost", the eftp.sh scripts tries
to set up a connection to the own computer by means of the isdnloop
driver, for the benefit of your phone bill.
When eftp has established the connection, it issues the "eftp>" prompt
and waits for commands that will be read from standard input.
If configured before compilation, interactive input can be edited by
means of the GNU readline library.
The following commands are recognised:
Commands for Listing and Transferring Files
dir [PATTERN]
This corresponds to ETS 300-075 and ETS 300-383 T-DIRECTORY
primitive. It prints a list of files contained in the current
working directory (ETSI calls it the "current filestore").
PATTERN is a pattern as defined in ETS 300-075 and selects a
subset of those files to be displayed. ETS 300-075 pattern are
different from shell wildcard or regular expressions, but the
pattern "*" matches all filenames as you'd expect. I won't
explain further pattern rules here because most servers don't
recognise any patterns different from "*" anyway.
If pattern is omitted, the * pattern is assumed.
Pattern applies to the EUROFILE transfer name of the files,
which is not necessarily identical to the filename itself.
Likewise, the output of the command does not list the
filenames, but the transfer names of the files and the file
length. Note that only regular files are listed. For listing
subdirectories, there are the list and slist commands.
xdir [PATTERN]
This is similar to the dir command but requests the directory
contents in extended format. In addition to the transfer name,
this will also contain the real name of the file and the time
stamp of the last write access.
Note that not all servers support directory requests with
extended format. Some of those servers will respond with
a normal directory contents file, others will reject the
request. In the former case, eftp will issue a warning message
and use the transfer name for the file name and use 1970-01-01
as the last access date. (The eftp4linux server supports
extended directory formats).
get TRANSFER_NAME [PATH_NAME]
This corresponds to the 300-075 T-LOAD primitive and
tries to load the file identified by TRANSFER_NAME
from the remote server and stores it locally using PATH_NAME
as the destination. If PATH_NAME is omitted, TRANSFER_NAME is
also used as the destination name.
put [PATH_NAME] TRANSFER_NAME
This corresponds to the ETS 300-075 T-SAVE primitive and
tries to upload the local file identified by PATH_NAME
to the remote server, using TRANSFER_NAME as the destination.
If PATH_NAME is omitted, TRANSFER_NAME is also used as to
identify the local file.
mget PATTERN
get multiple files whose transfer names match PATTERN. PATTERN
is (currently) interpreted a shell glob pattern, not an
ETS 300 075 pattern.
mput PATTERN
put multiple files whose names match PATTERN. PATTERN is
interpreted a shell glob pattern, not an ETS 300 075 pattern.
NOTE: The matched name is also used as the transfer name.
If pattern matched local files whose file name do not form
a valid ETS 300-383 transfer name, the transfer of those
files might fail.
prompt [on|off]
If "on", prior to each file transferred by mput or mget, the
user is prompted for confirmation. If no parameter is given
the on/off value is toggled.
Possible user responses to the prompt:
y transfer the file
n don't transfer the file and prompt for the next one
case [on|off]
If "off", cases are ignored when matching PATTERN in mget and mput.
If parameter is missing, toggle current parameter value.
This currently does nor work with all versions of libc.
Navigation Commands (related to directories)
These commands are likely to fail because many servers don't
support the navigation facility. (The eftp4linux server,
however, supports this :-)
cd [DIRECTORY]
This changes the current working directory ("current
filestore") to DIRECTORY. If DIRECTORY is omitted,
the default directory (this is the one initially entered
when logged in) is changed to.
This command is likely to fail because many servers don't
support the navigation facility.
pwd
This prints the name of the server's current working directory
("current filestore") to stdout.
slist
This corresponds to the 300-383 S-LIST primitive.
It prints a list of the subdirectories contained in the
current working directory. The list items consist of
a so called file store reference followed by the filestore
(directory) name. (The eftp4linux server supports this, but
the filestore references are currently not generated totally
norm conforming.)
list
This corresponds to the ETS 300-383 LIST primitive.
It is similar to the slist command, but prints a list of all
directories of the server. (Even the eftp4linux server does not
support this).
Misc Commands
msg MESSAGE
The MESSAGE string is send literally to the remote server
if the server supports it (most servers won't) by means of
the ETS 300-075 T-TYPED_DATA primitive.
If MESSAGE is ommitted, the client will prompt for the message
string (can currently cause problems as protocol precessing is
currently not performed whil waiting for the user input).
lcd DIR
change local working directory to DIR
! COMMAND-STRING
execute COMMAND-STRING as a shell command.
quit
This will quit the EUROFILE session, close the connection, and
exit the eftp programme.
Readline Support
================
When eftp is compiled with the CONFIG_EFTP_READLINE option set to "y"
in the configure shell script, command line editing is performed by
means of the readline library. (Thanks to Michael Mauch for adding
this).
When using the readline code, the terminal might be left in a strange
mode if the program didn't exit properly. In such a case you can
return to the normal terminal mode by running the program "reset",
which is a link to "tset" (see tset(1)).