NGIN-XS is a simple, lightweight, and fast web server written in C++.
π sokim | π heehkim | π° sarchoi
./
βββ includes/ # header files
βββ cgi-bin/ # cgi files
βββ conf/ # configuration files
βββ error_pages/ # html files for error page
βββ html/ # web root
βββ srcs/ # source files
β βββ autoindex/ # autoindex
β βββ config/ # configuration file
βββ tester # client program for test
βββ Makefile
$ git clone https://github.com/srngch/ngin-xs.git
$ make
$ ./webserv [configuration file]
Type [http://servername:port] in the address bar
For example [http://localhost:80]
- Created the repository
- Added the README.md file
- Specified Convention
- Studied concept of multiplexing and socket programming
- Made simple server-client programs: code
- Learned usage of socket programming functions
socket
,bind
,listen
,accept
,send
,recv
,connect
htons
,htonl
,inet_addr
- header:
<sys/socket.h>
,<netinet/in.h>
,<netinet/ip.h>
- Made echo server-client programs: code
- Made a multiplexing server program: code
- Learned usage of multiplexing function
poll
- Fixed bug when multiple clients request connection: code
- Close socket and initialize fd & revents when POLLHUP event occurs
- Removed while loop in recv()
- Fixed bug regarding to EADDRINUSE: code
- Added close(listen_socket) when error occurs
- Added setsockopt() to reuse port already in use
- Specified classes
- Member variables
- Member functions
- Implemented autoindex: Issue, PR
- Implemented POST method: Issue, PR
- Changed header data type: Issue, PR
- [WIP] Parse configuration file: Issue
- Implemented directory path redirection: Issue, PR
- [WIP] Get required values from config class: Issue
- [WIP] Implement python-cgi: Issue
- Implemented python-cgi: Issue, PR
- Updated function to set response header: Issue, PR
- [WIP] Get required values from config class: Issue
- Implemented CUI client: Issue, PR
- Added multipart/form-data file upload to python-cgi: Issue, PR
- Fixed infinite validation when request header is invalid: Issue, PR
- Fixed CRLF issue when response binary file: Issue, PR
- [WIP] Get required values from config class: Issue
- Implemented handling Connection header: Issue, PR
- Implemented Limiting client max body size: Issue, PR
- Refactored exception: Issue, PR
- Get required values from config class: Issue, PR
- Implemented web client: Issue, PR
- Implemented getting required values from config class: Issue, PR
- [WIP] Implement running multiple servers: Issue
- [WIP] Apply Config class: Issue
- [WIP] Try tester program given by subject: Issue
- [WIPπ] Try tester program given by subject: Issue