aboutsummaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/HttpServer.hx18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/server/HttpServer.hx b/src/server/HttpServer.hx
index 8f0b56e..4734815 100644
--- a/src/server/HttpServer.hx
+++ b/src/server/HttpServer.hx
@@ -113,6 +113,8 @@ class HttpServer {
if (hasCustomRes) {
final path = getPath(customDir, url);
if (Fs.existsSync(path)) filePath = path;
+ final ext = Path.extension(filePath).toLowerCase();
+ res.setHeader("content-type", getMimeType(ext));
}
if (isMediaExtension(ext)) {
@@ -133,7 +135,9 @@ class HttpServer {
}
function uploadFileLastChunk(req:IncomingMessage, res:ServerResponse) {
- final name = cache.getFreeFileName(req.headers["content-name"]);
+ var fileName = try decodeURIComponent(req.headers["content-name"]) catch (e) "";
+ if (fileName.trim().length == 0) fileName = null;
+ final name = cache.getFreeFileName(fileName);
final filePath = cache.getFilePath(name);
final body:Array<Any> = [];
req.on("data", chunk -> body.push(chunk));
@@ -152,8 +156,9 @@ class HttpServer {
}
function uploadFile(req:IncomingMessage, res:ServerResponse) {
- final name = cache.getFreeFileName(req.headers["content-name"]);
- final clientName = req.headers["client-name"];
+ var fileName = try decodeURIComponent(req.headers["content-name"]) catch (e) "";
+ if (fileName.trim().length == 0) fileName = null;
+ final name = cache.getFreeFileName(fileName);
final filePath = cache.getFilePath(name);
final size = Std.parseInt(req.headers["content-length"]) ?? return;
@@ -210,8 +215,7 @@ class HttpServer {
}
function getPath(dir:String, url:URL):String {
- var filePath = dir + url.pathname;
- filePath = filePath.urlDecode();
+ final filePath = dir.urlDecode() + decodeURIComponent(url.pathname);
if (!FileSystem.isDirectory(filePath)) return filePath;
return Path.addTrailingSlash(filePath) + "index.html";
}
@@ -378,4 +382,8 @@ class HttpServer {
inline function decodeURI(data:String):String {
return js.Syntax.code("decodeURI({0})", data);
}
+
+ inline function decodeURIComponent(data:String):String {
+ return js.Syntax.code("decodeURIComponent({0})", data);
+ }
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage