From 692a3b52ba608f72faa3937a4abd97168ef869da Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Mon, 4 Mar 2019 14:29:19 -0800 Subject: [PATCH] Updated init.d service, so it supports parameters --- modules/service-manager.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/service-manager.js b/modules/service-manager.js index 4ed5c72..c47fda4 100644 --- a/modules/service-manager.js +++ b/modules/service-manager.js @@ -450,8 +450,9 @@ function serviceManager() m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP); require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.name, m); + // 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('IyEvYmluL3NoCgoKU0NSSVBUPS91c3IvbG9jYWwvbWVzaF9zZXJ2aWNlcy9YWFhYWC9YWFhYWApSVU5BUz1yb290CgpQSURGSUxFPS92YXIvcnVuL1hYWFhYLnBpZApMT0dGSUxFPS92YXIvbG9nL1hYWFhYLmxvZwoKc3RhcnQoKSB7CiAgaWYgWyAtZiAiJFBJREZJTEUiIF0gJiYga2lsbCAtMCAkKGNhdCAiJFBJREZJTEUiKSAyPi9kZXYvbnVsbDsgdGhlbgogICAgZWNobyAnU2VydmljZSBhbHJlYWR5IHJ1bm5pbmcnID4mMgogICAgcmV0dXJuIDEKICBmaQogIGVjaG8gJ1N0YXJ0aW5nIHNlcnZpY2XigKYnID4mMgogIGxvY2FsIENNRD0iJFNDUklQVCAmPiBcIiRMT0dGSUxFXCIgJiBlY2hvIFwkISIKICBzdSAtYyAiJENNRCIgJFJVTkFTID4gIiRQSURGSUxFIgogIGVjaG8gJ1NlcnZpY2Ugc3RhcnRlZCcgPiYyCn0KCnN0b3AoKSB7CiAgaWYgWyAhIC1mICIkUElERklMRSIgXTsgdGhlbgogICAgZWNobyAnU2VydmljZSBub3QgcnVubmluZycgPiYyCiAgICByZXR1cm4gMQogIGVsc2UKCXBpZD0kKCBjYXQgIiRQSURGSUxFIiApCglpZiBraWxsIC0wICRwaWQgMj4vZGV2L251bGw7IHRoZW4KICAgICAgZWNobyAnU3RvcHBpbmcgc2VydmljZeKApicgPiYyCiAgICAgIGtpbGwgLTE2ICRwaWQKICAgICAgZWNobyAnU2VydmljZSBzdG9wcGVkJyA+JjIKCWVsc2UKCSAgZWNobyAnU2VydmljZSBub3QgcnVubmluZycKCWZpCglybSAtZiAkIlBJREZJTEUiCiAgZmkKfQpyZXN0YXJ0KCl7CglzdG9wCglzdGFydAp9CnN0YXR1cygpewoJaWYgWyAtZiAiJFBJREZJTEUiIF0KCXRoZW4KCQlwaWQ9JCggY2F0ICIkUElERklMRSIgKQoJCWlmIGtpbGwgLTAgJHBpZCAyPi9kZXYvbnVsbDsgdGhlbgoJCQllY2hvICJYWFhYWCBzdGFydC9ydW5uaW5nLCBwcm9jZXNzICRwaWQiCgkJZWxzZQoJCQllY2hvICdYWFhYWCBzdG9wL3dhaXRpbmcnCgkJZmkKCWVsc2UKCQllY2hvICdYWFhYWCBzdG9wL3dhaXRpbmcnCglmaQoKfQoKCmNhc2UgIiQxIiBpbgoJc3RhcnQpCgkJc3RhcnQKCQk7OwoJc3RvcCkKCQlzdG9wCgkJOzsKCXJlc3RhcnQpCgkJc3RvcAoJCXN0YXJ0CgkJOzsKCXN0YXR1cykKCQlzdGF0dXMKCQk7OwoJKikKCQllY2hvICJVc2FnZTogc2VydmljZSBYWFhYWCB7c3RhcnR8c3RvcHxyZXN0YXJ0fHN0YXR1c30iCgkJOzsKZXNhYwpleGl0IDAKCg==', 'base64').toString().split('XXXXX').join(options.name)); + conf.write(Buffer.from('IyEvYmluL3NoCgoKU0NSSVBUPS91c3IvbG9jYWwvbWVzaF9zZXJ2aWNlcy9YWFhYWC9YWFhYWApSVU5BUz1yb290CgpQSURGSUxFPS92YXIvcnVuL1hYWFhYLnBpZApMT0dGSUxFPS92YXIvbG9nL1hYWFhYLmxvZwoKc3RhcnQoKSB7CiAgaWYgWyAtZiAiJFBJREZJTEUiIF0gJiYga2lsbCAtMCAkKGNhdCAiJFBJREZJTEUiKSAyPi9kZXYvbnVsbDsgdGhlbgogICAgZWNobyAnU2VydmljZSBhbHJlYWR5IHJ1bm5pbmcnID4mMgogICAgcmV0dXJuIDEKICBmaQogIGVjaG8gJ1N0YXJ0aW5nIHNlcnZpY2XigKYnID4mMgogIGxvY2FsIENNRD0iJFNDUklQVCB7e1BBUk1TfX0gJj4gXCIkTE9HRklMRVwiICYgZWNobyBcJCEiCiAgc3UgLWMgIiRDTUQiICRSVU5BUyA+ICIkUElERklMRSIKICBlY2hvICdTZXJ2aWNlIHN0YXJ0ZWQnID4mMgp9CgpzdG9wKCkgewogIGlmIFsgISAtZiAiJFBJREZJTEUiIF07IHRoZW4KICAgIGVjaG8gJ1NlcnZpY2Ugbm90IHJ1bm5pbmcnID4mMgogICAgcmV0dXJuIDEKICBlbHNlCglwaWQ9JCggY2F0ICIkUElERklMRSIgKQoJaWYga2lsbCAtMCAkcGlkIDI+L2Rldi9udWxsOyB0aGVuCiAgICAgIGVjaG8gJ1N0b3BwaW5nIHNlcnZpY2XigKYnID4mMgogICAgICBraWxsIC0xNiAkcGlkCiAgICAgIGVjaG8gJ1NlcnZpY2Ugc3RvcHBlZCcgPiYyCgllbHNlCgkgIGVjaG8gJ1NlcnZpY2Ugbm90IHJ1bm5pbmcnCglmaQoJcm0gLWYgJCJQSURGSUxFIgogIGZpCn0KcmVzdGFydCgpewoJc3RvcAoJc3RhcnQKfQpzdGF0dXMoKXsKCWlmIFsgLWYgIiRQSURGSUxFIiBdCgl0aGVuCgkJcGlkPSQoIGNhdCAiJFBJREZJTEUiICkKCQlpZiBraWxsIC0wICRwaWQgMj4vZGV2L251bGw7IHRoZW4KCQkJZWNobyAiWFhYWFggc3RhcnQvcnVubmluZywgcHJvY2VzcyAkcGlkIgoJCWVsc2UKCQkJZWNobyAnWFhYWFggc3RvcC93YWl0aW5nJwoJCWZpCgllbHNlCgkJZWNobyAnWFhYWFggc3RvcC93YWl0aW5nJwoJZmkKCn0KCgpjYXNlICIkMSIgaW4KCXN0YXJ0KQoJCXN0YXJ0CgkJOzsKCXN0b3ApCgkJc3RvcAoJCTs7CglyZXN0YXJ0KQoJCXN0b3AKCQlzdGFydAoJCTs7CglzdGF0dXMpCgkJc3RhdHVzCgkJOzsKCSopCgkJZWNobyAiVXNhZ2U6IHNlcnZpY2UgWFhYWFgge3N0YXJ0fHN0b3B8cmVzdGFydHxzdGF0dXN9IgoJCTs7CmVzYWMKZXhpdCAwCgo=', 'base64').toString().split('XXXXX').join(options.name).replace('{{PARMS}}', parameters)); conf.end(); m = require('fs').statSync('/etc/init.d/' + options.name).mode;