Twincling MiniServ Project

tsnet's picture

Twincling MiniServ is a lightweight web server. It is written entirely in C and can currently serve basic HTML files. MiniServ is a student project that has been adopted by the Twincling Technology Foundation at the authors request.

Repository: You can get the latest version through SVN from the MiniServ page at sourceforge

 

Contributing

People wanting to contribute to MiniServ currently have two options:

  1. Contribute on your own via mailed-in patch request
  2. Contribute through the Twincling Summer Internship programme

Project Ideas

Below are some ideas that students could take up to expand MiniServ further:

Configuration File Support

Requirements: C, Language Parsing

Description: Currently, a basic framework exists to facilitate the support for configuring the entire server through configuration files, but is still unimplimented. The project would involve coming up with a grammar for configuration files and writing a parser to load settings from a configuration file. This will require good C programming skills and a basic knowledge of parsing grammars.

GUI Frontend

Requirements: C++, Qt Framework

Description: The project involves creating a GUI frontend for the creation of configuration files. This project is a standalone project and works seperately from MiniServ itself. Creating a GUI frontend for MiniServ will make administration and setting up much easier for people with lesser technical knowledge. It will require some strong C++ and object oriented design skills along with some knowledge of the Nokia Qt Framework.

Cross Platform Support

Requirements: C, Socket programming in Linux and Windows

Description: Currently the networking code in MiniServ is written entirely using the Berkeley Sockets API. The project will involve the modification of the current networking code to make it platform independent. The student will need a working knowledge of socket programming in both Linux and Windows environments.

Networking Code Optimization

Requirements: C, Socket Programming

Description: Currently, MiniServ uses a very primitive method for handling multiple requests. The project will aim at creating a more robust framework for handling a large number of requests efficiently. The student should have a good knowledge of C and should have a fair idea of network programming using the Sockets API.

Access Control

Requirements: C Programming

Description: Currently, MiniServ has no access control mechanisms built into it, ie. there is no way to protect certain pages from being accessed. The project will aim to implement a basic mechanism (perhaps using .htaccess files) to enable access control for directories and files. Students will need to learn how other web servers currently handle access control and come up with a scheme to integrate into MiniServ.

Stress Testing MiniServ

Requirements: C Programming

Description: MiniServ is still still in its infancy and has a lot of bugs that lead to some odd crashes and events. The idea is to write a set of testcases that will stress test MiniServ and ensure that it can handle any type of request. Any failures in the stress tests should be fixed in the MiniServ sourcecode.

 

Note: Students applying for an internship are not expected to know all the required skills beforehand. Any knowledge that you are lacking can be acquired during the course of the internship. Mentors will be assigned to all students taking up any projects and will help out with any shortcomings in your skill! Don't fear!

 

Comments

Post new comment

CAPTCHA
Thank you for using Captcha to prevent automated spam submissions.
Image CAPTCHA
Enter the characters (without spaces) shown in the image.