netshell
Version:
readme
56 lines • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var child_process = require("child_process");
var iconv = require("iconv-lite");
var NETSH_FIREWALL = 'NETSH ADVFIREWALL FIREWALL';
var CREATE = 'ADD RULE';
var READ = 'SHOW RULE';
var UPDATE = 'SET RULE';
var DELETE = 'DELETE RULE';
function objToOpt(obj) {
return JSON.stringify(obj).replace('{', '').replace('}', '').replace(/,/gi, ' ').replace(/:/gi, '=');
}
function parseRule(rule, stdout) {
var _rule = {};
if (rule != READ)
return undefined;
var rows = stdout.split('\n');
rows.forEach(function (item, index) {
if (index == 0 || index == 2 || index > rows.length - 4)
return;
var row = item.split(':');
_rule[row[0]] = row[1].replace('\r', '').trim();
});
return _rule;
}
function command(rule, opts, update) {
return new Promise(function (resolve, reject) {
var command = NETSH_FIREWALL + " " + rule + " " + objToOpt(opts) + " " + (update ? "new " + objToOpt(update) : '');
console.log(command);
child_process.exec(command, { encoding: 'buffer' }, function (err, stdout, stderr) {
if (err)
reject(err);
else {
var out = iconv.decode(stdout, 'euc-kr');
resolve(parseRule(rule, out));
}
});
});
}
function createRule(opts) {
return command(CREATE, opts);
}
exports.createRule = createRule;
function readRule(opts) {
return command(READ, opts);
}
exports.readRule = readRule;
function updateRule(opts, update) {
return command(UPDATE, opts, update);
}
exports.updateRule = updateRule;
function deleteRule(opts) {
return command(DELETE, opts);
}
exports.deleteRule = deleteRule;
//# sourceMappingURL=index.js.map