Skip to content

lkl/lkl-lklftpd

Repository files navigation

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.

About

LKL based FTP daemon for working with file system images

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published