relative path fix

v1.18.x
barisusakli 9 years ago
parent 3b1c1d2cfd
commit bec688cea0

@ -1,41 +1,31 @@
"use strict"; "use strict";
var _ = require('underscore'), var _ = require('underscore');
nconf = require('nconf'), var path = require('path');
path = require('path'),
fs = require('fs'),
validator = require('validator'),
async = require('async'),
winston = require('winston'),
plugins = require('../plugins'),
helpers = require('../controllers/helpers');
var plugins = require('../plugins');
module.exports = function(app, middleware, controllers) { module.exports = function(app, middleware, controllers) {
// Static Assets // Static Assets
app.get('/plugins/:id/*', middleware.addExpiresHeaders, function(req, res, next) { app.get('/plugins/:id/*', middleware.addExpiresHeaders, function(req, res, next) {
var relPath = req._parsedUrl.pathname.replace('/plugins/', ''),
matches = _.map(plugins.staticDirs, function(realPath, mappedPath) { var relPath = req._parsedUrl.pathname.replace('/plugins/', '');
var matches = _.map(plugins.staticDirs, function(realPath, mappedPath) {
if (relPath.match(mappedPath)) { if (relPath.match(mappedPath)) {
return mappedPath; var pathToFile = path.join(plugins.staticDirs[mappedPath], decodeURIComponent(relPath.slice(mappedPath.length)));
} else { if (pathToFile.startsWith(plugins.staticDirs[mappedPath])) {
return null; return pathToFile;
}
} }
return null;
}).filter(Boolean); }).filter(Boolean);
if (!matches) { if (!matches || !matches.length) {
return next(); return next();
} }
matches = matches.map(function(mappedPath) {
return path.join(plugins.staticDirs[mappedPath], decodeURIComponent(relPath.slice(mappedPath.length)));
});
if (matches.length) {
res.sendFile(matches[0]); res.sendFile(matches[0]);
} else {
next();
}
}); });
}; };
Loading…
Cancel
Save