|
|
|
"use strict";
|
|
|
|
|
|
|
|
var _ = require('underscore');
|
|
|
|
var path = require('path');
|
|
|
|
|
|
|
|
var plugins = require('../plugins');
|
|
|
|
|
|
|
|
module.exports = function(app, middleware, controllers) {
|
|
|
|
// Static Assets
|
|
|
|
app.get('/plugins/:id/*', middleware.addExpiresHeaders, function(req, res, next) {
|
|
|
|
|
|
|
|
var relPath = req._parsedUrl.pathname.replace('/plugins/', '');
|
|
|
|
|
|
|
|
var matches = _.map(plugins.staticDirs, function(realPath, mappedPath) {
|
|
|
|
if (relPath.match(mappedPath)) {
|
|
|
|
var pathToFile = path.join(plugins.staticDirs[mappedPath], decodeURIComponent(relPath.slice(mappedPath.length)));
|
|
|
|
if (pathToFile.startsWith(plugins.staticDirs[mappedPath])) {
|
|
|
|
return pathToFile;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}).filter(Boolean);
|
|
|
|
|
|
|
|
if (!matches || !matches.length) {
|
|
|
|
return next();
|
|
|
|
}
|
|
|
|
|
|
|
|
res.sendFile(matches[0]);
|
|
|
|
});
|
|
|
|
};
|