Code Monkey home page Code Monkey logo

42_webserv's Introduction

webserv (42Porto - 42Cursus) CPP Logo 

Project done in collaboration with:
Rodrigo Ramos
João Arsénio

Grade: 100/100

Demonstration:

Overview

42_Webserv is a web server written from scratch in C++ (C++98), capable of handling multiple clients simultaneously.

Disclaimer: Only tested on Firefox

Features

  • NGINX-like configuration file
  • Handling of the GET, POST and DELETE HTTP request methods
  • File upload
  • Python CGI support

Installing and running the project:

1- Installing webserv dependencies:

sudo apt-get install c++ make  

2- Clone this repository:

git clone https://github.com/Kuninoto/42_webserv

3- Navigate to lvl_5_webserv and run make

cd 42_webserv/lvl_5_webserv
make

4- make clean so that you don't keep those object files that you won't need anymore

make clean

5- Run webserv

./webserv <config_file>
or
./webserv
which is the same as:
./webserv config/default.conf

6- Open Firefox and search for localhost:8080

Subject (v20.4): webserv en_subject

Makefile Available Targets:

make or make all - compiles webserv
make clean - wipes all object files
make fclean - deletes webserv and all object files
make re - fclean + all

Useful links

What is HTTP?
Definition
HTTP Crash Course & Exploration

Understanding HTTP
HTTP Request Methods:
Overview
GET
POST
DELETE

HTTP Docs
HTTP Header Fields

What is a Web Server?
Definition
Concepts and Examples
How to build a simple HTTP server from scratch

Sockets
Definition
What exactly is a Socket?

I/O Multiplexing
Socket programming with select(), poll() and epoll() in Linux poll() man page

NGINX
Definition
Understanding NGINX configuration file

CGI
Common Gateway Interface (CGI)
Python CGI Programming

General
Blocking vs. Non-blocking I/O
URL vs. URI


Made by Nuno Carvalho (Kuninoto) | [email protected]

42_webserv's People

Contributors

kuninoto avatar ramos21rodrigo avatar realmadnessworld avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.