+ in fill_script_path() : scipt_path and script_info are filled, removing leadin dot

+ in _cgi_pos() : check validity of extension if it's only alpha characters
+ severall pbm appears
This commit is contained in:
hugogogo
2022-08-13 14:38:50 +02:00
parent defb2ada61
commit 285f2d049f
8 changed files with 60 additions and 43 deletions

View File

@@ -202,27 +202,26 @@ void Client::parse_request_body()
status = 413; // HTTP Client Errors
}
// TODO HUGO : faire la fonction, mdr.
void Client::fill_script_path(const std::string &path, size_t pos)
// TODO HUGO : what if the root doesn't start with leading "." ?
void Client::fill_script_path(std::string &path, size_t pos)
{
(void)path;
(void)pos;
/* size_t pos;
size_t len = path.size();
std::string path = this->get_rq_abs_path();
std::string tmp;
pos = path.find(script);
if (pos == 0)
// should start with "/"
// and being relative to the root :
// if the path to the script is "root/cgi-bin/cgi.php"
// the path relative to the root would be : /cgi-bin/cgi.php
// here we receive the path as : "./cgi-bin/cgi.php/optionnal"
// so we should remove the leading "."
/*DEBUG*/ std::cout << "\n" << B_PURPLE << "debug path dot" << RESET << "\npath:[" << path << "]\n" << "&path[pos]:[" << &path[pos] << "]\n";
if (path[0] == '.')
{
tmp = path.substr(0, pos + len);
_request.script.path = "./srcs" + tmp; // TODO: root path ?
path.erase(0, 1);
pos--;
} /*DEBUG*/ std::cout << "path:[" << path << "]\n" << "&path[pos]:[" << &path[pos] << "]\n";
_request.script.path = "./srcs" + tmp; // TODO: root path ?
_request.script.info = path.substr(pos + len);
return true;
}
return false; */
_request.script.path = path.substr(0, pos); /*DEBUG*/ std::cout << "script_path:[" << _request.script.path << "]\n";
_request.script.info = path.substr(pos); /*DEBUG*/ std::cout << "script_info:[" << _request.script.info << "]\n" << B_PURPLE << "end debug path dot" << RESET << "\n";
}
void Client::clear()