Skip to content

Commit

Permalink
Merge branch 'main' into slombard/web-279-check-and-fix-cgi
Browse files Browse the repository at this point in the history
  • Loading branch information
552020 authored May 20, 2024
2 parents 61612ed + b3bca46 commit 8152918
Show file tree
Hide file tree
Showing 48 changed files with 1,243 additions and 258 deletions.
33 changes: 33 additions & 0 deletions conf/eval.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
server {
listen 127.0.0.1:8080;
server_name localhost;
allow_methods GET POST DELETE;
autoindex on;
root /var/;
error_page 404 html/404_salad.html;
cgi_ext .cgi;
client_max_body_size 1000;
location /google {
return http://google.com;
}
location /cgi-bin/ {
cgi_ext .cgi .py;
autoindex off;
}
}

server {
listen 8081;
server_name www.example.com;
allow_methods GET DELETE;
autoindex off;
root var/;
}

server {
listen 8082;
server_name www.php_site.com;
allow_methods GET POST DELETE;
autoindex off;
root var/;
}
File renamed without changes.
File renamed without changes.
35 changes: 35 additions & 0 deletions conf/webserv.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@

server {
listen 8080;
server_name www.saladbook.xyz;
allow_methods GET POST DELETE;
root var/;
index html/index_salad.html;
autoindex on;
error_page 404 html/404_salad.html;
error_page 400 html/400_salad.html;
client_max_body_size 228;

location /admin {
allow_methods POST;
}

location /database {
allow_methods POST;
}

location /special_effects {
allow_methods GET SALAD;
}
}

server {
listen 8080;
server_name localhost:8080;
allow_methods GET POST DELETE;
root html/;
index html/;
autoindex on;
error_page 404 404/404.jpg;

}
47 changes: 47 additions & 0 deletions conf/webserv_default.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
server {
listen 8080;
server_name www.test.com;
allow_methods GET POST DELETE;
autoindex on;
root /var/;
error_page 404 404.html;
cgi_ext .cgi;

location /admin {
return http://google.com;
index admin.html;
allow_methods GET POST;
}
location /cgi-bin/ {
cgi_ext .cgi .py;
autoindex off;
}
}

server {
listen 8080;
server_name www.example.com;
allow_methods GET POST;
autoindex on;
root var/;
location / {
index index.html;
allow_methods GET POST;
upload_path upload/;
}
}

server {
listen 8080;
server_name www.php_site.com;
allow_methods GET POST DELETE;
autoindex off;
root var/;
}

server {
listen 8080;
server_name www.php_site;
allow_methods GET POST DELETE;
root var/;
}
95 changes: 95 additions & 0 deletions docs/HTTP_codes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
## 400 Bad Request
### How to trigger?
Send invalid HTTP request

## 401 Unauthorized
_not supported_

## 402 Payment Required
_not supported_

## 403 Forbidden
### How to trigger?
Access file without permissions (TODO: @Leo)

## 404 Not Found
### How to trigger?
Access unexisting page

## 405 Method Not Allowed
### How to trigger?
Any request method besides GET, POST, DELETE

## 406 Not Acceptable
_not supported_

## 407 Proxy Authentication Required
_not supported_

## 408 Request Timeout
### How to trigger?
(TODO: @Stefano)

## 409 Conflict
_not supported_

## 410 Gone
_not supported_

## 411 Length Required
### How to trigger?
Send POST request without Content-Length header

## 412 Precondition Failed
_not supported_

## 413 Payload Too Large
### How to trigger?
Send POST request bigger than client_max_body_size

## 414 URI Too Long
### How to trigger?
Send request with headers > 8KB

## 415 Unsupported Media Type
Send request to CGI that is not in cgi_ext directive

## 416 Range Not Satisfiable
_not supported_

## 417 Expectation Failed
_not supported_

## 418 I'm a teapot
_not supported_

## 421 Misdirected Request
_not supported_

## 422 Unprocessable Content (WebDAV)
_not supported_

## 423 Locked (WebDAV)
_not supported_

## 424 Failed Dependency (WebDAV)
_not supported_

## 425 Too Early Experimental
_not supported_

## 426 Upgrade Required
TODO (@Someone)

## 428 Precondition Required
_not supported_

## 429 Too Many Requests
TODO (@Stefano maybe?)

## 431 Request Header Fields Too Large
### How to trigger?
Send request with headers > 8KB

## 451 Unavailable For Legal Reasons
_not supported_
42 changes: 42 additions & 0 deletions html/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to Our Web Service</title>
</head>
<body>
<header>
<div class="container">
<h1>Welcome to Our Web Service</h1>
</div>
</header>
<nav>
<div class="container">
<a href="/development_site/cgi-bin/hello_py.cgi">Development Site</a>
<a href="/perl_site/index.html">Perl Site</a>
<a href="/php_site/index.html">PHP Site</a>
<a href="/www.python_site.com/index.html">Python Site</a>
</div>
</nav>
<div class="container">
<article>
<h2>About This Server</h2>
<p>Welcome to our multi-faceted web server. Here, you can find a variety of web applications and sites ranging from development tools to language-specific sites. Whether you're here to explore our Perl, PHP, or Python projects, or to delve into our development tools, there's something for everyone.</p>
<p>Please use the navigation above to explore our sites.</p>
</article>
</div>
<form action="http://localhost:8080/" method="post" enctype="multipart/form-data">
<label for="file">Choose a file:</label>
<input type="file" id="file" name="file">
<br>
<input type="submit" value="Upload">
</form>
<h2>Upload Multiple Files</h2>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" multiple>
<br>
<input type="submit" value="Upload Files">
</form>
</body>
</html>
2 changes: 1 addition & 1 deletion include/webserv.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#include <netdb.h>
#include "Debug.hpp"

#define CONFIG_FILE_DEFAULT_PATH "./config/webserv_default.conf"
#define CONFIG_FILE_DEFAULT_PATH "./conf/webserv_default.conf"
#define RED "\033[1;31m"
#define GREEN "\033[1;32m"
#define YELLOW "\033[1;33m"
Expand Down
20 changes: 20 additions & 0 deletions multiIPv4+IPv6.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
server {
listen 0.0.0.0:8081;
listen [::]:8081;
server_name www.development_site;
root /var/www/html;
}

server {
listen 127.0.0.1:8080;
listen [::1]:8080;
server_name www.saladbook;
root /var/www/html;
}

server {
listen 127.0.0.1:8082;
listen [::1]:8082;
server_name www.python_site.com;
root /var/www/html;
}
17 changes: 17 additions & 0 deletions multiIPv4.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
server {
listen 0.0.0.0:8081;
server_name www.development_site;
root /var/www/html;
}

server {
listen 127.0.0.1:8080;
server_name www.saladbook;
root /var/www/html;
}

server {
listen 127.0.0.1:8082;
server_name www.python_site.com;
root /var/www/html;
}
17 changes: 17 additions & 0 deletions multiIPv6.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
server {
listen [::]:8081;
server_name www.development_site;
root /var/www/html;
}

server {
listen [::1]:8080;
server_name www.saladbook;
root /var/www/html;
}

server {
listen [::1]:8082;
server_name www.python_site.com;
root /var/www/html;
}
17 changes: 17 additions & 0 deletions multi_mixed.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
server {
listen 0.0.0.0:8081;
server_name www.development_site;
root /var/www/html;
}

server {
listen [::1]:8080;
server_name www.saladbook;
root /var/www/html;
}

server {
listen [::1]:8082;
server_name www.python_site.com;
root /var/www/html;
}
2 changes: 1 addition & 1 deletion src/AResponseHandler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class AResponseHandler
virtual ~AResponseHandler();
AResponseHandler(const AResponseHandler &other);
AResponseHandler &operator=(const AResponseHandler &other);
virtual void handleRequest(const HTTPRequest &request, HTTPResponse &response) = 0;
virtual void handleRequest(HTTPRequest &request, HTTPResponse &response) = 0;
};

#endif
2 changes: 1 addition & 1 deletion src/CGIHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ CGIHandler::~CGIHandler()
// return *this;
// }

void CGIHandler::handleRequest(const HTTPRequest &request, HTTPResponse &response)
void CGIHandler::handleRequest(HTTPRequest &request, HTTPResponse &response)
{
CGIHandler cgiInstance;
// cgiInstance.setFDsRef(_FDsRef); // here we set the FDs to close later unused ones
Expand Down
2 changes: 1 addition & 1 deletion src/CGIHandler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class CGIHandler : public AResponseHandler
public:
CGIHandler();
virtual ~CGIHandler();
void handleRequest(const HTTPRequest &request, HTTPResponse &response);
void handleRequest(HTTPRequest &request, HTTPResponse &response);
std::vector<std::string> createArgvForExecve(const MetaVariables &env);
std::vector<char *> convertToCStringArray(const std::vector<std::string> &input);
std::string executeCGI(const MetaVariables &env);
Expand Down
Loading

0 comments on commit 8152918

Please sign in to comment.