From d4864597aea8c97c90381df164e99d6da91537ff Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Wed, 17 Aug 2022 11:27:34 -0700 Subject: [PATCH] Optimized referencing within win-dispatcher to facilitate better garbage collection --- microscript/ILibDuktape_Polyfills.c | 2 +- modules/win-dispatcher.js | 105 ++++++++++++++++++---------- 2 files changed, 68 insertions(+), 39 deletions(-) diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 0b09dc9..ef72330 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2549,7 +2549,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('win-bcd', Buffer.from('eJzVV21v2zYQ/m7A/+HmD5XcqkqXFQPmIBi8xG2NJHYXpQ2COAho6SyzkUmXovyywP99R73Y8lvbtWix8oNFkce755473dEHT6uVEzmeKx4ONRy++PUPaAuNEZxINZaKaS5FtVKtnHMfRYwBJCJABXqI0Bwznx75jgPvUcUkDYfuC7CNQC3fqtWPqpW5TGDE5iCkhiRG0sBjGPAIAWc+jjVwAb4cjSPOhI8w5XqYWsl1uNXKTa5B9jUjYUbiY3oblMWAaYMWaAy1HjcODqbTqctSpK5U4UGUycUH5+2TVsdrPSe05sQ7EWEcg8KPCVfkZn8ObExgfNYniBGbglTAQoW0p6UBO1VccxE6EMuBnjKF1UrAY614P9FrPBXQyN+yADHFBNSaHrS9GvzV9NqeU61ct6/edN9dwXXz8rLZuWq3POhewkm3c9q+anc79PYKmp0bOGt3Th1AYoms4GysDHqCyA2DGBBdHuKa+YHM4MRj9PmA++SUCBMWIoRygkqQLzBGNeKxiWJM4IJqJeIjrtMkiLc9IiNPDwx5g0T4RgZC1Gc4j+16tfKYRWHCFJGq4RgeF0fZkj/kUUALOde2lS7cj5X0yQmr7uIM/VeUGXa+5KKY3FpTLgKurDt4BrVez5vHGke/HfZ6fT/AgGtzqubArZW/Ww5YByiSkZk8+olSKPTCuquXUbixDmSi6aEIkGUdrS9LYVsB04xULF20/To8ptmbnnp2DL6rpUdhFaFdP4LFlgFUarcmo2hDfMq4bs24ts3yisGIC4wJ4SZol8yO7LobU9C1bfVUT1iFwvSMGw/5wGjbeC2Um6SwjQVuUjqVqWc7efwKBFo+UMgJQipzy+8Km7A0WIg+4JzksgMlg2WRCYsSXAl9kFykmnJ/StKUO7ek8I6E00P51iJ70G6iiEl6mkOLrVS06ewqGQvxNHrLXE31bx6Pl8edzPB6Sv/AHCYk6ynswArVz5TOZXoDjFDjVoB+MLUZipTIHRT/ZNyW2EVhupbHBnghA/RQTahg23H27LARlj+JnGXi77nC0DSoOZF8Td0tjc8+gTdnrRv3XPosuqDmSkWBCPRuvKvWRa93kvF4IoVWMvJQ01I2p8gQqr6UtNRBPZXqodezKGYlcA6IJIqMumzN2kweHn+Ra1nrCcuptO7D0Uouq1mPlJcDlkS6AZaQAi0oehbJ024mRQrcvxNU84ye8DtSYZIEfKb9IdgfHzDNgvVSRpDcHDQcH+/njG4eX5wT5OxWD9iXBqfLD/nHJ0p9vRmkPNmz9f612Pw26KKkmdI2ffvs+1aeeJhQbZiKZekpFtLao9JfU4dSJL8cm6T/M52XikTDevG/urKkmny6DcoI3UiGdllT/eizJYoPYJUo969RoOL+BVPxkEVE8Fu6CGhUHv8HTTa/hCdPVtGQJgRMUYzraarPfn9prQI4kkFCmOgqLJWmi8pWBu8sio3dy87q2O4Pp7Fn3Snyq1FMnO1y1dheypM1owmjGD/j14ZvZuT3mUYxcfI7TCN/Oqum21hNna/l5Wu4CXNAYQ7oW7gq+Mreuv0P6GtTCanAvFWS/sjoub3OnQM1U0+MpprzKRob5ca7vrshvFYtPyNnRnr33d+Qym3lexXT7tg4ZopPNnuf3n7KV+7yiOl/uGk+k/ru/T1+muEz+tN52NgvYEbRxiyv+ap1f9E9bd13WlfX3cuzvZCK0VfIHj4hU7Ty/wrgmwwvdi8XVia7dO84k7f82Q7W9zC+9KPTvbxonu90YsNQ6TWt24t/ATXtbrU=', 'base64'));"); // win-dispatcher a helper to run JavaScript as a particular user. Refer to modules/win-dispatcher.js - duk_peval_string_noresult(ctx, "addCompressedModule('win-dispatcher', Buffer.from('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', 'base64'), '2022-07-25T09:30:24.000-07:00');"); + duk_peval_string_noresult(ctx, "addCompressedModule('win-dispatcher', Buffer.from('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', 'base64'), '2022-08-17T11:22:26.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-24T22:30:10.000-07:00');"); diff --git a/modules/win-dispatcher.js b/modules/win-dispatcher.js index ed49822..d5df38e 100644 --- a/modules/win-dispatcher.js +++ b/modules/win-dispatcher.js @@ -14,6 +14,69 @@ See the License for the specific language governing permissions and limitations under the License. */ +function empty_func() +{ + var p = this.parent; + p._ipc.parent = null; + p._ipc2.parent = null; + p._client._parent = null; + p._client = null; + p._control._parent = null; + p._control = null; + p = null; +} +function empty_func2() +{ +} + +function ipc_invoke(method, args) +{ + var d, h = Buffer.alloc(4); + d = Buffer.from(JSON.stringify({ command: 'invoke', value: { method: method, args: args } })); + h.writeUInt32LE(d.length + 4); + this._control.write(h); + this._control.write(d); +} + +function ipc1_finalized() +{ + //console.log('IPC1 Finalized'); +} +function ipc2_finalized() +{ + //console.log('IPC2 Finalized'); +} +function ipc2_connection(s) +{ + this.parent._control = s; + this.parent._control._parent = this; + this.close(); + this.parent.invoke = ipc_invoke; + s.on('end', empty_func2); // DO NOT DELETE this line + s.on('~', ipc2_finalized); +} +function ipc_connection(s) +{ + this.parent._client = s; + this.parent._client._parent = this; + this.close(); + var d, h = Buffer.alloc(4); + s.descriptorMetadata = 'win-dispatcher, ' + this.parent.options.launch.module + '.' + this.parent.options.launch.method + '()'; + + for (var m in this.parent.options.modules) + { + d = Buffer.from(JSON.stringify({ command: 'addModule', value: { name: this.parent.options.modules[m].name, js: this.parent.options.modules[m].script } })); + h.writeUInt32LE(d.length + 4); + s.write(h); + s.write(d); + } + d = Buffer.from(JSON.stringify({ command: 'launch', value: { split: this.parent.options.launch.split ? true : false, module: this.parent.options.launch.module, method: this.parent.options.launch.method, args: this.parent.options.launch.args } })); + h.writeUInt32LE(d.length + 4); + s.write(h); + s.write(d); + s.on('~', ipc1_finalized); + this.parent.emit('connection', s); +} function dispatch(options) { @@ -25,8 +88,8 @@ function dispatch(options) ret._ipc = require('net').createServer(); ret._ipc.parent = ret; ret._ipc2 = require('net').createServer(); ret._ipc2.parent = ret; - ret._ipc.on('close', function () { }); - ret._ipc2.on('close', function () { }); + ret._ipc.on('close', empty_func); + ret._ipc2.on('close', empty_func); while (true) { @@ -44,42 +107,8 @@ function dispatch(options) } } var str = Buffer.from("require('win-console').hide();require('win-dispatcher').connect('" + ipcInteger + "');").toString('base64'); - ret._ipc2.once('connection', function onConnect(s) - { - this.parent._control = s; - this.parent._control._parent = this; - this.close(); - this.parent.invoke = function (method, args) - { - var d, h = Buffer.alloc(4); - d = Buffer.from(JSON.stringify({ command: 'invoke', value: { method: method, args: args } })); - h.writeUInt32LE(d.length + 4); - this._control.write(h); - this._control.write(d); - }; - s.on('end', function () { }); // DO NOT DELETE this line - }); - ret._ipc.once('connection', function onConnect(s) - { - this.parent._client = s; - this.parent._client._parent = this; - this.close(); - var d, h = Buffer.alloc(4); - s.descriptorMetadata = 'win-dispatcher, ' + this.parent.options.launch.module + '.' + this.parent.options.launch.method + '()'; - - for (var m in this.parent.options.modules) - { - d = Buffer.from(JSON.stringify({ command: 'addModule', value: { name: this.parent.options.modules[m].name, js: this.parent.options.modules[m].script } })); - h.writeUInt32LE(d.length + 4); - s.write(h); - s.write(d); - } - d = Buffer.from(JSON.stringify({ command: 'launch', value: { split: this.parent.options.launch.split?true:false, module: this.parent.options.launch.module, method: this.parent.options.launch.method, args: this.parent.options.launch.args } })); - h.writeUInt32LE(d.length + 4); - s.write(h); - s.write(d); - this.parent.emit('connection', s); - }); + ret._ipc2.once('connection', ipc2_connection); + ret._ipc.once('connection', ipc_connection); try {