Tested and fixed server_name resolution

This commit is contained in:
LuckyLaszlo
2022-08-15 19:31:43 +02:00
parent 3fe37ea451
commit fe89be65f6
4 changed files with 38 additions and 9 deletions

View File

@@ -1,8 +1,9 @@
server {
# this is a comment
server_name our_server;
server_name server1;
listen 0.0.0.0:4040;
@@ -92,5 +93,13 @@ server {
# allow_methods DELETE;
# }
}
server {
server_name server2;
listen 0.0.0.0:4040;
index index.html;
root ./www2/;
}

View File

@@ -1,21 +1,20 @@
IN 42 SUBJECT AND/OR PRIORITY :
- CGI (TODO HUGO)
- chunked request (need testing)
- Need to test normal body parsing
- upload files testing and adjustements
- Need to test normal body parsing (Verif avec HUGO)
- Ecrire des tests !
- handle redirection (Work, but weird behavior need deeper test)
- check return 0 de send()
- curl --resolve, for testing hostname
curl -v --resolve server1:4040:127.0.0.1 --resolve server2:4040:127.0.0.1 server1:4040
- test limit de connexions sur listen()
-----------------------------
Si ce n'est pas deja fait :
peut-être check si ip > 32bits
-----------------------------
- chunked request (need testing)
- client_body_limit 0 valeur special pour desactiver dans config
- gerer le champ "Accept" du client
- gerer les ".." dans un URL (verifier que l'on ne sort pas du dossier "root")

View File

@@ -57,6 +57,11 @@ int Webserv::_send_response(Client *client)
std::cerr << "client.fd =" << client->get_cl_fd() << "\n"; // DEBUG
return SEND_CLOSE;
}
if (ret == 0) // actually never happen ?
{
std::cerr << "SEND RET 0 for client.fd =" << client->get_cl_fd() << "\n"; // DEBUG
return SEND_CLOSE;
}
std::cerr << "ret send() = " << ret << "\n"; // DEBUG
return SEND_COMPLETE;
@@ -167,12 +172,17 @@ void Webserv::_append_body(Client *client, const std::string &body, const std::s
ServerConfig *_determine_process_server(Client *client, std::vector<ServerConfig> &servers)
{
/*
Behavior like this :
http://nginx.org/en/docs/http/request_processing.html
_determine_process_server() should be complete.
TODO : test it
*/
std::string const &server_name = client->get_rq_headers("Host");
std::string server_name = client->get_rq_headers("Host");
std::cerr << "server_name = " << server_name << "\n";
size_t pos = server_name.rfind(':');
if (pos != NPOS)
server_name.erase(pos);
std::cerr << "server_name = " << server_name << "\n";
std::vector<ServerConfig>::iterator it = servers.begin();
std::vector<ServerConfig>::iterator default_server = servers.end();

11
www2/index.html Normal file
View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html>
<head>
<title>Le Webserv</title>
</head>
<body>
<h1 style="text-align:center">( ͡◉ ͜ ʖ ͡◉) Le index du serveur 2 ! </h1>
<hr>
<p style="text-align:center">˚ಎ˚</p>
</body>
</html>