issues
search
unkn0wn107
/
webserv
Simple and fast c++ http/1.1 server === 42 Lyon
GNU General Public License v3.0
0
stars
0
forks
source link
Requirements checklist
#10
Open
unkn0wn107
opened
4 months ago
unkn0wn107
commented
4 months ago
Mandatory Requirements:
[x] The program takes a configuration file as an argument, or uses a default path
[ ] The server never blocks, and the client can be bounced properly if necessary
[x] The server is non-blocking and uses only 1 poll() (or equivalent) for all the I/O operations between the client and the server (listen included)
[x] Poll() (or equivalent) checks read and write at the same time
[x] A read or write operation is never done without going through poll() (or equivalent)
[x] Checking the value of errno is strictly forbidden after a read or write operation
[ ] A request to the server never hangs forever
[x] The server is compatible with the web browser of your choice
[ ] The HTTP response status codes are accurate
[x] The server has default error pages if none are provided
[x] Fork is only used for CGI (like PHP, Python, etc.)
[ ] The server is able to serve a fully static website
[x] Clients are able to upload files
[x] The server has at least GET, POST, and DELETE methods
[x] The server is able to listen to multiple ports (see Configuration file)
Configuration File:
[x] The configuration file is able to:
[x] Choose the port and host of each "server"
[x] Setup the server_names or not
[x] The first server for a host:port is the default for this host:port
[x] Setup default error pages
[x] Limit client body size
[x] Setup routes with one or multiple of the following rules/configuration (routes won't be using regexp):
[x] Define a list of accepted HTTP methods for the route
[ ] Define a HTTP redirection
[x] Define a directory or a file from where the file should be searched
[x] Turn on or off directory listing
[x] Set a default file to answer if the request is a directory
[x] Execute CGI based on certain file extension (for example .php)
[x] Make it work with POST and GET methods
[x] Make the route able to accept uploaded files and configure where they should be saved
[x] You provide some configuration files and default basic files to test and demonstrate every feature works during evaluation
Bonus Part:
[ ] Support cookies and session management (prepare quick examples)
[x] Handle multiple CGI.
unkn0wn107
commented
4 months ago
TODO
[x] Remove errno after a read or write operation
[x] Implement redirections
[x] Fix POST for CGI
[ ] Check HTTP error response codes for all configurations
[ ] Test with a full static website
[ ] Test upload files : existing, not existing etc.
[ ] Test limit client body size
[ ] test redirections
[ ] Implement cookies and session management
[x] Fix CGI timeout
[ ] Check with dev/random if timeout necessary for sending
Mandatory Requirements:
Configuration File: