1. Introduction
2. Project Lifetime
3. Common Parts
4. Modules
5. Development Constraints
6. Performance et Reliability
7. Modules Testing and Servers
8. Realization Steps
9. Groups and Realization
10. Documentation

1. Introduction

The goal of this project is to create an HTTP Server: It will be able to handle classic HTTP documents and pages requests, CGI execution, etc...

The server is developped using C++, with interoperable modules support. This server will have to handle secure connections through SSL or a Perl interpreter.

2. Project Lifetime

This is an semester project and will be separated in three main steps.

3. Common Parts

3.1 Protocol

The server will have to be an exhaustive implementation of the HTTP/1.1 protocol, strictly following the RFC 2616, with the exception of proxies support.

3.2 Server Configuration

The server must be fully configured by means of an XML configuration file. Any configuration by compilation will not be accepted.

4. Modules

4.1 Definition

You will have to define the Modules API. "You" means the whole promotion. Each group will have to define an API as well as the structure of the modules. An API will be chosen by vote after the second scoring. You will be helped by your quality teacher for the redaction of technical documentation.

A basic object oriented module concept will be provided and will be the base of your module system for the Zia project.

Warning: This task is particularily complex and requires some reflection, research and discussion between groups. Note that when the API has been chosen, every group will have to use it.

4.2 Interoperability

Modules from different groups will have to be interoperable. One module from a group will have to run seamlessly into an other group's server. All of this without any recompilation nor server restart.

4.3 Stages for Modules Integration

Modules must be able to hook up to any stage of request processing. A module could hook on connection establishment to page rendering and everything in between.

4.4 Loading

The server must be able to load/unload modules dynamically, which means these operations can be performed while the server is running.

4.5 Secure Connections Module

The server must offer the ability to establish secure connections using SSL v1&2 or TLS v1 . This feature will have to be a module. You are allowed to use OpenSSL.

4.6 Perl Interpreter Module

This module will have to allow the execution of Perl Scripts via a module. The external execution of perl scripts is not allowed.

4.7 Options

You have the option to add whatever feature you want, which will raise your final rating. Here is a list of possible optional modules :

  1. PSP Module
    This module allows the execution of inline perl code inside an html page, like PHP. You will have to handle session cookies. You can take an example of ASP/ASP.NET, JSP or PHP.

  2. SSL Certificates Support
    You will have to add the support for X.509 Certificates in the security layer. Be aware that this feature might introduce some security concerns.


5. Development Constraints

6. Performance et reliability

You have to consider many aspects of project realization during this year: Code maintainability, code performance, stability and security.

7. Testing Modules and Servers

During your scoring, most of the tests will be performed by a robot and some by an operator. Your server must support these clients :

8. Realization Steps

Three steps :

every step lead  to a grade, a zero to a single step mean you failed

9. Groups and Realization

This project will require groups from 4 to 6  students.

Note about group work

  • Only one grade will be given to each group, each member receiving the same grade.
  • If the professor requests it or if more that 50% of the group requests it, the grade can be individualized, to avoid lazy students hiding in working groups.
  • Once groups are accepted they are fixed, no modifications will be allowed. For any reclamation, please contact the administration or appropriate professors.
  • 10. Documentation

    Intermediate scoring for documentation work will be giving a separate score from technical score. Note that the Documentation is mandatory and the technical part will not be scored if no documentation is not provided.

    Copyright Epitech, September 2004 - Ionis Group
    History :
    2005/03/07 - First version.
    2008/02/02 - annual revision