vfuster66 / 42_Webserv

C'est le moment de comprendre pourquoi les URL's commencent par HTTP

Home Page:https://projects.intra.42.fr/webserv/mine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

42-Webserv

vfuster-'s 42 webserv Score le 13 mars 2024

Sources HTTP

Sources RFC

Sources Serveur Web

Sources Sockets

Sources Nginx

Sources CGI

Sources Modèles OSI

Sources ports et protocoles

Sources IO

Fonctionnements

Initialisation et Configuration du Serveur : La fonction main initialise le serveur en instanciant un objet Server avec un chemin vers le fichier de configuration, un chemin vers le fichier de log et un niveau de log en paramètres. Le constructeur Server lit et analyse la configuration du serveur à l'aide de ConfigParser::parse, configure les sockets du serveur avec Server::setupServerSockets et configure le logging via le singleton Logger.

Fonctionnement du Serveur : Server::start gère les connexions entrantes, accepte les nouvelles sockets clients et les ajoute à un ensemble principal pour surveillance. Il utilise select pour multiplexer entre les descripteurs de fichiers actifs. Pour chaque descripteur de fichier client lisible, il extrait la requête, analyse les cookies et crée une session si nécessaire. Il construit ensuite un objet HttpRequest.

Gestion des Requêtes : Le RequestHandler prend le HttpRequest, le valide et détermine le type de requête (CGI, GET, POST, DELETE). Pour les requêtes CGI, il utilise CgiHandler pour exécuter le script CGI et analyser sa sortie en un HttpResponse. Pour les requêtes GET, POST et DELETE, RequestHandler traite la requête en conséquence, servant potentiellement des fichiers, gérant les données de formulaire ou exécutant des actions côté serveur.

Génération de Réponse : Response::buildHttpResponse construit la chaîne de réponse HTTP à partir de l'objet HttpResponse, en définissant les en-têtes et le contenu appropriés en fonction du résultat du traitement de la requête. Le serveur renvoie ensuite la réponse au client en utilisant Server::safeWrite.

Gestion des Sessions et des Cookies : SessionManager gère la création, la validation et la clôture des sessions. Il génère des ID de session uniques et maintient une carte de session. Cookies analyse et gère les cookies des en-têtes de requête HTTP, permettant au serveur de récupérer ou de définir des cookies liés aux sessions clients.

Logging : La classe Logger fournit des fonctionnalités de logging dans toute l'application, écrivant des messages de log à la fois sur la console et dans un fichier avec des niveaux de log configurables.

About

C'est le moment de comprendre pourquoi les URL's commencent par HTTP

https://projects.intra.42.fr/webserv/mine


Languages

Language:C++ 70.9%Language:HTML 10.3%Language:CSS 6.3%Language:Shell 6.3%Language:PHP 3.1%Language:Python 1.1%Language:Makefile 1.0%Language:Perl 0.8%Language:JavaScript 0.1%