Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
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.