mecano
Version:
Common functions for system deployment.
49 lines (46 loc) • 1.27 kB
JavaScript
// Generated by CoffeeScript 1.11.1
var iptables;
module.exports = function(options, callback) {
options.log({
message: "Entering iptables",
level: 'DEBUG',
module: 'mecano/lib/iptables'
});
options.log({
message: "List existing rules",
level: 'INFO',
module: 'mecano/lib/iptables'
});
return this.execute({
cmd: "service iptables status &>/dev/null && iptables -S",
code_skipped: 3
}, (function(_this) {
return function(err, executed, stdout) {
var cmd, newrules, oldrules;
if (err) {
return callback(err);
}
if (!executed) {
return callback(Error("Service iptables not started"));
}
oldrules = iptables.parse(stdout);
newrules = iptables.normalize(options.rules);
cmd = iptables.cmd(oldrules, newrules);
if (!cmd.length) {
return callback();
}
options.log({
message: cmd.length + " modified rules",
level: 'WARN',
module: 'mecano/lib/iptables'
});
return _this.execute({
cmd: (cmd.join('; ')) + "; service iptables save;",
trap: true
}, function(err, executed) {
return callback(err, true);
});
};
})(this));
};
iptables = require('../misc/iptables');