mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-17 00:33:33 +00:00
Updated OpenRC support
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1138,7 +1138,7 @@ function serviceManager()
|
|||||||
child.waitExit();
|
child.waitExit();
|
||||||
return (child.stdout.str.trim() == 'running');
|
return (child.stdout.str.trim() == 'running');
|
||||||
};
|
};
|
||||||
ret.pid = function ()
|
ret.pid = function pid()
|
||||||
{
|
{
|
||||||
var child = require('child_process').execFile('/bin/sh', ['sh']);
|
var child = require('child_process').execFile('/bin/sh', ['sh']);
|
||||||
child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
|
child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
|
||||||
@@ -1322,12 +1322,26 @@ function serviceManager()
|
|||||||
if ((platform == 'init' && require('fs').existsSync('/etc/init.d/' + name)) ||
|
if ((platform == 'init' && require('fs').existsSync('/etc/init.d/' + name)) ||
|
||||||
(platform == 'upstart' && require('fs').existsSync('/etc/init/' + name + '.conf')))
|
(platform == 'upstart' && require('fs').existsSync('/etc/init/' + name + '.conf')))
|
||||||
{
|
{
|
||||||
|
ret.conf = (platform == 'upstart' ? ('/etc/init/' + name + '.conf') : ('/etc/init.d/' + name));
|
||||||
|
ret.serviceType = platform;
|
||||||
if (platform == 'init')
|
if (platform == 'init')
|
||||||
{
|
{
|
||||||
Object.defineProperty(ret, 'OpenRC', { value: require('fs').existsSync('/sbin/openrc-run') });
|
Object.defineProperty(ret, 'OpenRC', { value: require('fs').existsSync('/sbin/openrc-run') });
|
||||||
|
if(ret.OpenRC)
|
||||||
|
{
|
||||||
|
Object.defineProperty(ret, '_autorestart', {
|
||||||
|
value: (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 ' + ret.conf + ' | grep "^\\s*supervisor=\\"supervise-daemon\\""\nexit\n');
|
||||||
|
child.waitExit();
|
||||||
|
return (child.stdout.str.trim() != '');
|
||||||
|
})()
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ret.conf = (platform == 'upstart' ? ('/etc/init/' + name + '.conf') : ('/etc/init.d/' + name));
|
|
||||||
ret.serviceType = platform;
|
|
||||||
Object.defineProperty(ret, "startType",
|
Object.defineProperty(ret, "startType",
|
||||||
{
|
{
|
||||||
get: function ()
|
get: function ()
|
||||||
@@ -1381,7 +1395,7 @@ function serviceManager()
|
|||||||
{
|
{
|
||||||
if (this.OpenRC)
|
if (this.OpenRC)
|
||||||
{
|
{
|
||||||
if (this.startType == 'AUTO_START')
|
if (this._autorestart)
|
||||||
{
|
{
|
||||||
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');
|
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');
|
||||||
}
|
}
|
||||||
@@ -1414,6 +1428,7 @@ function serviceManager()
|
|||||||
|
|
||||||
}
|
}
|
||||||
child.waitExit();
|
child.waitExit();
|
||||||
|
if (child.stdout.str.trim() == '') { return ('/'); }
|
||||||
return (child.stdout.str.trim());
|
return (child.stdout.str.trim());
|
||||||
};
|
};
|
||||||
ret.appWorkingDirectory.platform = platform;
|
ret.appWorkingDirectory.platform = platform;
|
||||||
@@ -1589,12 +1604,19 @@ function serviceManager()
|
|||||||
};
|
};
|
||||||
if (ret.OpenRC)
|
if (ret.OpenRC)
|
||||||
{
|
{
|
||||||
ret.pid = function ()
|
ret.pid = function pid()
|
||||||
{
|
{
|
||||||
var child = require('child_process').execFile('/bin/sh', ['sh']);
|
var child = require('child_process').execFile('/bin/sh', ['sh']);
|
||||||
child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
|
child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
|
||||||
child.stderr.on('data', function () { });
|
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");
|
if (this._autorestart)
|
||||||
|
{
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
child.stdin.write('cat /var/run/' + this.name + '.pid\nexit\n');
|
||||||
|
}
|
||||||
child.waitExit();
|
child.waitExit();
|
||||||
return (parseInt(child.stdout.str.trim()));
|
return (parseInt(child.stdout.str.trim()));
|
||||||
}
|
}
|
||||||
@@ -2326,8 +2348,18 @@ function serviceManager()
|
|||||||
conf.write('name="' + options.name + '"\n');
|
conf.write('name="' + options.name + '"\n');
|
||||||
conf.write('command="' + options.installPath + options.target + '"\n');
|
conf.write('command="' + options.installPath + options.target + '"\n');
|
||||||
conf.write('command_args="' + parameters.split('"').join('\\"') + '"\n');
|
conf.write('command_args="' + parameters.split('"').join('\\"') + '"\n');
|
||||||
conf.write('supervisor="supervise-daemon"\n');
|
if (options.failureRestart == null || options.failureRestart > 0)
|
||||||
conf.write('supervise_daemon_args="--chdir \\"' + options.installPath + '\\""\n\n');
|
{
|
||||||
|
// Auto Crash Restart
|
||||||
|
conf.write('supervisor="supervise-daemon"\n');
|
||||||
|
conf.write('supervise_daemon_args="--chdir \\"' + options.installPath + '\\""\n\n');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// No Auto Crash Restartclear
|
||||||
|
conf.write('command_background=true\n');
|
||||||
|
conf.write('start_stop_daemon_args="--chdir \\"' + options.installPath + '\\""\n\n');
|
||||||
|
}
|
||||||
conf.write('depend() {\n');
|
conf.write('depend() {\n');
|
||||||
conf.write(' want net\n');
|
conf.write(' want net\n');
|
||||||
conf.write('}\n');
|
conf.write('}\n');
|
||||||
|
|||||||
Reference in New Issue
Block a user