As of 2007-01-05 0:00:00 GMT, this project is no longer under active development.
Kadet is a multi-purpose server written in C. It is highly extensible, well written, equipped with a great set of libraries including scripting, persistent database, object memory management, etc. It's very easy to develop.
Be the first to post a text review of Kadet Server. Rate and review a project by clicking thumbs up or thumbs down in the right column.
The Kadet Server development is currently postponed. The author is now concentrating on the Qu Programming Language which will be the language used to develop the next Kadet.
Kadet is a powerful multipurpose multithreaded highly extensible secure server engine. Kadet is designed to run any number of protocols, not just HTTP (although it is currently the only available module). It's 'undedicated thread' model makes it fast and stable even when serving thousand of clients at the same time. With the KISS principle, it's main goal is to provide developers with a server framework which is easy to develop yet powerful. Kadet is equipped with an extensive set of library including a built-in compiler and interpreter. Configuration is easy and extensible via external modules. The latest version 2.09d has a lot of improvements especially the interpreter. Now arrays, hashes, nested and recursive function call, references, while, loop, OOP syntax, etc. are all there!
CHANGES 2.09d (BETA) Finally added autoconf. Still missing a lot of platforms but it looks like a good start, hopefully. Now the executable is not run directly. Controlling the server is done through the shell script /opt/kadet/bin/kadet. The file /usr/bin/kadet is now a link to that script. The executable is /opt/kadet/bin/kadetex. After installing, try: "kadet" to display a help screen. Documentation almost completed. Well, sort of ... Some are even obsolete ... Duh! 2.09c (BETA - not published) Added more memory debugging facilities in mem.c. Finally separated 'auth', 'user' and 'resource' from 'access'. Initial request separation in t_request. The t_access object has a much better look. Now the 'log' module has a better interface. Added some new useful modules: app_info, app_exec, app_rotate. See conf/kadet.conf for more info. Added an option to set the worker threads stack size from the command line because using the OS default value appears to make Kadet unnecessarily big. See pthread_attr_setstacksize. Now the "db" module supports unlimited number of databases. resource_gen has more compelling options. New makedoc.pl with a new documentation system (.pdo files). Changed the script markers <%%> to <?BEGIN END?>, <@@> to <%%>, and <??> to <@@> so that highlighting in PHP mode works. This is final and will not be changed again. A lot of modifications to the script engine components have been done. Arrays and hashes have been added (still preliminary but they _basically_ work). Recursive function call, nested functions, while, do, for, loop, with, etc. are all there. Preliminary OOP from C and the BEGIN block. See the "test.ka" script file in the test directory. The lexer is slightly modified. All tokens are kept and there is no limit to the number of look-aheads. Thinking of using grammar files waaay ahead in the future. Add module functionality in the script engine. The concept is still preliminary but it works. So now: "use foo, bar". Fixed file uploading bugs. Included test in test pages. Documentations is 70% completed. 2.09b (BETA - not published) Provided err_str as a safe replacement of the standard strerror. Also added err_strset to add error strings at run-time. Merged the 'list' module into the 'msg' module as the first step to better support multi-lingual plans. Now we have dictionaries and all messages are IDs until they are translated, and that include logs. File caching is now a run-time option you can set from the configuration file (/opt/kadet/conf/kadet.conf section 'file'). 2.09a (BETA - not published) There has been some trade-offs in performance for new concepts. Kadet is now a bit slower but much more powerful. The main cause is adjustments in the job schedulerto support periodic jobs. Splitted and moved the 'util' module to the 'str' and 'base64' modules. Now there is no 'util' module. Fixed an annoying bug in the network module when DoS guard feature is used. See devel/bugs.txt: "Referring to child objects in parent destruction function". Finally fixed remaining stuffs in the file module: file_ext, file_name, etc. Also added file_truncate, etc. Also added a couple of new functions to support the new modules. Now the 'access' module does not perform logging itself. There is a new log_access module which does the job more efficiently. Renamed the "tag" module to "shtml" and adjusted all dependent modules. Reason: "shtml" is more appropriate especially if we plan to have the "html" or "xml" modules in the future. Added smtp_send to send mails via SMTP. Now Kadet does not refuse to run as root, so be careful! Makefiles rewritten. Debugging option now moved to Makefile.global. Moved VERBOSE to the 'debug' module (previously in 'err'). Now VERBOSE is only available when debugging. Made the 'log' module simpler. We'll think of a better interface when needed. 2.09 (BETA) Much better performance thanks to ApacheBench, and a lot of experiments. The default configuration file (kadet.conf) is now based on these experiments. Finally objectified file and dir (t_file and t_dir). Their use need a little extra effort but now we are more consistent. This should also help porting. Now t_file better represents a 'resource' instead of just a file. HTTP negotiation should be easier to deal with in the future. Worked on "dim.c" for the future content negotiation. It looks better now. Modified the way access_resource work. Simplified file_load. Fixed the stupid SO_REUSEADDR bug in network.c. Fixed a really stupid bug in auth_basic and auth_digest. Fixed a really stupid bug in mem_realloc. Fixed stupid bugs in http_server.c. Also fixed the HEAD request. Interpreter must now be explicitly created with access_needinterp. This helps performance and saves memory quite a bit. I should have done this from the start! Adjusted some modules due to the modifications. 2.08b (BETA) Fixed subtle bugs in the "network" module. Add maximum connection from remote host option to prevent DoS. http_server now sends an HTML error page. The error page is a template. See conf/errpage.html. Move test stuffs to the new "test" directory. Updated stuffs in the "devel" directory. Fixed foo % bar in the "conf" module. Minor editing here and there. 2.07b (BETA) Following the File System Hierarchy Standard (FHS), the home directory by default is /opt/kadet (no longer /usr/local). Edited all remaining stuffs planned for the core modules including the file cache system. Major editing of the "conf" module and the configuration files. Now configuration can be done in a tree fashion. Very nice! Simplify time-out issues with the "network" and "job" modules. Eliminated the t_conn object in the "network" module and made the socket object t_socket as the job context. Removed all authority info from script related stuffs. Anything related to scripts must be safe so no authority distinction required. Removed junks from tag_basic. The INPUT tag etc. were stuffs from the old Perl version. Sample login and lostpassword pages provided in /www. Edited "devel.h". This thing needs more stuffs & standards! Automatic login via cookies now works but still have a problem with some browsers, i.e. Netscape 4.x, Mozilla 0.x. Konqueror works fine (great piece of work!). See the http_server module. Maintenance including refreshing of cached files is now a job run by worker threads (as planned). Adjusted all external modules to core module modifications. Now we can run Kadet as a daemon and this is the default. To run Kadet not as a daemon use the -d option. New core modules: "mail", "log", "ssl". The task_ssl external module is gone (put in the ssl module as expected). The "mail" and "log" module will make writing external modules easier. A real mailer will hopefully be available in v2.1 (will use SMTP, maybe). New external modules. vhost_log now uses facilities from the "log" module. The "dbo" external module is half-way to completion. It is installed by default but only parses dboclass.conf. It's much easier now thanks to the new conf module. Included sample module func_array. New directory "www" to install test pages. 2.06b (BETA) Minor editing before planning for final beta. The 'dim' module is at last free of the 'file' module. Now the access core module supports sessions as a separate function. See access_session. 2.05b (BETA) Eliminated some annoying things in the 'obj' module. Now you can create and destroy root objects the same way as any other objects (e.g. you can pass NULL as the parent object). It turns out that the performance penalty is too small to be annoyed with obj_root, obj_destroyroot etc. Fixed subtle bugs in the compiler/interpreter including the interface to make it more flexible. Performance is much better since now all symbol values are stored in the symbol object directly. Changed the custom tags interface so now they are independent of the access module (if they need it, just call access_get). Fixed SSL (task_ssl). Still an early development but it works fine. Added many functions in func_basic to show you how easy it is to develop libraries for Kadet. 1.01a through 2.04b Not recorded :-( -EOF-
Kadet is a powerful multipurpose multithreaded highly extensible secure server engine. Kadet is designed to run any number of protocols, not just HTTP (although it is currently the only available module). It's 'undedicated thread' model makes it fast and stable even when serving thousand of clients at the same time. With the KISS principle, it's main goal is to provide developers with a server framework which is easy to develop yet powerful. Kadet is equipped with an extensive set of library including a built-in compiler and interpreter. Configuration is easy and extensible via external modules. The latest version 2.09b Beta seems to be the candidate for the stable version 2.10.
This seems to be the candidate for a stable version 2.10. Much better performance thanks to ApacheBench, and a lot of experiments. The default configuration file (kadet.conf) is now based on these experiments. Finally objectified file and dir (t_file and t_dir). Their use need a little extra effort but now we are more consistent. This should also help porting. Now t_file better represents a 'resource' instead of just a file. HTTP negotiation should be easier to deal with in the future. Worked on "dim.c" for the future content negotiation. It looks better now. Modified the way access_resource work. Simplified file_load. Fixed the stupid SO_REUSEADDR bug in network.c. Fixed a really stupid bug in auth_basic and auth_digest. Fixed stupid bugs in http_server.c. Also fixed the HEAD request. Interpreter must now be explicitly created with access_needinterp. This helps performance and saves memory quite a bit. I should have done this from the start! Adjusted some modules due to the modifications.
Kadet is a multipurpose multithreaded extensible server. Please give it a try. It is a nice piece of software. 2.08b is probably the last Beta version. The next version will hopefully be a stable version. So far so good :-)
Be the first person to add a text review.
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?
Thanks for your review!
Get credit for your review by logging in via OpenID. Click your account provider: