Index and Autoindex work nicely, standarized way paths for root and location path are stored in config, still needs a little polishing prolly

This commit is contained in:
Me
2022-08-08 02:50:37 +02:00
parent cf69168a84
commit 9ee7205b95
13 changed files with 99 additions and 173 deletions

View File

@@ -148,8 +148,6 @@ LocationConfig ConfigParser::_parse_location(size_t *start)
if (ret.path[0] != '/')
ret.path.insert(0, "/");
// throw std::invalid_argument("Location path require a leading /");
if (ret.path.back() != '/')
ret.path.push_back('/');
// in theory now curr should be right after the "path"
curr = _content.find_first_not_of(" \t\n", curr);
@@ -233,19 +231,10 @@ void ConfigParser::_set_server_values(ServerConfig *server, \
}
else if (key == "root" && size == 1 && server->root == "")
{
// if (tmp_val[0][0] != '/')
// throw std::invalid_argument("Root requires leading /");
// remove trailing /
if (tmp_val[0].back() == '/')
tmp_val[0].erase(tmp_val[0].size(), 1);
// std::cout << "root: " << tmp_val[0] << '\n';
//might not even do these checks here...
// if (path_is_valid(tmp_val[0]) == 1)
server->root = tmp_val[0];
// else
// throw std::invalid_argument("Root dir invalid 1");
if (tmp_val[0][tmp_val[0].size() - 1] == '/')
tmp_val[0].erase(tmp_val[0].size() - 1, 1);
server->root = tmp_val[0];
}
else if (key == "client_body_limit" && size == 1 \
&& server->client_body_limit == 0)
@@ -257,9 +246,6 @@ void ConfigParser::_set_server_values(ServerConfig *server, \
else if (key == "index")
{
// i think you can call index several times...
// should i be doing an access?
// since index is at the root, but root might not yet be defined
// will check index later in post
for (unsigned long i = 0; i != tmp_val.size(); i++)
server->index.push_back(tmp_val[i]);
}
@@ -288,11 +274,7 @@ void ConfigParser::_set_server_values(ServerConfig *server, \
}
}
else
{
// means either you didn't write the right key, or the value is
// missing, or the value has already been filled.
throw std::invalid_argument("bad key value pair");
}
}
@@ -313,8 +295,9 @@ void ConfigParser::_set_location_values(LocationConfig *location, \
// throw std::invalid_argument("Root requires leading /");
// remove trailing /
if (tmp_val[0].back() == '/')
tmp_val[0].erase(tmp_val[0].size(), 1);
// if (tmp_val[0].back() == '/')
if (tmp_val[0][tmp_val[0].size() - 1] == '/')
tmp_val[0].erase(tmp_val[0].size() - 1, 1);
// if (path_is_valid(tmp_val[0]) == 1)
location->root = tmp_val[0];
// else
@@ -367,11 +350,7 @@ void ConfigParser::_set_location_values(LocationConfig *location, \
location->redirect_uri = tmp_val[1];
}
else
{
// means either you didn't write the right key, or the value is
// missing, or the value has already been filled.
throw std::invalid_argument("bad key value pair");
}
}