diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 1fef0fa..b0e842a 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2306,9 +2306,10 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('linux-cpuflags', Buffer.from('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', 'base64'));"); duk_peval_string_noresult(ctx, "addCompressedModule('linux-acpi', Buffer.from('eJx9VVFvm0gQfkfiP8z5Bago5Ny3WHlwHJ8OXWWfQnJV1VbVGga8F7zL7S6xLSv//WYBO7h1ui8G9ttvvvlmZh2/c52ZrPeKl2sD46vxFSTCYAUzqWqpmOFSuI7rfOQZCo05NCJHBWaNMK1ZRj/9Tgj/oNKEhnF0Bb4FjPqtUTBxnb1sYMP2IKSBRiMxcA0FrxBwl2FtgAvI5KauOBMZwpabdRul54hc53PPIFeGEZgRvKa3YggDZqxaoLU2pr6O4+12G7FWaSRVGVcdTscfk9l8kc7fk1p74lFUqDUo/K/hitJc7YHVJCZjK5JYsS1IBaxUSHtGWrFbxQ0XZQhaFmbLFLpOzrVRfNWYM5+O0ijfIYCcYgJG0xSSdAS30zRJQ9f5lDz8uXx8gE/T+/vp4iGZp7C8h9lycZc8JMsFvf0B08Vn+CtZ3IWA5BJFwV2trHqSyK2DmJNdKeJZ+EJ2cnSNGS94RkmJsmElQimfUQnKBWpUG65tFTWJy12n4htu2ibQP2dEQd7F1jzXKRqRWRRUXDS77yyruR+4zqErha119H25+hczk9zBDXgt7L2FeZMO0zvve/iMwmgviOb2YU7xDaooY1XlW54QjGow6A7ZFWUKmcEW7XstZdBzdhGjHAsu8G8lKT2z71lGuqmpwakSoxAO8MyqBq9fVRRWAe6oXjrdi8z34memYtWI2EbIIy2zJzReAC/HYLxomaMTb6/x8Cq18yGjAglDLpyCCcvU5zGTQmDrpX+Ampn1NbwRO4QNGpYzw67PDIWXEE718AdODZSc1FAYz1J4wzPZuhFPwTn6h8N2kSpYVSRGTy5vNqumKKhnbkA0VfUGyMgnaibCtFEjI1MaEVH6QaSplamkX8WpoMPFC7pl2rNRhaKk6+LmBn4PqJZtYo3Qa16YPpcJvPySoUZ88gP4jVrTsxSvym/bh6hQcnMCy9oPLlNiRZN2gCHwIs4Oo2+z5/Yq6eDBz7ALptvVmU7iuoNf+LejV3DRKrtaUxSaCDf8OCe28QXbUN93jF+uvtF47Wv6MEy73xzTprfGHbUqdWr+SP8TH8a3cz8Ij9Nz4dCHtw69Ds5w/WDVGebsZThKNi1rBn3qEUTzYq+ljcybCmmO7URawwRuz66oyf8tuBKP', 'base64'));"); #endif - char *_servicemanager = ILibMemory_Allocate(31225, 0, NULL, NULL); - memcpy_s(_servicemanager + 0, 31224, "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", 16000); - memcpy_s(_servicemanager + 16000, 15224, "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", 15224); + char *_servicemanager = ILibMemory_Allocate(32157, 0, NULL, NULL); + memcpy_s(_servicemanager + 0, 32156, "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", 16000); + memcpy_s(_servicemanager + 16000, 16156, "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", 16000); + memcpy_s(_servicemanager + 32000, 156, "jORfSYG+7mq9oQ4MEDJBSEq41ApeD4jyOc+YMuQUQ/D5WslmZKKI0uDRTHDrlRArCFCvz03BpidmPb3PEPc8sWzX8Q8dH1BTcDNcosRsRFAs9FmoNPMyKySAY3pVqG1sdR512DFI3IH4c5PA+/8BvNCgvA==", 156); ILibDuktape_AddCompressedModule(ctx, "service-manager", _servicemanager); free(_servicemanager); diff --git a/modules/service-manager.js b/modules/service-manager.js index 0271dc1..178498f 100644 --- a/modules/service-manager.js +++ b/modules/service-manager.js @@ -1322,6 +1322,10 @@ function serviceManager() if ((platform == 'init' && require('fs').existsSync('/etc/init.d/' + name)) || (platform == 'upstart' && require('fs').existsSync('/etc/init/' + name + '.conf'))) { + if (platform == 'init') + { + Object.defineProperty(ret, 'OpenRC', { value: require('fs').existsSync('/sbin/openrc-run') }); + } ret.conf = (platform == 'upstart' ? ('/etc/init/' + name + '.conf') : ('/etc/init.d/' + name)); ret.serviceType = platform; Object.defineProperty(ret, "startType", @@ -1331,13 +1335,20 @@ function serviceManager() var child = require('child_process').execFile('/bin/sh', ['sh']); child.stderr.on('data', function (c) { }); child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); - if (this.serviceType == 'upstart') + if (this.OpenRC) { - child.stdin.write('cat ' + this.conf + ' | grep "start on runlevel"\nexit\n'); + child.stdin.write('rc-status default | grep "^\\s' + this.name + ' *\\["\n\exit\n'); } else { - child.stdin.write('find /etc/rc* -maxdepth 2 -type l -ls | grep " ../init.d/' + this.name + '" | awk -F"-> " \'{ if($2=="../init.d/' + this.name + '") { print "true"; } }\'\nexit\n'); + if (this.serviceType == 'upstart') + { + child.stdin.write('cat ' + this.conf + ' | grep "start on runlevel"\nexit\n'); + } + else + { + child.stdin.write('find /etc/rc* -maxdepth 2 -type l -ls | grep " ../init.d/' + this.name + '" | awk -F"-> " \'{ if($2=="../init.d/' + this.name + '") { print "true"; } }\'\nexit\n'); + } } child.waitExit(); return (child.stdout.str.trim() == '' ? 'DEMAND_START' : 'AUTO_START'); @@ -1368,7 +1379,21 @@ function serviceManager() child.stdout.on('data', function (chunk) { this.str += chunk.toString(); }); if (appWorkingDirectory.platform == 'init') { - child.stdin.write("cat /etc/init.d/" + this.name + " | grep 'SCRIPT=' | awk -F= '{ len=split($2, a, \"/\"); print substr($2,0,length($2)-length(a[len])); }'\nexit\n"); + if (this.OpenRC) + { + if (this.startType == 'AUTO_START') + { + child.stdin.write('cat /etc/init.d/' + this.name + ' | grep "^\\s*supervise_daemon_args=" | awk \'NR==1{ split($0,A,"--chdir "); split(A[2],B,"\\\\\\\\\\""); print B[2]; }\'\nexit\n'); + } + else + { + child.stdin.write('cat /etc/init.d/' + this.name + ' | grep "^\\s*start_stop_daemon_args=" | awk \'NR==1{ split($0,A,"--chdir "); split(A[2],B,"\\\\\\\\\\""); print B[2]; }\'\nexit\n'); + } + } + else + { + child.stdin.write("cat /etc/init.d/" + this.name + " | grep 'SCRIPT=' | awk -F= '{ len=split($2, a, \"/\"); print substr($2,0,length($2)-length(a[len])); }'\nexit\n"); + } } else { @@ -1397,9 +1422,16 @@ function serviceManager() var child = require('child_process').execFile('/bin/sh', ['sh']); child.stdout.str = ''; child.stdout.on('data', function (chunk) { this.str += chunk.toString(); }); - if(appLocation.platform == 'init') + if (appLocation.platform == 'init') { - child.stdin.write("cat /etc/init.d/" + this.name + " | grep 'SCRIPT=' | awk -F= '{print $2}'\nexit\n"); + if (this.OpenRC) + { + child.stdin.write('cat /etc/init.d/' + this.name + ' | grep "\\s*command=" | awk \'NR==1{ split($0,A,"\\""); print A[2]; }\'\nexit\n'); + } + else + { + child.stdin.write("cat /etc/init.d/" + this.name + " | grep 'SCRIPT=' | awk -F= '{print $2}'\nexit\n"); + } } else { @@ -1422,6 +1454,10 @@ function serviceManager() ret.appLocation.platform = platform; ret.isMe = function isMe() { + if (this.OpenRC) + { + return (this.pid() == process.pid); + } var child = require('child_process').execFile('/bin/sh', ['sh']); child.stdout.str = ''; child.stdout.on('data', function (chunk) { this.str += chunk.toString(); }); @@ -1463,15 +1499,29 @@ function serviceManager() } else { - child.stdin.write("service " + this.name + " status | awk '{print $2}' | awk -F, '{print $1}'\nexit\n"); + if (this.OpenRC) + { + child.stdin.write('rc-status | grep "\\s*' + this.name + ' "\nexit\n'); + } + else + { + child.stdin.write("service " + this.name + " status | awk '{print $2}' | awk -F, '{print $1}'\nexit\n"); + } } child.waitExit(); - return (child.stdout.str.trim() == 'start/running'); + if (this.OpenRC) + { + return (child.stdout.str.trim() != ''); + } + else + { + return (child.stdout.str.trim() == 'start/running'); + } }; ret.isRunning.platform = platform; ret.start = function start() { - var child = require('child_process').execFile('/bin/sh', ['sh']); + var child = require('child_process').execFile('/bin/sh', ['sh'], this.OpenRC ? { type: require('child_process').SpawnTypes.TERM } : null); child.stdout.on('data', function (chunk) { }); if (start.platform == 'upstart') { @@ -1486,7 +1536,7 @@ function serviceManager() ret.start.platform = platform; ret.stop = function stop() { - var child = require('child_process').execFile('/bin/sh', ['sh']); + var child = require('child_process').execFile('/bin/sh', ['sh'], this.OpenRC ? { type: require('child_process').SpawnTypes.TERM } : null); child.stdout.on('data', function (chunk) { }); if (stop.platform == 'upstart') { @@ -1501,7 +1551,7 @@ function serviceManager() ret.stop.platform = platform; ret.restart = function restart() { - var child = require('child_process').execFile('/bin/sh', ['sh']); + var child = require('child_process').execFile('/bin/sh', ['sh'], this.OpenRC ? { type: require('child_process').SpawnTypes.TERM } : null); child.stdout.on('data', function (chunk) { }); if (restart.platform == 'upstart') { @@ -1525,11 +1575,30 @@ function serviceManager() } else { - child.stdin.write('service ' + this.name + ' status\nexit\n'); + if (this.OpenRC) + { + child.stdin.write('rc-status | grep "\\s*' + this.name + ' "\nexit\n'); + } + else + { + child.stdin.write('service ' + this.name + ' status\nexit\n'); + } } child.waitExit(); return (child.stdout._str); }; + if (ret.OpenRC) + { + ret.pid = function () + { + var child = require('child_process').execFile('/bin/sh', ['sh']); + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.on('data', function () { }); + child.stdin.write('cat /var/run/' + this.name + ".pid | awk 'NR==1{ sh=sprintf(\"ps -o pid -o ppid | grep %s\",$0); system(sh); }' | awk '{ if($2!=\"1\") { print $1; }}' | awk 'NR==1{ print $0; }'\nexit\n"); + child.waitExit(); + return (parseInt(child.stdout.str.trim())); + } + } ret.status.platform = platform; } else @@ -2247,24 +2316,45 @@ function serviceManager() break; case 'init': - if (options.failureRestart == null || options.failureRestart > 0) - { - // Crash Restart is enabled, but it isn't inherently supported by INIT, so we must fake it with JS - var tmp_parameters = options.parameters ? options.parameters.slice() : []; - tmp_parameters.unshift('{{{}}}'); - tmp_parameters = JSON.stringify(tmp_parameters).split('"{{{}}}"').join('process.argv0'); - parameters = "var child; process.on('SIGTERM', function () { child.removeAllListeners('exit'); child.kill(); process.exit(); }); function start() { child = require('child_process').execFile(process.execPath, " + tmp_parameters + "); child.stdout.on('data', function (c) { }); child.stderr.on('data', function (c) { }); child.on('exit', function (status) { start(); }); } start();"; - parameters = '-b64exec ' + Buffer.from(parameters).toString('base64'); - } - - // The following is the init.d script I wrote. Rather than having to deal with escaping the thing, I just Base64 encoded it to prevent issues. conf = require('fs').createWriteStream('/etc/init.d/' + options.name, { flags: 'wb' }); - conf.write(Buffer.from('IyEvYmluL3NoCgoKU0NSSVBUPVpaWlpaWVlZWVkKUlVOQVM9cm9vdAoKUElERklMRT0vdmFyL3J1bi9YWFhYWC5waWQKTE9HRklMRT0vdmFyL2xvZy9YWFhYWC5sb2cKCnN0YXJ0KCkgewogIGlmIFsgLWYgIiRQSURGSUxFIiBdICYmIGtpbGwgLTAgJChjYXQgIiRQSURGSUxFIikgMj4vZGV2L251bGw7IHRoZW4KICAgIGVjaG8gJ1NlcnZpY2UgYWxyZWFkeSBydW5uaW5nJyA+JjIKICAgIHJldHVybiAxCiAgZmkKICBlY2hvICdTdGFydGluZyBzZXJ2aWNl4oCmJyA+JjIKICBsb2NhbCBDTUQ9IiRTQ1JJUFQge3tQQVJNU319ICY+IFwiJExPR0ZJTEVcIiAmIGVjaG8gXCQhIgogIGxvY2FsIENNRFBBVEg9JChlY2hvICRTQ1JJUFQgfCBhd2sgJ3sgbGVuPXNwbGl0KCQwLCBhLCAiLyIpOyBwcmludCBzdWJzdHIoJDAsIDAsIGxlbmd0aCgkMCktbGVuZ3RoKGFbbGVuXSkpOyB9JykKICBjZCAkQ01EUEFUSAogIHN1IC1jICIkQ01EIiAkUlVOQVMgPiAiJFBJREZJTEUiCiAgZWNobyAnU2VydmljZSBzdGFydGVkJyA+JjIKfQoKc3RvcCgpIHsKICBpZiBbICEgLWYgIiRQSURGSUxFIiBdOyB0aGVuCiAgICBlY2hvICdTZXJ2aWNlIG5vdCBydW5uaW5nJyA+JjIKICAgIHJldHVybiAxCiAgZWxzZQoJcGlkPSQoIGNhdCAiJFBJREZJTEUiICkKCWlmIGtpbGwgLTAgJHBpZCAyPi9kZXYvbnVsbDsgdGhlbgogICAgICBlY2hvICdTdG9wcGluZyBzZXJ2aWNl4oCmJyA+JjIKICAgICAga2lsbCAtMTUgJHBpZAogICAgICBlY2hvICdTZXJ2aWNlIHN0b3BwZWQnID4mMgoJZWxzZQoJICBlY2hvICdTZXJ2aWNlIG5vdCBydW5uaW5nJwoJZmkKCXJtIC1mICQiUElERklMRSIKICBmaQp9CnJlc3RhcnQoKXsKCXN0b3AKCXN0YXJ0Cn0Kc3RhdHVzKCl7CglpZiBbIC1mICIkUElERklMRSIgXQoJdGhlbgoJCXBpZD0kKCBjYXQgIiRQSURGSUxFIiApCgkJaWYga2lsbCAtMCAkcGlkIDI+L2Rldi9udWxsOyB0aGVuCgkJCWVjaG8gIlhYWFhYIHN0YXJ0L3J1bm5pbmcsIHByb2Nlc3MgJHBpZCIKCQllbHNlCgkJCWVjaG8gJ1hYWFhYIHN0b3Avd2FpdGluZycKCQlmaQoJZWxzZQoJCWVjaG8gJ1hYWFhYIHN0b3Avd2FpdGluZycKCWZpCgp9CgoKY2FzZSAiJDEiIGluCglzdGFydCkKCQlzdGFydAoJCTs7CglzdG9wKQoJCXN0b3AKCQk7OwoJcmVzdGFydCkKCQlzdG9wCgkJc3RhcnQKCQk7OwoJc3RhdHVzKQoJCXN0YXR1cwoJCTs7CgkqKQoJCWVjaG8gIlVzYWdlOiBzZXJ2aWNlIFhYWFhYIHtzdGFydHxzdG9wfHJlc3RhcnR8c3RhdHVzfSIKCQk7Owplc2FjCmV4aXQgMAoK', 'base64').toString() - .split('ZZZZZ').join(options.installPath) - .split('XXXXX').join(options.name) - .split('YYYYY').join(options.target) - .replace('{{PARMS}}', parameters)); - conf.end(); + var isOpenRC = false; + if (require('fs').existsSync('/sbin/openrc-run')) + { + // OpenRC + isOpenRC = true; + conf.write('#!/sbin/openrc-run\n\n'); + conf.write('name="' + options.name + '"\n'); + conf.write('command="' + options.installPath + options.target + '"\n'); + conf.write('command_args="' + parameters.split('"').join('\\"') + '"\n'); + conf.write('supervisor="supervise-daemon"\n'); + conf.write('supervise_daemon_args="--chdir \\"' + options.installPath + '\\""\n\n'); + conf.write('depend() {\n'); + conf.write(' want net\n'); + conf.write('}\n'); + conf.end(); + } + else + { + // Traditional init.d + + if (options.failureRestart == null || options.failureRestart > 0) + { + // Crash Restart is enabled, but it isn't inherently supported by INIT, so we must fake it with JS + var tmp_parameters = options.parameters ? options.parameters.slice() : []; + tmp_parameters.unshift('{{{}}}'); + tmp_parameters = JSON.stringify(tmp_parameters).split('"{{{}}}"').join('process.argv0'); + parameters = "var child; process.on('SIGTERM', function () { child.removeAllListeners('exit'); child.kill(); process.exit(); }); function start() { child = require('child_process').execFile(process.execPath, " + tmp_parameters + "); child.stdout.on('data', function (c) { }); child.stderr.on('data', function (c) { }); child.on('exit', function (status) { start(); }); } start();"; + parameters = '-b64exec ' + Buffer.from(parameters).toString('base64'); + } + + // The following is the init.d script I wrote. Rather than having to deal with escaping the thing, I just Base64 encoded it to prevent issues. + conf.write(Buffer.from('IyEvYmluL3NoCgoKU0NSSVBUPVpaWlpaWVlZWVkKUlVOQVM9cm9vdAoKUElERklMRT0vdmFyL3J1bi9YWFhYWC5waWQKTE9HRklMRT0vdmFyL2xvZy9YWFhYWC5sb2cKCnN0YXJ0KCkgewogIGlmIFsgLWYgIiRQSURGSUxFIiBdICYmIGtpbGwgLTAgJChjYXQgIiRQSURGSUxFIikgMj4vZGV2L251bGw7IHRoZW4KICAgIGVjaG8gJ1NlcnZpY2UgYWxyZWFkeSBydW5uaW5nJyA+JjIKICAgIHJldHVybiAxCiAgZmkKICBlY2hvICdTdGFydGluZyBzZXJ2aWNl4oCmJyA+JjIKICBsb2NhbCBDTUQ9IiRTQ1JJUFQge3tQQVJNU319ICY+IFwiJExPR0ZJTEVcIiAmIGVjaG8gXCQhIgogIGxvY2FsIENNRFBBVEg9JChlY2hvICRTQ1JJUFQgfCBhd2sgJ3sgbGVuPXNwbGl0KCQwLCBhLCAiLyIpOyBwcmludCBzdWJzdHIoJDAsIDAsIGxlbmd0aCgkMCktbGVuZ3RoKGFbbGVuXSkpOyB9JykKICBjZCAkQ01EUEFUSAogIHN1IC1jICIkQ01EIiAkUlVOQVMgPiAiJFBJREZJTEUiCiAgZWNobyAnU2VydmljZSBzdGFydGVkJyA+JjIKfQoKc3RvcCgpIHsKICBpZiBbICEgLWYgIiRQSURGSUxFIiBdOyB0aGVuCiAgICBlY2hvICdTZXJ2aWNlIG5vdCBydW5uaW5nJyA+JjIKICAgIHJldHVybiAxCiAgZWxzZQoJcGlkPSQoIGNhdCAiJFBJREZJTEUiICkKCWlmIGtpbGwgLTAgJHBpZCAyPi9kZXYvbnVsbDsgdGhlbgogICAgICBlY2hvICdTdG9wcGluZyBzZXJ2aWNl4oCmJyA+JjIKICAgICAga2lsbCAtMTUgJHBpZAogICAgICBlY2hvICdTZXJ2aWNlIHN0b3BwZWQnID4mMgoJZWxzZQoJICBlY2hvICdTZXJ2aWNlIG5vdCBydW5uaW5nJwoJZmkKCXJtIC1mICQiUElERklMRSIKICBmaQp9CnJlc3RhcnQoKXsKCXN0b3AKCXN0YXJ0Cn0Kc3RhdHVzKCl7CglpZiBbIC1mICIkUElERklMRSIgXQoJdGhlbgoJCXBpZD0kKCBjYXQgIiRQSURGSUxFIiApCgkJaWYga2lsbCAtMCAkcGlkIDI+L2Rldi9udWxsOyB0aGVuCgkJCWVjaG8gIlhYWFhYIHN0YXJ0L3J1bm5pbmcsIHByb2Nlc3MgJHBpZCIKCQllbHNlCgkJCWVjaG8gJ1hYWFhYIHN0b3Avd2FpdGluZycKCQlmaQoJZWxzZQoJCWVjaG8gJ1hYWFhYIHN0b3Avd2FpdGluZycKCWZpCgp9CgoKY2FzZSAiJDEiIGluCglzdGFydCkKCQlzdGFydAoJCTs7CglzdG9wKQoJCXN0b3AKCQk7OwoJcmVzdGFydCkKCQlzdG9wCgkJc3RhcnQKCQk7OwoJc3RhdHVzKQoJCXN0YXR1cwoJCTs7CgkqKQoJCWVjaG8gIlVzYWdlOiBzZXJ2aWNlIFhYWFhYIHtzdGFydHxzdG9wfHJlc3RhcnR8c3RhdHVzfSIKCQk7Owplc2FjCmV4aXQgMAoK', 'base64').toString() + .split('ZZZZZ').join(options.installPath) + .split('XXXXX').join(options.name) + .split('YYYYY').join(options.target) + .replace('{{PARMS}}', parameters)); + conf.end(); + } m = require('fs').statSync('/etc/init.d/' + options.name).mode; m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH); @@ -2276,7 +2366,14 @@ function serviceManager() case 'AUTO_START': var child = require('child_process').execFile('/bin/sh', ['sh']); child.stdout.on('data', function (chunk) { }); - child.stdin.write('update-rc.d ' + options.name + ' defaults\nexit\n'); + if (isOpenRC) + { + child.stdin.write('rc-update add ' + options.name + ' default\nexit\n'); + } + else + { + child.stdin.write('update-rc.d ' + options.name + ' defaults\nexit\n'); + } child.waitExit(); break; default: @@ -2648,7 +2745,17 @@ function serviceManager() this._update = require('child_process').execFile('/bin/sh', ['sh']); this._update.stdout.on('data', function (chunk) { }); this._update.stdin.write('service ' + name + ' stop\n'); - this._update.stdin.write('update-rc.d -f ' + name + ' remove\n'); + if (service.OpenRC) + { + if (service.startType == 'AUTO_START') + { + this._update.stdin.write('rc-update del ' + name + ' default\n'); + } + } + else + { + this._update.stdin.write('update-rc.d -f ' + name + ' remove\n'); + } this._update.stdin.write('exit\n'); this._update.waitExit(); try