{"id":16277184,"url":"https://github.com/rbourgeat/webserv","last_synced_at":"2025-04-08T17:20:22.637Z","repository":{"id":114431977,"uuid":"407883497","full_name":"rbourgeat/webserv","owner":"rbourgeat","description":"This project is here to make you write your HTTP server. You will be able to test it with a real browser. HTTP is one of the most used protocols on the internet. Knowing its arcane will be useful, even if you won’t be working on a website.","archived":false,"fork":false,"pushed_at":"2021-12-18T15:53:17.000Z","size":14548,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-14T13:41:38.666Z","etag":null,"topics":["42","42born2code","42cursus","42paris","42projects","42school","http"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rbourgeat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-18T14:32:09.000Z","updated_at":"2021-12-18T15:53:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"70b670d1-726a-49b8-957b-1f7fa03be13f","html_url":"https://github.com/rbourgeat/webserv","commit_stats":{"total_commits":185,"total_committers":39,"mean_commits":4.743589743589744,"dds":0.854054054054054,"last_synced_commit":"43d47eab97b3204b3302f81c0f1bead2804ed1fb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbourgeat%2Fwebserv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbourgeat%2Fwebserv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbourgeat%2Fwebserv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbourgeat%2Fwebserv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rbourgeat","download_url":"https://codeload.github.com/rbourgeat/webserv/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247888567,"owners_count":21013002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42","42born2code","42cursus","42paris","42projects","42school","http"],"created_at":"2024-10-10T18:53:12.185Z","updated_at":"2025-04-08T17:20:22.595Z","avatar_url":"https://github.com/rbourgeat.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# webserv\nThis project is here to make you write your HTTP server. You will be able to test it with a real browser. HTTP is one of the most used protocols on the internet. Knowing its arcane will be useful, even if you won’t be working on a website.\n\n**Tutorials**\n- [Building a simple web serveur in c++](https://ncona.com/2019/04/building-a-simple-server-with-cpp/)\n- [C++ Web Programming: CGI program](https://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm)\n- [HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP)\n- [Build a simple HTTP server from scratch](https://medium.com/from-the-scratch/http-server-what-do-you-need-to-know-to-build-a-simple-http-server-from-scratch-d1ef8945e4fa)\n- [Manage a socket flow of events using poll()](https://www.ibm.com/docs/en/i/7.2?topic=designs-using-poll-instead-select)\n- [C++ programming applied to network](https://bousk.developpez.com/cours/reseau-c++/) (in French)\n- [Network programming](https://beej.us/guide/bgnet/)\n\n**HTTP documentation**\n- [RFC 2616: HTTP 1.1 protocol](https://datatracker.ietf.org/doc/html/rfc2616)\n- [RFC 7230: HTTP/1.1 Message Syntax and Routing](https://www.rfc-editor.org/rfc/pdfrfc/rfc7230.txt.pdf)\n- [List of HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)\n- [Content-Type](https://docs.microsoft.com/en-us/previous-versions/exchange-server/exchange-10/ms526508(v=exchg.10)?redirectedfrom=MSDN)\n- [Content-Type Stack List](https://stackoverflow.com/questions/23714383/what-are-all-the-possible-values-for-http-content-type-header)\n- [Content-Type Full List](https://www.iana.org/assignments/media-types/media-types.xhtml)\n- [Tres bon site aussi !](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/)\n- [HTTP messages](https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages)\n- [Redirections](https://developer.mozilla.org/fr/docs/Web/HTTP/Redirections)\n\n**Useful RFCs**\n- [RFC editor](https://www.rfc-editor.org/retrieve/): official source for RFCs on the World Wide Web.\n- [RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax](https://datatracker.ietf.org/doc/html/rfc2396): useful definitions of URI, port and host\n\n**Useful C functions**\n- [socket](https://man7.org/linux/man-pages/man2/socket.2.html): creates an endpoint for communication and returns a file descriptor that refers to that endpoint.\n- [listen](https://man7.org/linux/man-pages/man2/listen.2.html): listens for connections on a socket.\n- [poll](https://man7.org/linux/man-pages/man2/poll.2.html): waits for one of a set of file descriptors to become ready to perform I/O.\n- [accept](https://man7.org/linux/man-pages/man2/accept.2.html): accepts a connection on a socket.\n\n**CGI Doc**\n- [RFC 3875: CGI](https://www.rfc-editor.org/rfc/rfc3875.pdf)\n- [Best CGI Exemple](https://www.fi.muni.cz/usr/jkucera/tic/tic0305.html): Programmation CGI in C++.\n- [CGI Environmnent Variables](https://fr.wikipedia.org/wiki/Variables_d%27environnement_CGI)\n- [Good CGI Howto (and cookies)](http://www.purplepixie.org/cgi/howto.php)\n- [Some exemples](https://pub.phyks.me/sdz/sdz/ecrivez-votre-site-web-en-c-avec-la-cgi.html)\n\n**Tools**\n- [Super Mega Site pour tester les Headers !](https://reqbin.com/)\n- [cURL \"--resolve\"; curl -H \"Host: ...\"](https://sodocumentation.net/curl/topic/10565/name-resolve-curl-tricks) (for testing different server names).\n\n**Server model: nginx documentation**\n- [Inside Nginx architecture](https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/)\n- [Understanding Nginx Server and Location Block Selection Algorithms](https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbourgeat%2Fwebserv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frbourgeat%2Fwebserv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbourgeat%2Fwebserv/lists"}