From f50c1a844430764d24f9725a8d4c52a4aa148fc7 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Fri, 19 Mar 2021 14:08:44 -0700 Subject: [PATCH] Updated GC reference --- microscript/ILibDuktape_Polyfills.c | 2 +- modules/win-firewall.js | 147 ++++++++++++++++------------ 2 files changed, 85 insertions(+), 64 deletions(-) diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 863922d..d97966f 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2325,7 +2325,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('win-dispatcher', Buffer.from('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', 'base64'));"); // win-firewall is a helper to Modify Windows Firewall Filters. Refer to modules/win-firewall.js - duk_peval_string_noresult(ctx, "addCompressedModule('win-firewall', Buffer.from('eJztPO9T47iS36nif9Dwxc7bTODN7V3Vksdc5THsPWpngQN2Z6cItWUcJTFxbJ9sE3Kz/O/XLcm2JMuOYYed2T1cBbFlqdVq9U+p5d2/bW8dxsmaBbN5Rt7svdkjx1FGQ3IYsyRmXhbE0fbW9tb7wKdRSickjyaUkWxOySjxfPiRb/rkZ8pSqE3eDPaIixV25Kud3nB7ax3nZOmtSRRnJE8pQAhSMg1CSui9T5OMBBHx42USBl7kU7IKsjnvRcIYbG99lBDim8yDyh5UT+BpqlYjXobYErjmWZbs7+6uVquBxzEdxGy2G4p66e7748Ojk4uj14AttvgpCmmaEkb/Jw8YDPNmTbwEkPG9G0Ax9FYkZsSbMQrvshiRXbEgC6JZn6TxNFt5jG5vTYI0Y8FNnml0KlCD8aoVgFJeRHZGF+T4Yof8c3RxfNHf3vpwfPmv058uyYfR+fno5PL46IKcnpPD05N3x5fHpyfw9D0ZnXwkPxyfvOsTClSCXuh9whB7QDFACtIJkOuCUq37aSzQSRPqB9PAh0FFs9ybUTKL7yiLYCwkoWwZpDiLKSA32d4Kg2WQcSZI6yOCTv62i8S78xhJWAxNKTkoaOg6ssjB6ccqqyBidKbWgJLXUIRUWfNq21u7u16WwXS9ozf5bEaZ+4ms6A2wYrZPvvvuu3/vk5UXwH3GckoeegPAJ3J9wC8O6SCMYT6UBwFymkc+DoFENEupn8PErY/uodPU7W1vfRLsggj68yCcDJXneLkEMgDGzn/R7PWP8SQHZnj9HpqO7rwg5Lzx+sRbUhW0IyEEU+KWI41TpzfwmD93e+QA4N3/x7dOT9STCODFEVAJxAt+BUL6ML8Agd5T/3sQGlcWDWh0d4VknATMuSbfEGc8vlinGV3+25vx+AOUx6v0LF5RdjGnYTge3/19sDceJ1iSYglCdPrkytk9JDsOACjGDKB2nOueHMuD+KFhSv90SHN0Bmk2ifMMfhhOpzPUi+PIdSZe5gHUkltcv0c+cT3FW31zQPxBFl+AAEcztzcE5hsaHVDGbB1g8e/qAKTDTvUBygKwcua+2dvbM8ftZcButM5ljGY5g+6nHkyn0kjcFG9rZHuFw8LqD5pQoUZLfgLJ9uNZFPwvnfxA16kb39z2iReGMGe8oBI00EMuCteCrlGNQsU6hsHUfaU0HgSRH+YTmrrQqNer6ilN8JrQkGYUQV5Bxeth9fahHKSOfOKxlB4uJ9DuNM+SPHNxknStkMU5WA9VLwCJYI6vrlVVMc+jRQql2H4AJFm6vUEKujhznTEbR/jn9JQGYRDRtE/u+4jusCQN4bQJANDeEH7+IQEPQhrNsvmQfPNNUCcXQIAGnx6GBa7wxCdXoQDvD8oFvKvgWsWuxKzE4l5gcA8Y8JYKAvfNE4C4Y+e8ydX9NUzchN6fTl1nX+uiqIs8oNRO85tUcP9en0x6koyWdndemFN7S1QCf29oihoZuwRO3tlB2Ss4BUBxkCoB0cAMC8ZReKgAJGsiGOCHQZKnc+T63lBhNlWe4FcKT8l9UwoSegamDbRjBrrNZWBfUp37AsWavBox5q0HQcp/ZW2LfGM5Mii/uda1Ap9dhb94nXb2KtWPZcanHHMAJ4z74L9zytYgs658/tcPRx8H72PfC38Eow7T1SfOxceLy6Mfx+PDnDEaZYdxlLE4vKAZmAHK7sC5SOFuDi7VZOSjwRiPzzwGVhZpNB5/D0ZmBdrhLAb3bF09n+NIQL/yESGDo2Hu1ZUAXkI3TmkzK4MXAe5dTu3ts3gBHhCKGR9/IUu/1QVpIUi9AFKLRgqtF83d43S7vMEvyIu85dVCEagDp9cjb8leT29ngMErBV/anxO3AqLJmeik16s3tMAStAM3zzljcRb7cejs22vhVc5EUVkbSoWFHCcK7rAZ2g2j3qLhvcDpPcpSJ4Q4R2LtZ8bovDNG53QZZ/QPQGmUJF3nbAZC9yzYPOhFdSVbM9Qzmmly7sYJj0p0ZZkAthFdFcGIW7laHuiF0tv6lXH96A3LR7SfTPG4Sl+W3oGGQif2CG+OIBpCcQfmCd2kz22EIjgDH8abUV7VdaYKvjK4KfAEW/CzF3Ifol+pUN2h0GOPE338aowhKTFIxIRxuyaLqjk0Kg1LX8ksf6gDPqsAN2M1EtEythDWjLwueh+PuZNuIsX9/h3yG1E8+GHlhz4hfEoGX3ssYg2gvn60k4GcvIqThsUbESeAIw1MD68T40Ut7jJeNARGNSIpMqEolMbgSYsleC2BYfETQgxPI8oO47wuq2/32l3cwFBp0IUbHBS4VDa6cvx7bw86WGqELbRBnyykZU4LC21Ro1gfNVfZs2bYA5tmLglmbRXA9H9bqSr1wn7q0dKtrY+aW3trB4mRYHCwNwz+cVs4RZX/qZHKLMDLbnUsU02XgTnDfXILJs6G+2bL1KszuB73Gy+eHPnr3SAYCpG+BqZVTIADYJx9sVJQmBlNMIgrUShGIMOmKkBSyYlmsqEBoCzCHEV/a110kTrDmzXkw8AkrQV3EgFtwnS6QHQGgZOVj4thSVWlefEmNwswPVMLqbjpVZTZLILBpFxHUXycSZDiimIHP0csQHwWT8fwNd4JHP5Qf6PZ46ivej23/7HZWst1i75cMTDDPbmqVc5aAzsXKxiyorleVRCEV6sMCkEpgXgSaV5AcPThifUMMTZnaOqz0sofENd5jc0QYajNicBBWiLm3+OT4drI1+7eWOf5a0e8VCjSQAidAP+H5puaC1Z79btWpzVouimsvfpMHXU0hhYLJ1ex280MdtRq7axrQhUXbYCr2y7Vr9CNRLViqBgJGv3xNuIZtb5hfo6irtbnxUSQFxPxYiJeTMTvNRF/FQuh2Ig7yoLp+mcU1dI4HEcQ5/RRlnFbhN+ICn1Q0lMvDzP+aGw+8QAyWyZ9EhfruOUmpa7HOHwrfWWXMGHvkYcPPTBFXB3AC72whejLpNKEvCubOtStjVatrjdLAiAqUR6Gm9dnTMA4LNw7BOwsSwm1gNTgBrx0jmjolrsxy+TVAccSBYFTA/4rQlBsQfWdXk2l48Wn7VZsRt3iZhS0rnaibrtv/8QLy+5yrSexrlPSuH19p6W3YvwlJNyaUEZdYyoY19WtXkVsxjdx2iMQ4cNv4AG34YXgLfKfRB0B2W+qDzq8T6TRLav3bCtVGlKLYsO6vV7b7hBeFr5pKeZb0vHi8ROazVm8Au/iOAJ3IphIPwX55koOnedUAS2u9zkxxKQ2UcGCnqVIcR4Nmr+S8i928otVrAZwpr+zu0uOp2SFWXQZmVMGqhVT0nieHGrISUzTyMkIxYSzwWBADufUX2AOYUopIrXC5DGRVQhYEZ7ZKDWyIEzhV7mqni6RrmncJgZVW1cugh5cMLr0ksJuYAZPHE4ibi4gjhA3GTrolZUAtDCJQta7bkZLTdtQWyhzqqTvFG/1xUT3VdF7A5NhU4lpldPxeFNscatBrYLS7LCGb6DAEb7iwExr9RRTIPKRZO6BQFHR+1atLxKKuDrWExAa1tqbZN3VR2a1mRuA4GWlj9xhRtXOlbVJquJqUER10j0eEX14qIa54rGj93RN1GGr248jcOAyCFzTeSWLlcjVhNTBGJmgnKPt4L+VP2zWFRH2xNFuP5GTGDTt92jV4fEjTeHpEuyJo7rWJiiIkjGBG3NuinsOaxStoTn8h6d38dILIngUN1Bylt9AFA4l4gZLWHDnZRSLxF1rr0eTGQVb5wGNUi90ZMllUSCygqox/TOM/UU5phEmFbaCfwdBHJ8Hx3j4RI5xHMfRTZxHSLTTPINn+C8KBNAH60ReyNTgbtM5Kvv3qs455tAfT4uEEj4ueL7h42sdEU19FiQFzIny2JEMGKkKAvChQq98JouhwzNEiBuoCmrKWxc8OhGPUWdWpQqrci6FPqMYHpFJ4X4NXKgHSBZmxSUdBCZXoVp6LpObRG1xv1EQZG1DDjxdDialHJRcn0iuV2QjKWTjJM5G5TkECa2N0Hh4g009n16uE45QUBRkokBH6wMedoCn0IvkEx6DgIKVvIVSkZkkMvHgDfPSjfJZl0aHQrHGyGuuOAo25pP5jk4pu4x/SilDSuFTDvfVGyBF8cJLkg0zznO8RpMJE8NwQnwOkpZ5LLPCyup47qClgSRN1QfjBa2dVIleVYOyG6slOBUenWWZ1xLnq/rjygH2OYyjaTDLmRCkkVQfUi9el0XlfmADzBy92kwunxawz+VxGYePq7o/iY8i30uqxagGqO8suqipqqKQrhQtXCngjZ0pOmhTVVRNgX/psRnNeIfCmqGk3+ORmDVwYqoVYL4qxJtY9iGYBgJdkHHMIjVKJSJGIeWJr2JGovUmDO1SdlWau2qiFaFSHjELcBPBKv17JZyBfuEiIJK8ZCMEn62TLhwjKb4RJ1O/lTPzoYD0odJcjqq6rruSVtMbXeqeRuH6R9BHYqJrtOoC4kzVM20V+TRurBin9CLOmU+fjlYXMTmFchZMKGe6Iv36sR2drqLNQzrz/IU324jQWehlEPIsN9bjAnORxWwzyNKgl6xWurKlv9pXvFlHM9ldme7M8Emaq+nOSEM93TB1qizz87tV1vhVX5MurFTNmqGpu9N2LusWjS91gmTH1WKN2DkSCWqOsu2IJ1540LNfljyUCzd/2g3Qc06kv/IG6Mv+p0mtr30bsXGav3bES8X0sv/5V9n/lINszo/xJpN2E2Mo3BO6atK2cskaD03aAzGlHuiIMhRVszygvT0vCV5wPaTuVNWVWCO1NC1FNDUllV3RQaHonjInLb2YXdjg60ZOOVz/cjT+yyMtbv78h+ONg/DVihCoNrNzJb/dsfCY3JdsaKXQTlc5+O2H+a88qfycpnmYpS7mkFuy8bQTXiK5YsEPgBeHPZTXfGEX/VJ+RKPhJHl1hEJUr+/tqDuDxTFxZcTFXpJovuFYuHsLXd3WtpFum9UUP8a6qM4Q3upHwjueYMWtmQqAdshlUezvX2udVHUWLefB7Ye7G/ZflLb6eW9NDbTaJsEom48yPtupvj/TGUnFRnO6gWW/K6qT8iadg8TimVWCmwkHWASTdxOnpRVvO7uGg0R5VUXzs5/G85eTjlo50fxUy0m65zloZHSiWQLrW2tPN/Y9fx4GxmrSiYrNjf3MHjakv6hn1EIvzY7r5+qGeoIAcaFVu+PElbH8QIJFcduP0tFfaik4yrc6wM0rPtyg1rApspY8HdVrVA8UobKpx8otnQhSuA0w5PcuZFrSb7819SXqgaEsDoTzgifs929KF8OrLS/pEdk9tlSkRgKRGoUeczqtQxd4mV1YzyIWFH5EVgFeT8p6MBEqNKCwZ0/ApJ7fUPcAKinmLgN5jcL9lny7WWDaj6vSX4rzqg0YNZ3ZfOz5kcdyx2NDW7w2ZCS5GhA+ZYKabzs4UDoCNUgtFKxj1qGLW9c5ickSv7FCU6fj/DQdkTS8py9ySBLHBW5bUtqMRh/OaGBdcuIv+HfrKoRUA2JYUDVwLstqJ+Hb7VFDXL/BtwLcK9eK+y3at3WE98JXA5DKIkfjIIodY8K/mD+lIfCcMWito+eKpvWOtKDXIl52vfOgdmz5PJwuydUH4pqX3wwR/RJH1F4ktLuEYubNi4j+vxbRTqvkXda+G3McceF7qG6KvYKSAfKpdRMCXypZga27ghyKyH9W25TL0iUT53kw2b371unVVn7kOokB4QmOmYLOhm71rwLav5oJ0FBkojJNkmlZoGXmItym4kt5ZkZnmSvp9JuDgOJSshXL7Dg1iU3LgtOT1dTEyC49mWmIDltm+LnnHIpnLJEleVo8yHRBp/yo7vVTVoeAzU39WE4Y10MCoMINkg1Eua6xW7dygvaNHAy0W6r19U1rPCGEOy7lPk5wLdDVj3bpuzNYF7/f4xxUrWrL/aW1+hK6/g/aCnj2zQxNp9d1a5c8l2fwfppWOb+8Z9SvvkhkTQpptCGlmVMw1Pypz+xOST2w2aOqrwVqK3fNS3aWwLlIUjFbmrvDliWZjukvlSLJqU2PNOsTudl7YM180RRLCePFkfyKHcmiY9V1NL1G41A58pjlu/mVKlvyr+LDLKFfAOqnUQZNvbPfUG64E7YFn/2GcqOpJRDdbyg3Whr+8X5DudGqrvn3G8qNhjUC7zeUK1Mvpkg4p59rKuwGouOENK/PdZyWxtWDjpNjDW06TlGT6f5ME/V/b+y3qQ==', 'base64'));"); + duk_peval_string_noresult(ctx, "addCompressedModule('win-firewall', Buffer.from('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', 'base64'));"); // win-systray is a helper to add a system tray icon with context menu. Refer to modules/win-systray.js duk_peval_string_noresult(ctx, "addCompressedModule('win-systray', Buffer.from('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', 'base64'));"); diff --git a/modules/win-firewall.js b/modules/win-firewall.js index a1c015c..51fb24e 100644 --- a/modules/win-firewall.js +++ b/modules/win-firewall.js @@ -19,6 +19,12 @@ var winreg = require('win-registry'); //attachDebugger({ webport: 9995, wait: true }).then(console.log, console.log); +function stdparser(c) +{ + if (this.str == null) { this.str = ''; } + this.str += c.toString(); +} + function netsecurityExists() { var child; @@ -31,14 +37,15 @@ function netsecurityExists() { child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); } - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); - child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); }); + child.stdout.str = ''; child.stdout.on('data', stdparser); + child.stderr.str = ''; child.stderr.on('data', stdparser); try { child.waitExit(2000); } catch(e) { + child = null; return (false); } @@ -121,30 +128,30 @@ function fetchPortFilters(rules) function getFirewallRules(options) { - var p = new promise(function (a, r) { this._res = a; this._rej = r; }); - require('events').EventEmitter.call(p, true) + var child; + var p = WeakReference(new promise(promise.defaultInit)); + require('events').EventEmitter.call(p.object, true) .createEvent('firewallRule'); - var retVal = [], filter = []; var command = 'Get-NetFirewallRule'; if (options.program) { options.Program = options.program; delete options.program; } if (options.Program) { command = 'Get-NetFirewallApplicationFilter -Program \\"' + options.Program + '\\" | ' + command; } if (require('os').arch() == 'x64') { - p.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); + p.object.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); } else { - p.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); + p.object.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); } - p.options = options; - p.child.parent = p; - p.child.stdout.str = ''; p.child.stdout.on('data', function (c) + p.object.options = options; + p.object.child.parent = p; + p.object.child.stdout.str = ''; p.object.child.stdout.on('data', function (c) { var command; this.str += c.toString(); - if(this.parent.parent.listenerCount('firewallRule')>0) + if(this.parent.parent.object.listenerCount('firewallRule')>0) { var i; if((i=this.str.indexOf('\r\n\r\n'))>=0) @@ -158,30 +165,36 @@ function getFirewallRules(options) for(i=0;i 0) + if (this.stderr.str.trim() != "") { - this.parent._res(); + var v = this.stderr.str.trim(); + this.parent.object.child = null; + this.parent.object.reject(v); + return; + } + + if (this.parent.object.listenerCount('firewallRule') > 0) + { + this.parent.object.child = null; + this.parent.object.resolve(); return; } var objArr = parseCmdletOutput(this.stdout.str); fetchPortFilters(objArr); - this.parent._res(objArr); + this.parent.object.child = null; + this.parent.object.resolve(objArr); }); - - return (p); + return (p.object); } @@ -216,16 +229,18 @@ function disableFirewallRules(options) } ret.child.ret = ret; - ret.child.stdout.str = ''; ret.child.stdout.on('data', function (c) { this.str += c.toString(); }); - ret.child.stderr.str = ''; ret.child.stderr.on('data', function (c) { this.str += c.toString(); }); + ret.child.stdout.str = ''; ret.child.stdout.on('data', stdparser); + ret.child.stderr.str = ''; ret.child.stderr.on('data', stdparser); ret.child.on('exit', function () { if (this.stderr.str != '') { + this.ret.child = null; this.ret._rej(this.stderr.str.trim()); } else { + this.ret.child = null; this.ret._res(); } }); @@ -264,16 +279,18 @@ function enableFirewallRules(options) } ret.child.ret = ret; - ret.child.stdout.str = ''; ret.child.stdout.on('data', function (c) { this.str += c.toString(); }); - ret.child.stderr.str = ''; ret.child.stderr.on('data', function (c) { this.str += c.toString(); }); + ret.child.stdout.str = ''; ret.child.stdout.on('data', stdparser); + ret.child.stderr.str = ''; ret.child.stderr.on('data', stdparser); ret.child.on('exit', function () { if(this.stderr.str != '') { + this.ret.child = null; this.ret._rej(this.stderr.str.trim()); } else { + this.ret.child = null; this.ret._res(); } }); @@ -429,7 +446,6 @@ function convertOptions(options) function removeFirewallRule(options) { if (typeof (options) == 'string') { options = { Name: options }; } - var ret = new promise(function (a, r) { this._res = a; this._rej = r; }); if (options.program) { options.Program = options.program; delete options.program; } var command = 'Remove-NetFirewallRule'; @@ -448,30 +464,32 @@ function removeFirewallRule(options) } } + var ret = WeakReference(new promise(promise.defaultInit)); if (require('os').arch() == 'x64') { - ret.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); + ret.object.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); } else { - ret.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); + ret.object.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); } - ret.child.ret = ret; - ret.child.stdout.str = ''; ret.child.stdout.on('data', function (c) { this.str += c.toString(); }); - ret.child.stderr.str = ''; ret.child.stderr.on('data', function (c) { this.str += c.toString(); }); - ret.child.on('exit', function () + ret.object.child.ret = ret; + ret.object.child.stdout.str = ''; ret.object.child.stdout.on('data', stdparser); + ret.object.child.stderr.str = ''; ret.object.child.stderr.on('data', stdparser); + ret.object.child.on('exit', function () { + ret.object.child = null; if(this.stderr.str != '') { - this.ret._rej(this.stderr.str.trim()); + this.ret.object.reject(this.stderr.str.trim()); } else { - this.ret._res(); + this.ret.object.resolve(); } }); - return (ret); + return (ret.object); } function addFirewallRule(options) @@ -502,8 +520,8 @@ function addFirewallRule(options) child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['/C "' + command + '"']); } - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); - child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); }); + child.stdout.str = ''; child.stdout.on('data', stdparser); + child.stderr.str = ''; child.stderr.on('data', stdparser); child.waitExit(); if(child.stderr.str.trim() != '') @@ -537,18 +555,18 @@ function netsh_parseResults(str) function netsh_getFirewallRules(options) { if (options.program) { options.Program = options.program; delete options.program; } - var p = new promise(function (a, r) { this._res = a; this._rej = r; }); - require('events').EventEmitter.call(p, true) + var p = WeakReference(new promise(promise.defaultInit)); + require('events').EventEmitter.call(p.object, true) .createEvent('firewallRule'); var command = 'netsh advfirewall firewall show rule name=all verbose'; - p.options = options; - p._results = []; - p.child = require('child_process').execFile(process.env['windir'] + '\\System32\\cmd.exe', ['/C "' + command + '"']); - p.child.ret = p; - p.child.stderr.str = ''; p.child.stderr.on('data', function (c) { this.str += c.toString(); }); - p.child.stdout.str = ''; - p.child.stdout.on('data', function (b) + p.object.options = options; + p.object._results = []; + p.object.child = require('child_process').execFile(process.env['windir'] + '\\System32\\cmd.exe', ['/C "' + command + '"']); + p.object.child.ret = p; + p.object.child.stderr.str = ''; p.object.child.stderr.on('data', function (c) { this.str += c.toString(); }); + p.object.child.stdout.str = ''; + p.object.child.stdout.on('data', function (b) { var key, ok; this.str += b.toString(); @@ -560,9 +578,9 @@ function netsh_getFirewallRules(options) for (var i in rules) { ok = true; - for (key in this.parent.ret.options) + for (key in this.parent.ret.object.options) { - if(this.parent.ret.options[key] == null || this.parent.ret.options[key] != rules[i][key]) + if(this.parent.ret.object.options[key] == null || this.parent.ret.object.options[key] != rules[i][key]) { ok = false; break; @@ -570,13 +588,13 @@ function netsh_getFirewallRules(options) } if (ok) { - if (this.parent.ret.listenerCount('firewallRule') > 0) + if (this.parent.ret.object.listenerCount('firewallRule') > 0) { - this.parent.ret.emit('firewallRule', rules[i]); + this.parent.ret.object.emit('firewallRule', rules[i]); } else { - this.parent.ret._results.push(rules[i]); + this.parent.ret.object._results.push(rules[i]); } } } @@ -587,27 +605,28 @@ function netsh_getFirewallRules(options) } } }); - p.child.on('exit', function () + p.object.child.on('exit', function () { - if (this.ret.listenerCount('firewallRule') > 0) + p.object.child = null; + if (this.ret.object.listenerCount('firewallRule') > 0) { - this.ret._res(); + this.ret.object.resolve(); } else { - if(this.ret._results.length>0) + if(this.ret.object._results.length>0) { - this.ret._res(this.ret._results); + this.ret.object.resolve(this.ret.object._results); } else { - this.ret._rej('No matches'); + this.ret.object.reject('No matches'); } } }); - return (p); + return (p.object); } function netsh_disableFirewallRules(options) { @@ -688,13 +707,14 @@ function netsh_addFirewallRule(options) } var child = require('child_process').execFile(process.env['windir'] + '\\System32\\cmd.exe', ['/C "' + command + '"']); - child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); }); - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.str = ''; child.stderr.on('data', stdparser); + child.stdout.str = ''; child.stdout.on('data', stdparser); child.waitExit(); } function netsh_removeFirewallRule(options) { var ret = new promise(function (a, r) { this._res = a; this._rej = r; }); + ret._ObjectID = 'netsh_promise'; ret.options = options; ret.getp = netsh_getFirewallRules(options); ret.getp.ret = ret; @@ -703,6 +723,7 @@ function netsh_removeFirewallRule(options) var child, command, key, value; convertNetSecurityValues(this.ret.options); + console.log('rules.length=', rules); for(var i in rules) { command = 'netsh advfirewall firewall delete rule name="' + rules[i].Name + '"'; @@ -714,8 +735,8 @@ function netsh_removeFirewallRule(options) } child = require('child_process').execFile(process.env['windir'] + '\\System32\\cmd.exe', ['/C "' + command + '"']); - child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); }); - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.str = ''; child.stderr.on('data', stdparser); + child.stdout.str = ''; child.stdout.on('data', stdparser); child.waitExit(); } this.ret._res();