Purpose
For any given program or application, almost every user or developer poses
questions of "How do I get X program to do Y nifty
thing?" The ProFTPD server is structured similar to the Apache web
server, and can be extended through modules, much like Apache. Consequently,
this extending or hacking-in of new functionality and capabilities is most
easily done by developing a module, rather than changing the source code
itself.
ProFTPD modules are designed to handle and respond to configuration directives at startup, to FTP commands sent over the control connection by FTP clients, and to authentication requests. Here is a more in-depth introduction to ProFTPD modules, and how they tick.
Unless otherwise stated, this information is relevant for the current version of ProFTPD. Any opinions, ideas, and philosophies contained herein are my own, or those of the contributors, and do not reflect the ideas or philosophies of my employer.
Audience
This manual is intended for system administrators and programmers who wish to
develop modules and patches for the ProFTPD FTP server. Readers should be
comfortable programming in a Unix environment, be familiar with C, and
be aware of how the FTP protocol works. These documents aim to provide an
explanation of the inner workings of ProFTPD and its modules, and how to
develop them. Readers should therefore have in interest in these topics, else
they may be bored.
Additions and Contributions
The current manual is not yet complete. I will continue to work on it as I find
time. Feel free to send in material for the TODO sections, and for the small
notes I've left around. Also, compatibility is an issue I struggle with
sometimes. The best I can do for some Unix flavors is read man pages.
Corrections, addendums, and notes for compatibility are greatly appreciated.
All contributions, comments, and criticisms are welcome, and can be sent to
tj@castaglia.org.
COPYRIGHT
I, TJ Saunders, reserve a collective copyright on this manual. Individual
contributions made to this manual are the intellectual property of the
contributor.
This manual may contain errors, or inaccurate material. Use it at your own risk. Although an effort is made to keep all the material presented here accurate, the contributors and maintainer of these documents will not be held responsible for any damage, direct or indirect, which may result from inaccuracies.
This document may be reproduced in whole or in part, without fee, subject to
the following restrictions:
Exceptions to these rules may be granted for academic purposes: write to the author and ask. These restrictions are here to protect us as authors, not to restrict you as learners and educators.
Comments
One final important thing to note: this documentation is an attempt to explain
what the actual code is doing; the only true canonical source for answers to
any questions that might arise is the source code itself. This documentation
may, and most likely will, fall out of date, or not properly reflect what the
code is doing. Therefore, the author of these documents should not be held
responsible if ProFTPD is not behaving exactly as described here. Instead,
s/he should be held responsible for not describing things exactly as ProFTPD is behaving. As always, caveat emptor.
Copies
Instructions for obtaining copies of this guide may be found
here.