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
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.
This is an semester project and will be separated in three main steps.
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.
The server must be fully configured by means of an XML configuration file. Any configuration by compilation will not be accepted.
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.
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.
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.
The server must be able to load/unload modules dynamically, which means these operations can be performed while the server is running.
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.
This module will have to allow the execution of Perl Scripts via a module. The external execution of perl scripts is not allowed.
You have the option to add whatever feature you want, which will raise your final rating. Here is a list of possible optional modules :
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.
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.
You have to consider many aspects of project realization during this year: Code maintainability, code performance, stability and security.
During your scoring, most of the tests will be performed by a robot and some by an operator. Your server must support these clients :
Three steps :
every step lead to a grade, a zero to a single step mean you failed
Documentation Part
You will have to provide a "fiche projet" in french and for
the development, class and sequence diagrams
Technical Part
You will have to create a basic server: Support for GET, HEAD,... CGI
Execution: POST method, Directory Browsing...
Month of March
Documentation Part
You will have to provide a
specification, which will include
a preliminary version of the modules API.
Technical Part
Project follow-up,
Progress report
and conception of the modules API, (NO draft for YOUR API equal a Zero).
Month of April
Documentation Part
You have to provide a final
specification of the Server
and API.
Technical Part
The server will have to include modules that can be called in each processing
stage, as well as all the previous features.
Final Server bits: SSL/Perl/Options and WebServices for Embedded Servers.
This project will require groups from 4 to 6 students.
Note about group work
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 |