https://github.com/zjamali/webserv
https://github.com/zjamali/webserv
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/zjamali/webserv
- Owner: zjamali
- Created: 2022-02-22T19:36:44.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-04-22T14:11:08.000Z (about 4 years ago)
- Last Synced: 2025-06-01T09:59:55.799Z (about 1 year ago)
- Language: JavaScript
- Size: 22.1 MB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# webserv
> 42 project, Building our own web server in C++. A program capable of running an HTTP server, handling requests, and parsing configuration files.
Team : [abdait-m](https://github.com/nowl01) / [zjamali](https://github.com/zjamali) / [iltafah](https://github.com/iltafah)
[Subject](https://github.com/zjamali/webserv/blob/main/subject/en.subject.pdf)
## Main points:
This server handler the following HTTP features:
- The basics of HTTP protocol (status line / request line, and a few headers).
- GET, POST and DELETE methods.
- HTTP response status codes (200, 404, 400 ....)
- Error pages for the appropriate status code.
- CGI.
- Cookies and session management.
## Resources
### Server setup
[How to build a simple HTTP server](https://medium.com/from-the-scratch/http-server-what-do-you-need-to-know-to-build-a-simple-http-server-from-scratch-d1ef8945e4fa)
[Simple server with C++](https://ncona.com/2019/04/building-a-simple-server-with-cpp/)
[C++ Web Programming](https://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm)
### HTTP 1.1 (standard to follow) :
[HTTP/1.1 (RFC 2616)](https://www.rfc-editor.org/rfc/rfc2616.html)
[HTTP/1.1 : Message Syntax and Routing (RFC 7230)](https://www.rfc-editor.org/rfc/rfc7230.html)
[HTTP/1.1 : Semantics and Content (RFC 7231)](https://www.rfc-editor.org/rfc/rfc7231.html)
[HTTP/1.1 : Conditional Requests (RFC 7232)](https://www.rfc-editor.org/rfc/rfc7232.html)
[HTTP/1.1 : Range Requests (RFC 7233)](https://www.rfc-editor.org/rfc/rfc7233.html)
[HTTP/1.1 : Caching (RFC 7234)](https://www.rfc-editor.org/rfc/rfc7234.html)
[HTTP/1.1 : Authentication (RFC 7235)](https://www.rfc-editor.org/rfc/rfc7235.html)
### Other HTTP (legacy / future) :
[HTTP/1.0 (RFC 1945)](https://www.rfc-editor.org/rfc/rfc1945.html)
[HTTP/2 (RFC 7240)](https://www.rfc-editor.org/rfc/rfc7540.html)
[HTTP/2 : Header Compression (RFC 7241)](https://www.rfc-editor.org/rfc/rfc7541.html)
[FTP (RFC 959)](https://www.rfc-editor.org/rfc/rfc959.html)
### Select and non-blocking
[Select](https://www.lowtek.com/sockets/select.html)
[Non-blocking I/O](https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzab6/xnonblock.htm)
### CGI
[CGI : Getting Started](http://www.mnuwer.dbasedeveloper.co.uk/dlearn/web/session01.htm)
[CGI 1.1 Documentation](http://www.wijata.com/cgi/cgispec.html#4.0)