From a0cd3e35879be63904804981f23b4f407833fdbb Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Sun, 24 Apr 2022 23:22:14 -0700 Subject: [PATCH] Updated agent installer on windows to show firewall enumeration progress, and to utilize the asynchronous api, so the installer doesn't appear non-responsive if it takes a long time. Also added a timeout, so installation will continue if it takes too long --- microscript/ILibDuktape_Polyfills.c | 4 +-- modules/agent-installer.js | 22 ++++++++------- modules/win-firewall.js | 42 ++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 7fc831c..246d6ef 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2395,7 +2395,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('win-dispatcher', Buffer.from('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', 'base64'), '2022-03-28T11:52:49.000-07:00');"); // 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('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', 'base64'), '2022-04-15T16:25:02.000-07:00');"); + duk_peval_string_noresult(ctx, "addCompressedModule('win-firewall', Buffer.from('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', 'base64'), '2022-04-24T22:30:10.000-07:00');"); // 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'));"); @@ -2494,7 +2494,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('util-language', Buffer.from('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', 'base64'));"); // agent-instaler: Refer to modules/agent-installer.js - duk_peval_string_noresult(ctx, "addCompressedModule('agent-installer', Buffer.from('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', 'base64'), '2022-03-28T23:54:51.000-07:00');"); + duk_peval_string_noresult(ctx, "addCompressedModule('agent-installer', Buffer.from('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', 'base64'), '2022-04-22T15:18:22.000-07:00');"); // file-search: Refer to modules/file-search.js duk_peval_string_noresult(ctx, "addCompressedModule('file-search', Buffer.from('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', 'base64'));"); diff --git a/modules/agent-installer.js b/modules/agent-installer.js index 6d95356..56b70db 100644 --- a/modules/agent-installer.js +++ b/modules/agent-installer.js @@ -503,19 +503,21 @@ function serviceExists(loc, params) process.stdout.write(' [FOUND: ' + loc + ']\n'); if(process.platform == 'win32') { - process.stdout.write(' -> Checking firewall rules for previous installation...'); - if(require('win-firewall').removeFirewallRule({ program: loc })) + process.stdout.write(' -> Checking firewall rules for previous installation... [0%]'); + var p = require('win-firewall').getFirewallRulesAsync({ program: loc, noResult: true, minimal: true, timeout: 15000 }); + p.on('progress', function (c) { - // SUCCESS - process.stdout.write(' [DELETED]\n'); - uninstallService(params); - } - else + process.stdout.write('\r -> Checking firewall rules for previous installation... [' + c + ']'); + }); + p.on('rule', function (r) { - // FAILED - process.stdout.write(' [No Rules Found]\n'); + require('win-firewall').removeFirewallRule(r.DisplayName); + }); + p.finally(function () + { + process.stdout.write('\r -> Checking firewall rules for previous installation... [DONE]\n'); uninstallService(params); - } + }); } else { diff --git a/modules/win-firewall.js b/modules/win-firewall.js index da8495e..86e3413 100644 --- a/modules/win-firewall.js +++ b/modules/win-firewall.js @@ -378,6 +378,45 @@ function getFirewallRulesAsync2(p) p.resolve(p.options.noResult === true ? null : p.arr); } } + +function getRulesCount2(options) +{ + if (options == null) { options = {} }; + var promise = require('promise'); + var unknown = GM.CreatePointer(); + var ret = new promise(promise.defaultInit); + ret.NetFwPolicy2 = require('win-com').createInstance(require('win-com').CLSIDFromString(CLSID_NetFwPolicy2), require('win-com').IID_IUnknown); + ret.NetFwPolicy2.funcs = require('win-com').marshalFunctions(ret.NetFwPolicy2, FirewallFunctions); + ret.rules = GM.CreatePointer(); + ret.enumerator = GM.CreatePointer(); + ret.vvar = GM.CreateVariable(GM.PointerSize == 8 ? 24 : 16); + ret.fetched = GM.CreateVariable(4); + ret.options = options; + ret.val = GM.CreatePointer(); + ret.arr = []; + ret.counter = 0; + ret.evented = false; + require('events').EventEmitter.call(ret, true) + .createEvent('progress') + .createEvent('rule'); + + ret.NetFwPolicy2.funcs.get_Rules(ret.NetFwPolicy2, ret.rules).Val; + ret.rules.funcs = require('win-com').marshalFunctions(ret.rules.Deref(), RulesFunctions); + + ret.__count = GM.CreateVariable(4); + ret.rules.funcs.get_Count._spawnThread = true; + ret.__countobj = ret.rules.funcs.get_Count(ret.rules.Deref(), ret.__count); + ret.__countobj.ret = ret; + ret.__countobj.once('done', function (r) + { + var result = this.ret.__count.toBuffer().readUInt32LE() + this.ret.NetFwPolicy2.funcs.Release(this.ret.NetFwPolicy2); + this.ret.resolve(result); + }); + ret.timeout = setTimeout(function (r) { r.reject(); }, 5000, ret); + return (ret); +} + function getFirewallRulesAsync(options) { if (options == null) { options = {} }; @@ -410,6 +449,7 @@ function getFirewallRulesAsync(options) var count = GM.CreateVariable(4); ret.rules.funcs.get_Count(ret.rules.Deref(), count).Val; ret.count = count.toBuffer().readInt32LE(); + ret.startTime = Date.now(); setImmediate(getFirewallRulesAsync2, ret); @@ -440,7 +480,6 @@ function getFirewallRules(options) var count = GM.CreateVariable(4); hr = rules.funcs.get_Count(rules.Deref(), count).Val; - console.info1('Number of Rules: ' + count.toBuffer().readInt32LE()); if (options && options.count === true) @@ -649,6 +688,7 @@ function addFirewallRule(rule) module.exports = { getRulesCount: getRulesCount, + getRulesCount2: getRulesCount2, getFirewallRules: getFirewallRules, getFirewallRulesAsync: getFirewallRulesAsync, disableFirewallRules: disableFirewallRules,