mirror of
https://github.com/3lswear/webserv.git
synced 2025-10-28 21:07:59 +03:00
misc
This commit is contained in:
@@ -176,7 +176,7 @@ std::string Client::generateRespons(std::vector<ServerConfig *> &configs)
|
|||||||
_response.generate2(connected_to);
|
_response.generate2(connected_to);
|
||||||
|
|
||||||
_toSend = new std::string;
|
_toSend = new std::string;
|
||||||
*_toSend = _response.getHeader() + _response.getBody();
|
*_toSend = (_response.getBody().empty()) ? _response.getHeader() : _response.getHeader() + _response.getBody();
|
||||||
|
|
||||||
|
|
||||||
len = _toSend->size();
|
len = _toSend->size();
|
||||||
@@ -184,7 +184,10 @@ std::string Client::generateRespons(std::vector<ServerConfig *> &configs)
|
|||||||
_to_send_char = new char[len + 1];
|
_to_send_char = new char[len + 1];
|
||||||
std::memcpy(_to_send_char, _toSend->c_str(), len + 1);
|
std::memcpy(_to_send_char, _toSend->c_str(), len + 1);
|
||||||
|
|
||||||
|
std::cout << PINK << "\n[["<< YELLOW << "Request header\n{" << ENDL;
|
||||||
|
std::cout << BLUE << _request.getHeader() << YELLOW << "},\n" << ENDL;
|
||||||
|
std::cout << GREEN << "Response Header\n{" << ENDL;
|
||||||
|
std::cout << BLUE << _response.getHeader() << GREEN << "}" << PINK << "]]\n"<< ENDL;
|
||||||
delete _toSend;
|
delete _toSend;
|
||||||
if (_request.getBody() != NULL)
|
if (_request.getBody() != NULL)
|
||||||
_request.freeData();
|
_request.freeData();
|
||||||
|
|||||||
@@ -108,6 +108,10 @@ ssize_t Request::getRecved(void) const
|
|||||||
{
|
{
|
||||||
return (_received);
|
return (_received);
|
||||||
}
|
}
|
||||||
|
std::string &Request::getHeader(void)
|
||||||
|
{
|
||||||
|
return _head;
|
||||||
|
}
|
||||||
void Request::setData(char *str)
|
void Request::setData(char *str)
|
||||||
{
|
{
|
||||||
this->_data = str;
|
this->_data = str;
|
||||||
@@ -226,7 +230,6 @@ void Request::splitData(std::string &data)
|
|||||||
str = _head.substr(_headerSize);
|
str = _head.substr(_headerSize);
|
||||||
_head = tmp;
|
_head = tmp;
|
||||||
_head_ok = true;
|
_head_ok = true;
|
||||||
|
|
||||||
parseHeader();
|
parseHeader();
|
||||||
if ((_contentLength == 0 && !_chunked) || (_method == "GET"
|
if ((_contentLength == 0 && !_chunked) || (_method == "GET"
|
||||||
|| _method == "DELETE" || _method == "HEAD"))
|
|| _method == "DELETE" || _method == "HEAD"))
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ public:
|
|||||||
void clear(void);
|
void clear(void);
|
||||||
void splitData(std::string &);
|
void splitData(std::string &);
|
||||||
void freeData(void);
|
void freeData(void);
|
||||||
|
std::string &getHeader(void);
|
||||||
|
|
||||||
void increaseRecvCounter(unsigned int n);
|
void increaseRecvCounter(unsigned int n);
|
||||||
~Request();
|
~Request();
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ Response::Response()
|
|||||||
{
|
{
|
||||||
initErrorCode();
|
initErrorCode();
|
||||||
_Autoindex = true;
|
_Autoindex = true;
|
||||||
_body = new std::string;
|
_body = NULL;
|
||||||
_header = new std::string;
|
_header = NULL;
|
||||||
_code = 200;
|
_code = 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,7 +15,8 @@ Response::Response()
|
|||||||
|
|
||||||
void Response::freeData(void)
|
void Response::freeData(void)
|
||||||
{
|
{
|
||||||
delete _body;
|
if (_body != NULL)
|
||||||
|
delete _body;
|
||||||
delete _header;
|
delete _header;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,6 +291,7 @@ bool Response::allowedMethod(std::string &method)
|
|||||||
}
|
}
|
||||||
void Response::generateHeader(void)
|
void Response::generateHeader(void)
|
||||||
{
|
{
|
||||||
|
_header = new std::string;
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
std::string tmp;
|
std::string tmp;
|
||||||
|
|
||||||
@@ -298,8 +300,8 @@ void Response::generateHeader(void)
|
|||||||
ss << "Content-Type: " << _contentType << "\r\n";
|
ss << "Content-Type: " << _contentType << "\r\n";
|
||||||
ss << "Content-Length: " << _contentLength << "\r\n";
|
ss << "Content-Length: " << _contentLength << "\r\n";
|
||||||
ss << "Server: " << _server << "\r\n";
|
ss << "Server: " << _server << "\r\n";
|
||||||
if (!_keepAlive.empty())
|
// if (!_keepAlive.empty())
|
||||||
ss << "Keep-Alive: " <<_keepAlive << "\r\n";
|
// ss << "Keep-Alive: " <<_keepAlive << "\r\n";
|
||||||
ss << "Date: " << _date << "\r\n";
|
ss << "Date: " << _date << "\r\n";
|
||||||
if (!_cacheControl.empty())
|
if (!_cacheControl.empty())
|
||||||
ss << "Cache-Control: " << _cacheControl << "\r\n";
|
ss << "Cache-Control: " << _cacheControl << "\r\n";
|
||||||
@@ -374,6 +376,7 @@ bool Response::isRedirect()
|
|||||||
|
|
||||||
void Response::invalidClient(void)
|
void Response::invalidClient(void)
|
||||||
{
|
{
|
||||||
|
_body = new std::string;
|
||||||
if (!isRedirect())
|
if (!isRedirect())
|
||||||
OpenErrorFile(_code);
|
OpenErrorFile(_code);
|
||||||
setHeaderBlocks();
|
setHeaderBlocks();
|
||||||
@@ -385,6 +388,7 @@ void Response::invalidClient(void)
|
|||||||
|
|
||||||
void Response::methodGet(void)
|
void Response::methodGet(void)
|
||||||
{
|
{
|
||||||
|
_body = new std::string;
|
||||||
if (!_location->cgi_pass.empty())
|
if (!_location->cgi_pass.empty())
|
||||||
{
|
{
|
||||||
CgiHandle cgi(_request, *this);
|
CgiHandle cgi(_request, *this);
|
||||||
@@ -408,12 +412,13 @@ void Response::methodGet(void)
|
|||||||
generateBody();
|
generateBody();
|
||||||
setHeaderBlocks();
|
setHeaderBlocks();
|
||||||
generateHeader();
|
generateHeader();
|
||||||
std::cout << GREEN << "GET method called\n" << ZERO_C;
|
DBOUT << GREEN << "GET method called\n" << ZERO_C;
|
||||||
}
|
}
|
||||||
void Response::methodPost(void)
|
void Response::methodPost(void)
|
||||||
{
|
{
|
||||||
if (!_location->cgi_pass.empty())
|
if (!_location->cgi_pass.empty())
|
||||||
{
|
{
|
||||||
|
_body = new std::string;
|
||||||
CgiHandle cgi(_request, *this);
|
CgiHandle cgi(_request, *this);
|
||||||
|
|
||||||
*_body = cgi.executeCgi();
|
*_body = cgi.executeCgi();
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ void Server::readSocket(Client &client, int fd)
|
|||||||
// client.setRawData(buf);
|
// client.setRawData(buf);
|
||||||
client.increaseRecvCounter(bytes_read);
|
client.increaseRecvCounter(bytes_read);
|
||||||
status = client.parseRequest();
|
status = client.parseRequest();
|
||||||
|
(void)status;
|
||||||
// client_map[fd].printClientInfo();
|
// client_map[fd].printClientInfo();
|
||||||
|
|
||||||
if (client.allRecved())
|
if (client.allRecved())
|
||||||
@@ -252,7 +253,7 @@ void Server::start(void)
|
|||||||
{
|
{
|
||||||
|
|
||||||
ready_num = epoll_wait(_epoll_fd, _events, MAX_CLIENT, 5000);
|
ready_num = epoll_wait(_epoll_fd, _events, MAX_CLIENT, 5000);
|
||||||
// DBOUT << TURQ << "ready_num " << ready_num << ENDL;F
|
// DBOUT << TURQ << "ready_num " << ready_num << ENDL;
|
||||||
|
|
||||||
if (ready_num < 0)
|
if (ready_num < 0)
|
||||||
throw std::logic_error("epoll_ret");
|
throw std::logic_error("epoll_ret");
|
||||||
|
|||||||
@@ -383,6 +383,8 @@ void ServerConfig::checkConfig(void)
|
|||||||
|
|
||||||
it = _locations.begin();
|
it = _locations.begin();
|
||||||
location *tmp;
|
location *tmp;
|
||||||
|
if (it == _locations.end())
|
||||||
|
throw ConfigException("Required routing settings are missing!");
|
||||||
while (it != _locations.end())
|
while (it != _locations.end())
|
||||||
{
|
{
|
||||||
tmp = *it;
|
tmp = *it;
|
||||||
@@ -402,43 +404,43 @@ void ServerConfig::printFields(void)
|
|||||||
|
|
||||||
it1 = _errorPages.begin();
|
it1 = _errorPages.begin();
|
||||||
it = _locations.begin();
|
it = _locations.begin();
|
||||||
std::cout << RED << "-------------------------Server-Start----------------------------------\n" << ZERO_C;
|
DBOUT << RED << "-------------------------Server-Start----------------------------------\n" << ZERO_C;
|
||||||
std::cout << GREEN << "name" << " " << BLUE << _serverName << std::endl;
|
DBOUT << GREEN << "name" << " " << BLUE << _serverName << std::endl;
|
||||||
std::cout << GREEN << "host" << " " << BLUE << _host << std::endl;
|
DBOUT << GREEN << "host" << " " << BLUE << _host << std::endl;
|
||||||
std::cout << GREEN << "port" << " " << BLUE << _port << std::endl;
|
DBOUT << GREEN << "port" << " " << BLUE << _port << std::endl;
|
||||||
std::cout << GREEN << "client_body_size" << " " << BLUE << _clientBodySize << std::endl;
|
DBOUT << GREEN << "client_body_size" << " " << BLUE << _clientBodySize << std::endl;
|
||||||
std::cout << GREEN << "location" << std::endl;
|
DBOUT << GREEN << "location" << std::endl;
|
||||||
while (it != _locations.end())
|
while (it != _locations.end())
|
||||||
{
|
{
|
||||||
std::cout << PINK << "------------------------------------------------\n";
|
DBOUT << PINK << "------------------------------------------------\n";
|
||||||
std::cout << YELLOW << "location " << BLUE << (*it)->location <<std::endl;
|
DBOUT << YELLOW << "location " << BLUE << (*it)->location <<std::endl;
|
||||||
std::cout << YELLOW << "root " << BLUE << (*it)->root <<std::endl;
|
DBOUT << YELLOW << "root " << BLUE << (*it)->root <<std::endl;
|
||||||
std::cout << YELLOW << "directoryFile " << BLUE << (*it)->directoryFile <<std::endl;
|
DBOUT << YELLOW << "directoryFile " << BLUE << (*it)->directoryFile <<std::endl;
|
||||||
std::cout << YELLOW << "uploadDir " << BLUE << (*it)->uploadDir <<std::endl;
|
DBOUT << YELLOW << "uploadDir " << BLUE << (*it)->uploadDir <<std::endl;
|
||||||
std::cout << YELLOW << "autoindex " << BLUE << (*it)->autoindex <<std::endl;
|
DBOUT << YELLOW << "autoindex " << BLUE << (*it)->autoindex <<std::endl;
|
||||||
std::cout << YELLOW << "uploadAccept " << BLUE << (*it)->uploadAccept <<std::endl;
|
DBOUT << YELLOW << "uploadAccept " << BLUE << (*it)->uploadAccept <<std::endl;
|
||||||
std::cout << YELLOW << "cgi_pass " << BLUE << (*it)->cgi_pass <<std::endl;
|
DBOUT << YELLOW << "cgi_pass " << BLUE << (*it)->cgi_pass <<std::endl;
|
||||||
std::cout << YELLOW << "client_body_size " << BLUE << (*it)->clientBodySize <<std::endl;
|
DBOUT << YELLOW << "client_body_size " << BLUE << (*it)->clientBodySize <<std::endl;
|
||||||
std::cout << YELLOW << "methods " << std::endl;
|
DBOUT << YELLOW << "methods " << std::endl;
|
||||||
it2 = (*it)->methods.begin();
|
it2 = (*it)->methods.begin();
|
||||||
while (it2 != (*it)->methods.end())
|
while (it2 != (*it)->methods.end())
|
||||||
{
|
{
|
||||||
std::cout << BLUE << *it2 << " ";
|
DBOUT << BLUE << *it2 << " ";
|
||||||
it2++;
|
it2++;
|
||||||
}
|
}
|
||||||
std::cout << std::endl;
|
DBOUT << std::endl;
|
||||||
it3 = (*it)->redirect.begin();
|
it3 = (*it)->redirect.begin();
|
||||||
std::cout << YELLOW << "redirection" << RED << " " << it3->first << " " << BLUE << it3->second << std::endl;
|
DBOUT << YELLOW << "redirection" << RED << " " << it3->first << " " << BLUE << it3->second << std::endl;
|
||||||
++it;
|
++it;
|
||||||
std::cout << PINK << "------------------------------------------------\n";
|
DBOUT << PINK << "------------------------------------------------\n";
|
||||||
}
|
}
|
||||||
std::cout << GREEN << "error pages" << std::endl;
|
DBOUT << GREEN << "error pages" << std::endl;
|
||||||
while (it1 != _errorPages.end())
|
while (it1 != _errorPages.end())
|
||||||
{
|
{
|
||||||
std::cout << YELLOW << it1->first << " " << BLUE << it1->second << std::endl;
|
DBOUT << YELLOW << it1->first << " " << BLUE << it1->second << std::endl;
|
||||||
++it1;
|
++it1;
|
||||||
}
|
}
|
||||||
std::cout << RED << "-------------------------Server-End------------------------------------\n" << ZERO_C;
|
DBOUT << RED << "-------------------------Server-End------------------------------------\n" << ZERO_C;
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerConfig::~ServerConfig()
|
ServerConfig::~ServerConfig()
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ int main(int argc, char **argv)
|
|||||||
catch(const ConfigException& e)
|
catch(const ConfigException& e)
|
||||||
{
|
{
|
||||||
server.end();
|
server.end();
|
||||||
std::cerr << RED << e.getMessage() << '\n' << ENDL;
|
std::cerr << RED << "\n" << e.getMessage() << '\n' << ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user