Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

126 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌐 Webserv

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).


📚 Table des matières


🚀 Fonctionnalités

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

💻 Installation

  1. Clone le dépôt :
git clone https://github.com/Clement-Deville/WebServ
cd Webserv
  1. Compile le projet :
make
  1. Lancer le serveur :
./build/bin/webserv config/default.conf

Ou bien avec le fichier de configuration par defaut:

./build/bin/webserv config/default.conf

⚡ Usage

Le 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/form

✨ Bonus

Fonctionnalités supplémentaires incluses :

  • 🚀 Support de plusieurs CGI
  • 🍪 Support des cookies

🛠️ Correction

Exemples de commandes pour tester toutes les fonctionnalités demandées dans le sujet :

GET

curl -i http://localhost:8080/index.html
curl -i http://localhost:8080/images/sample-400x200.jpg

POST

Creation 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/form

DELETE

Suppression de la ressource precedement creee.

curl -i -X DELETE http://localhost:8080/uploads/form

Redirection

curl -i http://localhost:8080/redirect

Autoindex

curl -i http://localhost:8080/

Erreurs

curl -i http://localhost:8080/nonexistent.html
curl -i http://localhost:8080/protected/file.html

CGI

curl -i http://localhost:8080/scripts/test-cgi.py

Chunked Request

curl -i -X POST --header "Transfer-Encoding: Chunked" --data-binary "@Makefile" http://localhost:8080/scripts/echo.sh

Chunked Response

curl -i -X POST --data-binary "@Makefile" http://localhost:8080/scripts/echo.sh

Cookies

Tester 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.


📂 Structure du projet

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

👤 Auteurs

  • Deville Clement – Étudiant 42 - Github
  • Bekheira Mohamed – Etudiant 42 - Github

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages