From 1df90bf074d81b95b3d2b389bae8dc028f325e48 Mon Sep 17 00:00:00 2001 From: Talyx Date: Tue, 1 Feb 2022 21:46:52 +0300 Subject: [PATCH] add: aplication/pdf --- config/simple.toml.tmp1 | 70 ++++++++++++++++++++++++++++++++++++++++ src/Client/Response.cpp | 5 ++- www/rfc2818.pdf | Bin 0 -> 25390 bytes 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 config/simple.toml.tmp1 create mode 100644 www/rfc2818.pdf diff --git a/config/simple.toml.tmp1 b/config/simple.toml.tmp1 new file mode 100644 index 0000000..97957bd --- /dev/null +++ b/config/simple.toml.tmp1 @@ -0,0 +1,70 @@ +[[server]] + name = "Edu" + host = "127.0.0.1" + port = 8080 + body_size_limit = 100000 + [server.error_page] + 400 = "/var/www/poheck/Edu/errorPages/error_400.html" + 403 = "/var/www/poheck/Edu/errorPages/error_403.html" + 404 = "/var/www/poheck/Edu/errorPages/error_404.html" + [[server.location]] + location = "/" + root = "/var/www/poheck/Edu/" + methods = ["GET"] + autoindex = false + directory_file = "index.html" + [[server.location]] + location = "/errorlist" + root = "/var/www/poheck/Edu/errorPages/" + methods = ["GET"] + autoindex = false + directory_file = "this.html" + [[server.location]] + location = "/images" + root = "/var/www/poheck/Edu/images/" + methods = ["GET", "POST", "DELETE"] + autoindex = true + directory_file = "oops.html" + [[server.location]] + location = "/cats" + root = "/var/www/poheck/Edu/images/cats/" + methods = ["GET", "POST", "DELETE"] + autoindex = true + [[server.location]] + location = "/dogs" + root = "/var/www/poheck/Edu/images/dogs/" + methods = ["GET", "POST", "DELETE"] + autoindex = true + [[server.location]] + location = "/docs" + root = "/var/www/poheck/Edu/docs/" + redirect = ["301","http::/127.0.0.1::8080/documents"] + [[server.location]] + location = "/documents" + root = "/var/www/poheck/Edu/documents/" + methods = ["GET", "DELETE"] + autoindex = true + upload_accept = true + upload_dir = "/var/www/poheck/Edu/upload/" + [[server.location]] + location = "/upload" + root = "/var/www/poheck/Edu/upload/" + methods = ["POST", "DELETE"] + autoindex = true + upload_accept = true + upload_dir = "/var/www/poheck/Edu/upload/" +[[server]] + name = "2222" + host = "localhost" + port = 8081 + body_size_limit = 65356 + [server.error_page] + 404 = "/var/www/poheck/errorPages/error_404.html" + [[server.location]] + location = "/root2/" + root = "/var/www/html/jopa.html" + methods = ["GET", "POST"] + autoindex = true + directory_file = "its_a_directory.html" + upload_accept = false + upload_dir = "/var/www/html/upload" diff --git a/src/Client/Response.cpp b/src/Client/Response.cpp index 690f90c..245192d 100644 --- a/src/Client/Response.cpp +++ b/src/Client/Response.cpp @@ -31,6 +31,7 @@ void Response::setData(Request request, ServerConfig *config) void Response::OpenResponseFile(const char *path) { std::stringstream ss; + // char buf[BUFFSIZE + 1] = {0}; std::ifstream file(path, std::ifstream::in); if (file.is_open()) @@ -88,7 +89,9 @@ std::string Response::getContentType(void) else if (type == "png") return ("image/png"); else if (type == "bmp") - return ( "image/bmp"); + return ("image/bmp"); + else if (type == "pdf") + return ("application/pdf"); else return ("text/plain"); diff --git a/www/rfc2818.pdf b/www/rfc2818.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cbed8b4ad123204cff11d583c6d4cafc6b8f67e5 GIT binary patch literal 25390 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 m{)5E6I_h&WA|8A^}f|1pj*s5w)G_%>NJ6PK{gu literal 0 HcmV?d00001