diff options
| author | RblSb <msrblsb@gmail.com> | 2022-03-09 19:12:44 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2022-03-09 19:25:36 +0300 |
| commit | bb525795172fee119d8029addea4da173c3f9455 (patch) | |
| tree | 701dcda96a9383d02a7e1b617e61fb0e37007e95 /build | |
| parent | e48c2be14fb1474beb1993cd09e4f42aec51b1a8 (diff) | |
Improve url handling
Diffstat (limited to 'build')
| -rw-r--r-- | build/server.js | 35 |
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; |
