Oberon || Library || Module Index || Search Engine || Definition || Module

Ulm's Oberon Library:


FTPLogPrinter - print FTP log events to an output stream


PROCEDURE Install(session: FTPSessions.Session; log: Streams.Stream);


FTPLogPrinter provides separate tasks that convert FTP log events into printed messages onto a designated output stream.

Install spawns a task (using Jobs) that processes log events generated by FTPLoggers for session until session terminates (see Resources) or output operations to log fail. The output generated for a log event consists of

Streams.Flush is invoked for log after printing each log event. Hence, Streams.onebuf should be taken as buffering mode for log.

Multiple logging tasks with different output streams for a particular session are permitted.


Due to the pipelining architecture it is possible that not all FTP log events are printed if the FTP server process terminates abnormally.

When logging fails (due to the termination of an output filter, for example), FTP server operations for session continue to be handled unless provisions are taken that session terminates as well in such cases.

All requests, responses, and error reports depend on the input provided by the communication partner. Hence, they may contain overly long strings (e.g., for buffer overrun attacks) or malicious sequences (e.g., for format attacks) that could exploit external utilities that postprocess logs. FTPLogPrinter itself provides all data as-is without any filtering against possible attacks.

The utility splogger(8) that is shipped with Qmail (see http://cr.yp.to/qmail.html) may be used in conjunction with UnixPipes to forward log messages in a safe way to syslogd(1m).

Another secure output filter is multilog, see http://cr.yp.to/daemontools/multilog.html.


FTP log events


Please note that responses in their logged form are not necessarily complete as marks (intermediate responses, see FTPSessions) are not propagated to FTPLoggers.
Edited by: borchert, last change: 2001/05/08, revision: 1.2, converted to HTML: 2001/05/08

Oberon || Library || Module Index || Search Engine || Definition || Module