Webserv est un serveur HTTP minimaliste développé dans le cadre du cursus 42. Il permet de gérer des requêtes HTTP/1.1 avec des fonctionnalités de base et avancées (bonus inclus).
Le serveur Web propose :
- 🔹 Support des méthodes HTTP : GET, POST, DELETE
- 🔹 Gestion des fichiers statiques et dossiers
- 🔹 Traitement des requêtes HTTP/1.1
- 🔹 Pages d’erreur personnalisées (404, 500…)
- 🔹 Gestion des redirects
- 🔹 Configuration multiple via fichier config
- 🔹 Limitation de la taille des requêtes
- 🔹 Logging simple des requêtes
- 🔹 Chunked Transfer Encoding
- 🔹 Upload de fichiers via
POST - 🔹 Suppression de fichiers via
DELETE - 🔹 Support d'au moins un CGI pour du contenu dynamique
- Clone le dépôt :
git clone https://github.com/Clement-Deville/WebServ
cd Webserv- Compile le projet :
make- Lancer le serveur :
./build/bin/webserv config/default.confOu bien avec le fichier de configuration par defaut:
./build/bin/webserv config/default.confLe serveur écoute sur le(s) port(s) définis dans le fichier de configuration.
Tu peux tester les pages web avec un navigateur ou curl :
curl http://localhost:8080/index.html
curl -X POST -d "name=test" http://localhost:8080/uploads/form
curl -X DELETE http://localhost:8080/uploads/formFonctionnalités supplémentaires incluses :
- 🚀 Support de plusieurs CGI
- 🍪 Support des cookies
Exemples de commandes pour tester toutes les fonctionnalités demandées dans le sujet :
curl -i http://localhost:8080/index.html
curl -i http://localhost:8080/images/sample-400x200.jpgCreation d'une ressource avec la methode POST, puis recuperation du contenu avec GET pour verifier sa creation.
curl -i -X POST -d "username=test&password=123" http://localhost:8080/uploads/form
curl -i http://localhost:8080/uploads/formSuppression de la ressource precedement creee.
curl -i -X DELETE http://localhost:8080/uploads/formcurl -i http://localhost:8080/redirectcurl -i http://localhost:8080/curl -i http://localhost:8080/nonexistent.html
curl -i http://localhost:8080/protected/file.htmlcurl -i http://localhost:8080/scripts/test-cgi.pycurl -i -X POST --header "Transfer-Encoding: Chunked" --data-binary "@Makefile" http://localhost:8080/scripts/echo.shcurl -i -X POST --data-binary "@Makefile" http://localhost:8080/scripts/echo.shTester plusieurs requetes sur Firefox (ou autre) en surveillant le flux reseau grace a l'utilitaire F12.
On doit retrouver un header Set-Cookie: dans la/les premieres reponse(s) du serveur, puis les reponses qui comportent un header Cookie devraient ne pas recevoir de reponse avec a nouveau un Set-Cookie header.
Webserv/
├── src/ # Code source
├── include/ # Headers
├── config/ # Fichiers de configuration
├── www/ # Contenu web pour tests
├── docs/ # Documentation
├── test/ # Contenu pour tests supplementaires
├── Makefile
└── README.md