Debugging 6
This commit is contained in:
@ -37,6 +37,8 @@ bool fileExists(string path) {
|
||||
return stat(path.c_str(), &statbuf) == 0;
|
||||
}
|
||||
|
||||
URI::URI() = default;
|
||||
|
||||
URI::URI(string webroot, string reqpath) {
|
||||
unsigned long pos = reqpath.find('?');
|
||||
if (pos != string::npos) {
|
||||
|
@ -15,9 +15,11 @@ private:
|
||||
string info;
|
||||
string filepath;
|
||||
string newpath;
|
||||
bool queryinit;
|
||||
bool queryinit{};
|
||||
|
||||
public:
|
||||
URI();
|
||||
|
||||
URI(string webroot, string reqpath);
|
||||
|
||||
string getWebRoot();
|
||||
|
@ -252,7 +252,7 @@ bool connection_handler(const char *preprefix, const char *col1, const char *col
|
||||
|
||||
try {
|
||||
bool noRedirect, redir, invalidMethod, etag;
|
||||
URI *path;
|
||||
URI path;
|
||||
pid_t childpid;
|
||||
FILE *file;
|
||||
int statuscode;
|
||||
@ -319,27 +319,27 @@ bool connection_handler(const char *preprefix, const char *col1, const char *col
|
||||
redir = false;
|
||||
}
|
||||
|
||||
*path = URI(getWebRoot(host), req.getPath());
|
||||
path = URI(getWebRoot(host), req.getPath());
|
||||
childpid = 0;
|
||||
printf("STAGE 5\n");
|
||||
flush(cout);
|
||||
|
||||
if (redir) {
|
||||
goto respond;
|
||||
} else if (!path->getNewPath().empty() && req.getMethod() != "POST") {
|
||||
req.redirect(303, path->getNewPath());
|
||||
} else if (!path.getNewPath().empty() && req.getMethod() != "POST") {
|
||||
req.redirect(303, path.getNewPath());
|
||||
goto respond;
|
||||
}
|
||||
|
||||
file = path->openFile();
|
||||
file = path.openFile();
|
||||
if (file == nullptr) {
|
||||
req.setField("Cache-Control", "public, max-age=60");
|
||||
req.respond(404);
|
||||
goto respond;
|
||||
}
|
||||
type = path->getFileType();
|
||||
type = path.getFileType();
|
||||
|
||||
if (type.find("inode/") == 0 || (path->getRelativeFilePath().find("/.") != string::npos && !noRedirect)) {
|
||||
if (type.find("inode/") == 0 || (path.getRelativeFilePath().find("/.") != string::npos && !noRedirect)) {
|
||||
req.respond(403);
|
||||
goto respond;
|
||||
}
|
||||
@ -347,13 +347,13 @@ bool connection_handler(const char *preprefix, const char *col1, const char *col
|
||||
flush(cout);
|
||||
|
||||
req.setField("Content-Type", type);
|
||||
req.setField("Last-Modified", getHttpDate(path->getFilePath()));
|
||||
req.setField("Last-Modified", getHttpDate(path.getFilePath()));
|
||||
|
||||
invalidMethod = false;
|
||||
etag = false;
|
||||
|
||||
if (path->isStatic()) {
|
||||
hash = getETag(path->getFilePath());
|
||||
if (path.isStatic()) {
|
||||
hash = getETag(path.getFilePath());
|
||||
req.setField("ETag", hash);
|
||||
req.setField("Accept-Ranges", "bytes");
|
||||
if (type.find("text/") == 0) {
|
||||
@ -388,7 +388,7 @@ bool connection_handler(const char *preprefix, const char *col1, const char *col
|
||||
}
|
||||
|
||||
statuscode = 0;
|
||||
if (!path->isStatic()) {
|
||||
if (!path.isStatic()) {
|
||||
string cmd = (string) "env -i" +
|
||||
" REDIRECT_STATUS=" + cli_encode("CGI") +
|
||||
" DOCUMENT_ROOT=" + cli_encode(getWebRoot(host)) +
|
||||
@ -400,16 +400,16 @@ bool connection_handler(const char *preprefix, const char *col1, const char *col
|
||||
(req.isExistingField("Content-Type") ? " CONTENT_TYPE=" + cli_encode(
|
||||
req.getField("Content-Type")) : "") +
|
||||
((socket->isSecured()) ? " HTTPS=on" : "") +
|
||||
" PATH_INFO=" + cli_encode(path->getFilePathInfo()) +
|
||||
" PATH_TRANSLATED=" + cli_encode(path->getAbsolutePath()) +
|
||||
" QUERY_STRING=" + cli_encode(path->getQuery()) +
|
||||
" PATH_INFO=" + cli_encode(path.getFilePathInfo()) +
|
||||
" PATH_TRANSLATED=" + cli_encode(path.getAbsolutePath()) +
|
||||
" QUERY_STRING=" + cli_encode(path.getQuery()) +
|
||||
" REMOTE_ADDR=" + cli_encode(socket->getPeerAddress()->toString()) +
|
||||
" REMOTE_HOST=" + cli_encode(info->host) +
|
||||
" REMOTE_PORT=" + cli_encode(to_string(socket->getPeerPort())) +
|
||||
" REQUEST_METHOD=" + cli_encode(req.getMethod()) +
|
||||
" REQUEST_URI=" + cli_encode(req.getPath()) +
|
||||
" SCRIPT_FILENAME=" + cli_encode(path->getFilePath()) +
|
||||
" SCRIPT_NAME=" + cli_encode(path->getRelativePath()) +
|
||||
" SCRIPT_FILENAME=" + cli_encode(path.getFilePath()) +
|
||||
" SCRIPT_NAME=" + cli_encode(path.getRelativePath()) +
|
||||
" SERVER_ADMIN=" + cli_encode("lorenz.stechauner@gmail.com") +
|
||||
" SERVER_NAME=" + cli_encode(host) +
|
||||
" SERVER_PORT=" + cli_encode(to_string(socket->getSocketPort())) +
|
||||
@ -492,7 +492,7 @@ bool connection_handler(const char *preprefix, const char *col1, const char *col
|
||||
req.respond(416);
|
||||
} else if (req.isExistingField("Range")) {
|
||||
string range = req.getField("Range");
|
||||
if (range.find("bytes=") != 0 || !path->isStatic()) {
|
||||
if (range.find("bytes=") != 0 || !path.isStatic()) {
|
||||
req.respond(416);
|
||||
} else {
|
||||
fseek(file, 0L, SEEK_END);
|
||||
|
Reference in New Issue
Block a user