Oberon || Compiler & Tools || Library || Module Index || Search Engine

Ulm's Oberon System:


adis-ftpsession - run FTP session


adis-ftpsession [-c] [-m umask] [-t timeout] [-u|-U] root-directory


adis-ftpsession runs a pipelining FTP session that requires no further authorization on the bidirectional network connection passed via file descriptor 0. Access is provided to root-directory and its sub directories.

Following options are supported:

suppress the latency reducing technique that opens IP addresses provided by PORT commands immediately after seeing them. Instead, wait until a command is issued that utilizes a data connection. Note that adis-ftpsession falls automatically into this mode on the first failure of an early connect.
-m umask
set the umask of the FTP server to umask which is to be given in octal. This is useful to override a too restrictive default in case of FTP logins that access directories shared by a group.
-t timeout
sets the timeout to timeout seconds. A timeout of 0 switches off the timer. By default, there is a time limit of 600 seconds of inactivity after which a session will be hung up by adis-ftpsession.
enable non-destructive uploads, i.e. files and directories may be created as long existing files and directories are not harmed. Rename operations are not permitted.
provide unrestricted write access.

adis-ftpsession may be called directly by a port listener (tcpserver, for example) to provide anonymous FTP service or indirectly under the application of adis-ftplogin (to read in the credentials) and any checkpassword plug-in (adis-ftplogin, for example).

The set of FTP commands implemented by FTPSessions, FTPDataStreams, and FTPUnixFileSystems is provided. Note that USER, PASS, and ACCT are always responded with a code of 230, indicating that access is already granted.

adis-ftpsession supports pipelining (see FTPEngine) according to http://cr.yp.to/ftp/pipelining.html.


adis-ftpsession creates a pipeline to /var/qmail/bin/splogger to log all processed commands together with the return codes to syslog (auth.info).


There are no configuration files.


adis-ftplogin should never be run under root privileges. Instead normal user privileges are best for user configured FTP logins (see adis-ftplogin), and, in case of anonymous FTP servers, a special user ID that does not own any files should be chosen.

The security considerations of FTPUnixFileSystems and FTPDataStreams apply.


To set up an anonymous FTP service on a non-privileged port (9030 in this example) is pretty easy using tcpserver and adis-ftpsession. The only tricky part is to create a FTP greeting in a shell variable that ends in CR LF:
hi="`echo '220 Hi!\r'`
tcpserver -B "$hi" 0 9030 adis-ftpsession ~/pub/ftp


checkpassword plug-in that enables user configurable FTP logins
part of the FTP session that reads user name and password, if required.
implements the FTP commands that are related to data connections
pipelining FTP server engine
provides access to the UNIX file system

Edited by: borchert, last change: 2004/09/22, revision: 1.3, converted to HTML: 2004/09/22

Oberon || Compiler & Tools || Library || Module Index || Search Engine