Skip to content
LKL based FTP daemon for working with file system images
Latest commit c1bbe0c Jun 17, 2009 @luciang luciang refactoring lfd_log: added lfd_log_apr_err and lfd_log_linux_err
Add a macro to do most things we were doing by hand in a lot of places.
Failed to load latest commit information.
.config
.gitignore
CODING_STANDARD added a small CODING STD ... To be completed Aug 28, 2007
Makefile
README noedit:git-test3 Oct 11, 2007
cmdhandler.c
cmdhandler.h Add debug mode. Fix PASV. Fix FEAT. Properly terminate responses Jan 6, 2008
cmdio.c
cmdio.h
config.c
config.h
connection.c
connection.h
dirops.c
fileops.c
fileops.h
filestat.c
ftpcodes.h
listen.c
listen.h
main.c
sess.c
sess.h
utils.c
utils.h refactoring lfd_log: added lfd_log_apr_err and lfd_log_linux_err Jun 17, 2009
worker.c
worker.h

README

A LKL and APR based FTP daemon.


Prerequisites:
	a) APR library - The Apache Portable Runtime Library.
		- a set of minimalistic C wrappers over system calls
		  that permits writing portable and fast code in C.
		- on Debian/Ubuntu just do [sudo] apt-get install libapr1-dev.
		  You'll need to install the "-dev" package to get the header files.
		  LKLFTPD (currently) looks for the headers in /usr/include/apr-1.0/;
		  you may need to tweak this on your system.
		- a 1.2.1 or better version will do just fine (but later versions
		  have more bugfixes and better support for some platforms).
	b) A multi-threaded operating system.
		LKLFTPD starts at least one new thread per client.
	c) LKL - if you want to run LKLFTPD through LKL you'll obviously need LKL.
		- check on http://cs.pub.ro/~ixlabs/?page_id=134 for details about LKL.

Documentation:
	a) APR - http://apr.apache.org/docs/apr/1.2/modules.html
	b) LKL - http://cs.pub.ro/~ixlabs/?page_id=134


Design:
	LISTENER-THREAD - main thread
	- waits for connection on a given TCP port (standart default: 21).
	WORKER-THREADS - for each accepted connection we start a new thread.
	- all commands issued by the client are handled on this separate thread.
	- for data transmissions other threads may be started durring the
	  lifetime of the client
	- data relevant to the connection is held in a lfd_sess structure,
	  and a pointer to this structure is passed to all functions
	  called from the connection command loop.



LKL:
	To aid developement and o give LKLFTPD more functionality we have wrapped
	  all file IO functions under lkl_file_t based operations.
	These are by default mapped "1-1" to apr_file_t, but by defining LKL_FILE_APIS at
	  compile time you can use lkl based file IO.
	a) If LKL_FILE_APIS is NOT DEFINED (which means lkl_file_t is defined as apr_file_t)
	     you will use the OS APIs to access files.
	     No LKL code is run/called. You need not link to liblkl.
	     In this mode you can use LKLFTPD as a standalone ftp server.
	b) If LKL_FILE_APIS is DEFINED, lkl_file_t is implemented as a wrapper
	     over LKL's sys_* functions. In this mode you'll need to link to LKL.
	     You'll be bound to Linux' licence (currently GPLv2) by linking
	     directly to Linux code.
Something went wrong with that request. Please try again.