Merge pull request #6600 from Rob--W/test-server-improved
Improve reliability of the test server
This commit is contained in:
commit
248e211a20
@ -80,7 +80,7 @@ WebServer.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
_handler: function (req, res) {
|
_handler: function (req, res) {
|
||||||
var url = req.url;
|
var url = req.url.replace(/\/\//g, '/');
|
||||||
var urlParts = /([^?]*)((?:\?(.*))?)/.exec(url);
|
var urlParts = /([^?]*)((?:\?(.*))?)/.exec(url);
|
||||||
var pathPart = decodeURI(urlParts[1]), queryPart = urlParts[3];
|
var pathPart = decodeURI(urlParts[1]), queryPart = urlParts[3];
|
||||||
var verbose = this.verbose;
|
var verbose = this.verbose;
|
||||||
@ -172,6 +172,17 @@ WebServer.prototype = {
|
|||||||
serveRequestedFile(filePath);
|
serveRequestedFile(filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function escapeHTML(untrusted) {
|
||||||
|
// Escape untrusted input so that it can safely be used in a HTML response
|
||||||
|
// in HTML and in HTML attributes.
|
||||||
|
return untrusted
|
||||||
|
.replace(/&/g, '&')
|
||||||
|
.replace(/</g, '<')
|
||||||
|
.replace(/>/g, '>')
|
||||||
|
.replace(/"/g, '"')
|
||||||
|
.replace(/'/g, ''');
|
||||||
|
}
|
||||||
|
|
||||||
function serveDirectoryIndex(dir) {
|
function serveDirectoryIndex(dir) {
|
||||||
res.setHeader('Content-Type', 'text/html');
|
res.setHeader('Content-Type', 'text/html');
|
||||||
res.writeHead(200);
|
res.writeHead(200);
|
||||||
@ -194,21 +205,34 @@ WebServer.prototype = {
|
|||||||
res.write('<a href=\"..\">..</a><br>\n');
|
res.write('<a href=\"..\">..</a><br>\n');
|
||||||
}
|
}
|
||||||
files.forEach(function (file) {
|
files.forEach(function (file) {
|
||||||
var stat = fs.statSync(path.join(dir, file));
|
var stat;
|
||||||
var item = pathPart + file;
|
var item = pathPart + file;
|
||||||
if (stat.isDirectory()) {
|
var href = '';
|
||||||
res.write('<a href=\"' + encodeURI(item) + '\">' +
|
var label = '';
|
||||||
file + '</a><br>\n');
|
var extraAttributes = '';
|
||||||
return;
|
try {
|
||||||
|
stat = fs.statSync(path.join(dir, file));
|
||||||
|
} catch (e) {
|
||||||
|
href = encodeURI(item);
|
||||||
|
label = file + ' (' + e + ')';
|
||||||
|
extraAttributes = ' style="color:red"';
|
||||||
}
|
}
|
||||||
var ext = path.extname(file).toLowerCase();
|
if (stat) {
|
||||||
if (ext === '.pdf') {
|
if (stat.isDirectory()) {
|
||||||
res.write('<a href=\"/web/viewer.html?file=' +
|
href = encodeURI(item);
|
||||||
encodeURI(item) + '\" target=pdf>' +
|
label = file;
|
||||||
file + '</a><br>\n');
|
} else if (path.extname(file).toLowerCase() === '.pdf') {
|
||||||
} else if (all) {
|
href = '/web/viewer.html?file=' + encodeURIComponent(item);
|
||||||
res.write('<a href=\"' + encodeURI(item) + '\">' +
|
label = file;
|
||||||
file + '</a><br>\n');
|
extraAttributes = ' target="pdf"';
|
||||||
|
} else if (all) {
|
||||||
|
href = encodeURI(item);
|
||||||
|
label = file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (label) {
|
||||||
|
res.write('<a href=\"' + escapeHTML(href) + '\"' +
|
||||||
|
extraAttributes + '>' + escapeHTML(label) + '</a><br>\n');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (files.length === 0) {
|
if (files.length === 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user