{"id":21229870,"url":"https://github.com/sleleu/webserv","last_synced_at":"2025-03-15T02:16:16.399Z","repository":{"id":66973955,"uuid":"601055197","full_name":"Sleleu/webserv","owner":"Sleleu","description":"Writing an HTTP server in C++","archived":false,"fork":false,"pushed_at":"2023-03-25T15:51:20.000Z","size":42343,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T18:11:26.072Z","etag":null,"topics":["42","epoll","http","multiplexing","server","socket"],"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/Sleleu.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":"2023-02-13T09:17:23.000Z","updated_at":"2023-03-25T15:53:24.000Z","dependencies_parsed_at":"2023-07-24T06:45:15.830Z","dependency_job_id":null,"html_url":"https://github.com/Sleleu/webserv","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sleleu%2Fwebserv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sleleu%2Fwebserv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sleleu%2Fwebserv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sleleu%2Fwebserv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sleleu","download_url":"https://codeload.github.com/Sleleu/webserv/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243672487,"owners_count":20328768,"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","epoll","http","multiplexing","server","socket"],"created_at":"2024-11-20T23:30:06.020Z","updated_at":"2025-03-15T02:16:16.381Z","avatar_url":"https://github.com/Sleleu.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# webserv\n\n## Project\n\nThis project is about writing an HTTP server in c++98.\n\nThe project was carried out in 3 main areas:\n- Parsing a configuration file allowing the instantiation of multiple servers\n- Creation of a server receiving HTTP requests from clients, and returning the appropriate response\n- Parsing each request and building the response and return code\n\nThe instantiation of the handler and its servers is done in the following way :\n\n![Server_process](https://user-images.githubusercontent.com/93100775/227724907-d7efc293-9ccf-4f88-9090-6aa802b6433f.png)\n\n## Final render\n\nOnce the program is launched, the terminal displays some information such as the initialization of the servers with their names, ports,\nas well as the incoming requests and responses sent on each socket :\n\n![render_shell](https://user-images.githubusercontent.com/93100775/227725307-0cab5a30-8cb9-41ba-b65b-4a9123b7b940.png)\n\nFor a server initialized on port 8080, for example, by going to `http://localhost:8080`, a presentation page will be available :\n\n![webserv_site](https://user-images.githubusercontent.com/93100775/227726291-a19eada1-6b75-4b5e-b633-2e9778210b2a.gif)\n\nThe presentation page contains routes to tests of our CGIs such as :\n- The use of a calculator\n- The execution of php and python scripts\n\nas well as for the use of text file upload and file deletion in order to test more easily the implementation of the **POST** and **DELETE** methods.\nThe page finally provides an access to the bible.txt in order to test the display of large pages\n\nTo test the server further upstream, a simple client has been created and is accessible from the path `./src/client`. Here is an example of its use after installation, by launching an invalid HTTP GET request \"/hellooo\" :\n\n![client](https://user-images.githubusercontent.com/93100775/227727700-3e849668-479c-4ce6-972a-648ce835e482.png)\n\n\n## Installation\n\n### Clone the repository and make\n\n```shell\ngit clone git@github.com:Sleleu/webserv.git\ncd webserv\nmake\n```\n\n### If you want to install client\n\nFrom ./webserv :\n```shell\ncd src/client\nmake\n```\n\n\n### Usage\n\nHere is a standard use of the program :\n\n```shell\n./webserv serv.conf\n```\nYou can modify the serv.conf file to add other parameters or servers.\nEventually, see with the option `--verbose` for more parameters about parsing of the request/response\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsleleu%2Fwebserv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsleleu%2Fwebserv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsleleu%2Fwebserv/lists"}