UNPKG

netshell

Version:

readme

56 lines 1.86 kB
"use strict"; 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