aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2022-03-09 19:12:44 +0300
committerRblSb <msrblsb@gmail.com>2022-03-09 19:25:36 +0300
commitbb525795172fee119d8029addea4da173c3f9455 (patch)
tree701dcda96a9383d02a7e1b617e61fb0e37007e95 /build
parente48c2be14fb1474beb1993cd09e4f42aec51b1a8 (diff)
Improve url handling
Diffstat (limited to 'build')
-rw-r--r--build/server.js35
1 files changed, 21 insertions, 14 deletions
diff --git a/build/server.js b/build/server.js
index 15e5106..f1da10d 100644
--- a/build/server.js
+++ b/build/server.js
@@ -1,4 +1,3 @@
-// Generated by Haxe 4.2.2
(function ($global) { "use strict";
var $estr = function() { return js_Boot.__string_rec(this,''); },$hxEnums = $hxEnums || {},$_;
function $extend(from, fields) {
@@ -3690,18 +3689,21 @@ server_HttpServer.init = function(dir,customDir,allowLocalRequests) {
server_HttpServer.allowLocalRequests = allowLocalRequests;
};
server_HttpServer.serveFiles = function(req,res) {
- var url = server_HttpServer.safeDecodeURI(req.url);
- if(url == "/") {
- url = "/index.html";
+ var url;
+ try {
+ url = new js_node_url_URL(server_HttpServer.safeDecodeURI(req.url),"http://localhost");
+ } catch( _g ) {
+ url = new js_node_url_URL("/","http://localhost");
}
- var filePath = server_HttpServer.dir + url;
+ var filePath = server_HttpServer.getPath(server_HttpServer.dir,url);
var ext = haxe_io_Path.extension(filePath).toLowerCase();
res.setHeader("Accept-Ranges","bytes");
res.setHeader("Content-Type",server_HttpServer.getMimeType(ext));
- if(server_HttpServer.allowLocalRequests && req.socket.remoteAddress == req.socket.localAddress || server_HttpServer.allowedLocalFiles.h[url]) {
+ if(server_HttpServer.allowLocalRequests && req.socket.remoteAddress == req.socket.localAddress || server_HttpServer.allowedLocalFiles.h[url.pathname]) {
if(server_HttpServer.isMediaExtension(ext)) {
- server_HttpServer.allowedLocalFiles.h[url] = true;
- if(server_HttpServer.serveMedia(req,res,url)) {
+ server_HttpServer.allowedLocalFiles.h[url.pathname] = true;
+ var s = url.pathname;
+ if(server_HttpServer.serveMedia(req,res,decodeURIComponent(s.split("+").join(" ")))) {
return;
}
}
@@ -3712,19 +3714,16 @@ server_HttpServer.serveFiles = function(req,res) {
res.end("Error getting the file: No access to " + rel + ".");
return;
}
- if(StringTools.startsWith(url,"/proxy")) {
+ if(url.pathname == "/proxy") {
if(!server_HttpServer.proxyUrl(req,res)) {
res.end("Proxy error: " + req.url);
}
return;
}
if(server_HttpServer.hasCustomRes) {
- var path = server_HttpServer.customDir + url;
+ var path = server_HttpServer.getPath(server_HttpServer.customDir,url);
if(js_node_Fs.existsSync(path)) {
filePath = path;
- if(sys_FileSystem.isDirectory(filePath)) {
- filePath = haxe_io_Path.addTrailingSlash(filePath) + "index.html";
- }
}
}
if(server_HttpServer.isMediaExtension(ext)) {
@@ -3743,6 +3742,14 @@ server_HttpServer.serveFiles = function(req,res) {
res.end(data);
});
};
+server_HttpServer.getPath = function(dir,url) {
+ var filePath = dir + url.pathname;
+ filePath = decodeURIComponent(filePath.split("+").join(" "));
+ if(!sys_FileSystem.isDirectory(filePath)) {
+ return filePath;
+ }
+ return haxe_io_Path.addTrailingSlash(filePath) + "index.html";
+};
server_HttpServer.readFileError = function(err,res,filePath) {
if(err.code == "ENOENT") {
res.statusCode = 404;
@@ -3753,7 +3760,6 @@ server_HttpServer.readFileError = function(err,res,filePath) {
}
};
server_HttpServer.serveMedia = function(req,res,filePath) {
- filePath = decodeURIComponent(filePath.split("+").join(" "));
if(!js_node_Fs.existsSync(filePath)) {
return false;
}
@@ -3863,6 +3869,7 @@ server_HttpServer.safeDecodeURI = function(data) {
try {
data = decodeURI(data);
} catch( _g ) {
+ data = "";
}
data = data.replace(server_HttpServer.ctrlCharacters.r,"");
return data;
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage