eftd - ISDN EUROFILE file transfer server
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]
eftd 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
-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
-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
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
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
-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
-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
-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
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
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)
-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
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
-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.
-UUSER 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.
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
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
/etc/init.d/isdneurofile shell script:
This script reads configuration parameters (usually from
/etc/isdn/eft.conf). You might want to edit this file before starting
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
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 ’(’, ’)’, ’*’, 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.
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
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
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
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. When eftp has established
the connection, it issues the "eftp>" prompt and waits for commands
that will be read from standard input. Interactive input can be edited
by means of the GNU readline library.
manpage written from usage text file by Paul Slootman