Home > lkl-lklftpd

lkl-lklftpd

Lkl-lklftpd is a project mainly written in ..., it's free.

LKL based FTP daemon for working with file system images

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_filet 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.

Previous:lkl-win-fsd