whistle
Version:
HTTP, HTTP2, HTTPS, Websocket debugging proxy
35 lines (33 loc) • 974 B
JavaScript
var rules = require('../../../../lib/rules/util').rules;
var util = require('../util');
module.exports = function(req, res) {
var exportRules = req.query.rules;
try {
exportRules = exportRules && JSON.parse(exportRules);
} catch(e) {
exportRules = null;
}
var result = {};
var list = ['Default'];
if (!exportRules || exportRules.Default) {
var defaultRules = rules.getDefault() || '';
result.Default = defaultRules;
}
rules.list().forEach(function(file) {
if (!exportRules || exportRules[file.name]) {
result[file.name] = file.data;
list.push(file.name);
}
});
result[''] = list;
var filename = req.query.filename;
if (filename && typeof filename === 'string') {
if (!/\.(txt|json)/i.test(filename)) {
filename += '.txt';
}
} else {
filename = 'rules_' + util.formatDate() + '.txt';
}
res.attachment(filename);
util.sendGzipText(req, res, null, JSON.stringify(result, null, ' '));
};