From 2ac75f7586f50af0244fb6ca51c01cfb281540cf Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Mon, 9 Nov 2020 11:55:36 -0800 Subject: [PATCH] Added support for file-search --- microscript/ILibDuktape_Polyfills.c | 3 + modules/file-search.js | 139 ++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 modules/file-search.js diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index d4d8e28..5b4326b 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2327,6 +2327,9 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) // agent-instaler: Refer to modules/agent-installer.js duk_peval_string_noresult(ctx, "addCompressedModule('agent-installer', Buffer.from('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', 'base64'));"); + // file-search: Refer to modules/file-search.js + duk_peval_string_noresult(ctx, "addCompressedModule('file-search', Buffer.from('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', 'base64'));"); + // identifer: Refer to modules/identifers.js duk_peval_string_noresult(ctx, "addCompressedModule('identifiers', Buffer.from('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', 'base64'));"); diff --git a/modules/file-search.js b/modules/file-search.js new file mode 100644 index 0000000..6983521 --- /dev/null +++ b/modules/file-search.js @@ -0,0 +1,139 @@ +/* +Copyright 2020 Intel Corporation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +var promise = require('promise'); + +function filesearch() +{ + this._ObjectID = 'fileSearch'; + switch (process.platform) + { + case 'win32': + this.find = function find(root, criteria) + { + var ret = new promise(function (res, rej) { this._res = res; this._rej = rej; }); + require('events').EventEmitter.call(ret, true) + .createEvent('result') + .createEvent('end'); + ret.server = require('net').createServer(); + ret.server.promise = ret; + ret._clientpath = 'mesh-' + require('uuid/v4')(); + ret.path = '\\\\.\\pipe\\' + ret._clientpath; + try { ret.server.listen({ path: ret.path }); } catch (e) { throw ('SearchError: Cannot create connection'); } + ret.server.on('connection', function (c) + { + console.info1('Powershell Search Client connected...'); + c.str = ''; + this._connection = c; + c.parent = this; + c.on('end', function () + { + var last = this.str.trim(); + if (last != '') { this.parent.promise.emit('result', lines.shift()); } + console.info1('Powershell Search Client disconnected'); + this.end(); + this.parent._connection = null; + this.parent.promise.emit('end'); + this.parent.promise._res(); + }); + c.on('data', function (chunk) + { + this.str += chunk.toString(); + var lines = this.str.split('\r\n'); + while (lines.length > 1) + { + this.parent.promise.emit('result', lines.shift()); + } + this.str = lines[0]; + }); + }); + + ret.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['powershell']); + ret.child.stdout.on('data', function (c) { /*console.log('stdout: ' + c.toString());*/ }); + ret.child.stdin.write('[reflection.Assembly]::LoadWithPartialName("system.core")\r\n'); + ret.child.stdin.write('$pipe = new-object System.IO.Pipes.NamedPipeClientStream(".", "' + ret._clientpath + '", 3);\r\n'); + ret.child.stdin.write('$pipe.Connect(); \r\n'); + ret.child.stdin.write('$sw = new-object System.IO.StreamWriter($pipe);\r\n'); + ret.child.stdin.write('Get-ChildItem -Path ' + root.split('\\').join('\\\\') + ' -Include ' + (Array.isArray(criteria)?criteria.join(','):criteria) + ' -File -Recurse -ErrorAction SilentlyContinue |'); + ret.child.stdin.write(' ForEach-Object -Process { $sw.WriteLine($_.FullName); $sw.Flush(); }\r\n'); + ret.child.stdin.write('exit\r\n'); + + return (ret); + }; + break; + default: + this.find = function find(root, criteria) + { + var ret = new promise(function (res, rej) { this._res = res; this._rej = rej; }); + require('events').EventEmitter.call(ret, true) + .createEvent('result') + .createEvent('end'); + var searchArgs = ['find', root]; + if(process.platform == 'linux') + { + searchArgs.push('-type'); + searchArgs.push('f'); + searchArgs.push('('); + } + if (Array.isArray(criteria)) + { + searchArgs.push('-name'); + searchArgs.push(criteria.shift()); + + while(criteria.length>0) + { + searchArgs.push('-o'); + searchArgs.push('-name'); + searchArgs.push(criteria.shift()); + } + } + else + { + searchArgs.push('-name'); + searchArgs.push(criteria); + } + if (process.platform == 'linux') { searchArgs.push(')'); } + ret.child = require('child_process').execFile('/usr/bin/find', searchArgs); + if (ret.child == null) + { + ret._res(); + return (ret); + } + ret.child.stdout.str = ''; ret.child.stdout.p = ret; + ret.child.stdout.on('data', function (c) + { + this.str += c.toString(); + var lines = this.str.split('\n'); + while (lines.length > 1) + { + this.p.emit('result', lines.shift()); + } + this.str = lines.pop(); + }); + ret.child.stderr.on('data', function (c) { }); + ret.child.on('exit', function (c) + { + if (this.stdout.str.trim() != '') { this.stdout.p.emit('result', this.stdout.str.trim()); } + this.stdout.p.emit('end'); + this.stdout.p._res(); + }); + return (ret); + }; + break; + } +} + +module.exports = new filesearch(); \ No newline at end of file