diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-03-01 15:51:41 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-03-01 15:51:41 +0100 |
commit | 724a120f06570841c2c2faaf710d329551e397b3 (patch) | |
tree | 7f05e0fcbc16cb364623271226b1989a49e9db98 | |
parent | 823d072ad49e30832d167e4c04bdf1b64b5a5336 (diff) |
Fix broken symlinks in listing
-rwxr-xr-x | webserver.js | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/webserver.js b/webserver.js index 84864cd..3e18b4d 100755 --- a/webserver.js +++ b/webserver.js @@ -7,6 +7,7 @@ var app=require("express")(), url=require("url"), fs=require("fs"), util=require("util"), + node_path=require("path"), bodyParser=require("body-parser"), basicAuth=require("basic-auth"); @@ -61,12 +62,20 @@ function requestFile(req,res,path){ var stats=fs.statSync(fname); if(stats.isFile())res.sendFile(fname); else if(stats.isDirectory()){ - var items=fs.readdirSync(fname) - .filter(function(f){return f[0]!=".";}) - .map(function(f){ - if(fs.statSync(fname+"/"+f).isDirectory())return f+"/"; - else return f; - }); + var items=fs + .readdirSync(fname) + .filter(function(f){return f[0]!=".";}) + .map(function(f){ + try { + if(fs.statSync(node_path.join(fname,f)).isDirectory())return f+"/"; + else return f; + } catch(e){ + return null; + } + }) + .filter(function(f){ + return f!==null; + }); res.send( String(fs.readFileSync(cmn.rootdir+"/web_files/dirlisting.html")) .replace("<!--DIRDIR-->",path) |