@akashic/akashic-sandbox
Version:
Standalone runner for Akashic contents
28 lines (27 loc) • 890 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var controller = function (req, res, next) {
var scriptPath = path.join(req.baseDir, req.params.scriptName);
// TODO: pathがbaseDir以下かの検査(scriptNameに..とか入れられるとたどれちゃう)
if (!fs.existsSync(scriptPath) || (!req.useRawScript && !req.query.id)) {
var err = new Error("Not Found");
err.status = 404;
next(err);
return;
}
var content = fs.readFileSync(scriptPath);
res.contentType("text/javascript");
if (req.useRawScript) {
res.send(content);
}
else {
res.render("script", {
id: req.query.id,
scriptContent: content,
scriptName: req.params.scriptName
});
}
};
module.exports = controller;