diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index d4e19af..7cb130d 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2388,7 +2388,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'), '2021-11-09T11:49:08.000-08:00');"); + duk_peval_string_noresult(ctx, "addCompressedModule('win-firewall', Buffer.from('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', 'base64'), '2022-04-15T15:12:33.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'));"); diff --git a/modules/win-firewall.js b/modules/win-firewall.js index 05cba9b..53cf315 100644 --- a/modules/win-firewall.js +++ b/modules/win-firewall.js @@ -284,6 +284,130 @@ function ProfileMaskToString(mask) return (val.join(', ')); } +function getRulesCount() +{ + return(getFirewallRules({count: true})); +} +function getFirewallRulesAsync2(p) +{ + var hr; + var rule, tmp; + OleAut.VariantClear(p.vvar); + + hr = p.enumerator.funcs.Next(p.enumerator.Deref(), 1, p.vvar, p.fetched); + if (hr.Val == 0) + { + var pct = Math.floor(((p.counter++) / p.count) * 100); + if (pct % 5 == 0) + { + if (p.evented == false) + { + p.emit('progress', pct + '%'); + p.evented = true; + } + } + else + { + p.evented = false; + } + rule = GM.CreatePointer(); + tmp = p.vvar.Deref(8, GM.PointerSize); + tmp.funcs = require('win-com').marshalFunctions(tmp.Deref(), UnknownFunctions); + hr = tmp.funcs.QueryInterface(tmp.Deref(), require('win-com').CLSIDFromString(IID_INetFwRule), rule); + rule.funcs = require('win-com').marshalFunctions(rule.Deref(), RuleFunctions); + p.val.toBuffer().writeUInt32LE(0); + + if ((p.options && p.options.program && rule.funcs.get_ApplicationName(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0 + && p.options.program.toLowerCase() == p.val.Deref().Wide2UTF8.toLowerCase()) || !p.options || !p.options.program) + { + obj = {}; + obj._rule = rule; + obj._rule._i = p.NetFwPolicy2; + if (p.val.Deref().Val != 0) + { + obj.Program = p.val.Deref().Wide2UTF8; + } + else + { + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_ApplicationName(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.Program = p.val.Deref().Wide2UTF8; } + } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_Name(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.DisplayName = p.val.Deref().Wide2UTF8; } + if (!p.options.minimal) + { + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_Description(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.Description = p.val.Deref().Wide2UTF8; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_LocalPorts(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.LocalPorts = p.val.Deref().Wide2UTF8; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_RemotePorts(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.RemotePorts = p.val.Deref().Wide2UTF8; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_LocalAddresses(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.LocalAddresses = p.val.Deref().Wide2UTF8; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_RemoteAddresses(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.RemoteAddresses = p.val.Deref().Wide2UTF8; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_ApplicationName(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.Program = p.val.Deref().Wide2UTF8; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_InterfaceTypes(rule.Deref(), p.val).Val == 0 && p.val.Deref().Val != 0) { obj.InterfaceTypes = p.val.Deref().Wide2UTF8; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_Enabled(rule.Deref(), p.val).Val == 0) { obj.Enabled = p.val.Deref(0, 2).toBuffer().readInt16LE() != 0; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_Direction(rule.Deref(), p.val).Val == 0) + { + switch (p.val.Deref(0, 4).toBuffer().readInt32LE()) + { + case 1: // INBOUND + obj.direction = 'inbound'; + break; + case 2: // OUTBOUND + obj.direction = 'outbound'; + break; + default: // UNKNOWN + break; + } + } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_Protocol(rule.Deref(), p.val).Val == 0) { obj.Protocol = protocolNumbers[p.val.Deref(0, 4).toBuffer().readInt32LE()]; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_EdgeTraversal(rule.Deref(), p.val).Val == 0) { obj.EdgeTraversalPolicy = p.val.Deref(0, 2).toBuffer().readInt16LE() != 0 ? 'Allow' : 'Block'; } + p.val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_Profiles(rule.Deref(), p.val).Val == 0) { obj.Profile = ProfileMaskToString(p.val.toBuffer().readUInt32LE()); } + } + p.emit('rule', obj); + if (p.options.noResult != true) { p.arr.push(obj); } + p.arr.push(obj); + } + setImmediate(getFirewallRulesAsync2, p); + } + else + { + p.resolve(p.options.noResult === true ? null : p.arr); + } +} +function getFirewallRulesAsync(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.rules.funcs.get__NewEnum(ret.rules.Deref(), unknown); + unknown.funcs = require('win-com').marshalFunctions(unknown.Deref(), UnknownFunctions); + unknown.funcs.QueryInterface(unknown.Deref(), require('win-com').CLSIDFromString(IID_IEnumVARIANT), ret.enumerator); + ret.enumerator.funcs = require('win-com').marshalFunctions(ret.enumerator.Deref(), EnumVariantFunctions); + + var count = GM.CreateVariable(4); + ret.rules.funcs.get_Count(ret.rules.Deref(), count).Val; + ret.count = count.toBuffer().readInt32LE(); + + setImmediate(getFirewallRulesAsync2, ret); + + return (ret); +} function getFirewallRules(options) { var ret = []; @@ -311,11 +435,19 @@ function getFirewallRules(options) console.info1('Number of Rules: ' + count.toBuffer().readInt32LE()); + if (options && options.count === true) + { + var ret = count.toBuffer().readInt32LE(); + NetFwPolicy2.funcs.Release(NetFwPolicy2); + return (ret); + } + hr = rules.funcs.get__NewEnum(rules.Deref(), unknown); unknown.funcs = require('win-com').marshalFunctions(unknown.Deref(), UnknownFunctions); hr = unknown.funcs.QueryInterface(unknown.Deref(), require('win-com').CLSIDFromString(IID_IEnumVARIANT), enumerator); enumerator.funcs = require('win-com').marshalFunctions(enumerator.Deref(), EnumVariantFunctions); + var ii = 0; jj = 0; while (hr.Val == 0) { OleAut.VariantClear(vvar); @@ -334,6 +466,14 @@ function getFirewallRules(options) obj = {}; obj._rule = rule; obj._rule._i = NetFwPolicy2; + if (val.Deref().Val != 0) + { + obj.Program = val.Deref().Wide2UTF8; + } + else + { + val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_ApplicationName(rule.Deref(), val).Val == 0 && val.Deref().Val != 0) { obj.Program = val.Deref().Wide2UTF8; } + } val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_Name(rule.Deref(), val).Val == 0 && val.Deref().Val != 0) { obj.DisplayName = val.Deref().Wide2UTF8; } val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_Description(rule.Deref(), val).Val == 0 && val.Deref().Val != 0) { obj.Description = val.Deref().Wide2UTF8; } val.toBuffer().writeUInt32LE(0); if (rule.funcs.get_LocalPorts(rule.Deref(), val).Val == 0 && val.Deref().Val != 0) { obj.LocalPorts = val.Deref().Wide2UTF8; } @@ -500,7 +640,9 @@ function addFirewallRule(rule) //attachDebugger({ webport: 9995, wait: true }).then(console.log, console.log); module.exports = { + getRulesCount: getRulesCount, getFirewallRules: getFirewallRules, + getFirewallRulesAsync: getFirewallRulesAsync, disableFirewallRules: disableFirewallRules, enableFirewallRules: enableFirewallRules, addFirewallRule: addFirewallRule,