mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-15 07:43:50 +00:00
1. Fixed service-manager to include execute permission for user, fixing issue with Deepin Linux
2. Added os.Name property
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -2158,6 +2158,96 @@ void ILibDuktape_ScriptContainer_OS_Push(duk_context *ctx, void *chain)
|
|||||||
return(retval);\
|
return(retval);\
|
||||||
};\
|
};\
|
||||||
}\
|
}\
|
||||||
|
exports.Name = (function Name()\
|
||||||
|
{\
|
||||||
|
var child;\
|
||||||
|
switch (process.platform)\
|
||||||
|
{\
|
||||||
|
case 'freebsd':\
|
||||||
|
case 'linux':\
|
||||||
|
case 'darwin':\
|
||||||
|
child = require('child_process').execFile('/bin/sh', ['sh']);\
|
||||||
|
break;\
|
||||||
|
case 'win32':\
|
||||||
|
child = require('child_process').execFile('%windir%\\\\system32\\\\cmd.exe');\
|
||||||
|
break;\
|
||||||
|
}\
|
||||||
|
child.stdout.str=''; child.stdout.on('data', function(chunk) { this.str += chunk.toString(); });\
|
||||||
|
switch (process.platform)\
|
||||||
|
{\
|
||||||
|
case 'linux':\
|
||||||
|
child.stdin.write('cat /etc/*release\\nexit\\n');\
|
||||||
|
break;\
|
||||||
|
case 'darwin':\
|
||||||
|
child.stdin.write('sw_vers\\nexit\\n');\
|
||||||
|
break;\
|
||||||
|
case 'win32':\
|
||||||
|
child.stdin.write('exit\\r\\n');\
|
||||||
|
break;\
|
||||||
|
case 'freebsd':\
|
||||||
|
child.stdin.write('uname -mrs\\nexit\\n');\
|
||||||
|
break;\
|
||||||
|
}\
|
||||||
|
child.waitExit();\
|
||||||
|
var ret=null;\
|
||||||
|
var lines;\
|
||||||
|
var tokens;\
|
||||||
|
var i, j;\
|
||||||
|
switch (process.platform)\
|
||||||
|
{\
|
||||||
|
case 'win32':\
|
||||||
|
var winstr = child.stdout.str.split('\\r\\n')[0];\
|
||||||
|
if(require('user-sessions').isRoot())\
|
||||||
|
{\
|
||||||
|
try\
|
||||||
|
{\
|
||||||
|
winstr = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion', 'ProductName') + ' - ' +\
|
||||||
|
require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion', 'ReleaseID') + ' ' + winstr.substring(winstr.indexOf('['));\
|
||||||
|
}\
|
||||||
|
catch(xx) {}\
|
||||||
|
}\
|
||||||
|
ret = winstr;\
|
||||||
|
break;\
|
||||||
|
case 'linux':\
|
||||||
|
lines = child.stdout.str.split('\\n');\
|
||||||
|
for (i in lines)\
|
||||||
|
{\
|
||||||
|
tokens = lines[i].split('=');\
|
||||||
|
if (tokens[0] == 'PRETTY_NAME')\
|
||||||
|
{\
|
||||||
|
if(ret==null) { ret = (tokens[1].substring(1, tokens[1].length - 1)); }\
|
||||||
|
break;\
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
for (i in lines)\
|
||||||
|
{\
|
||||||
|
tokens = lines[i].split('=');\
|
||||||
|
if (tokens[0] == 'DISTRIB_DESCRIPTION')\
|
||||||
|
{\
|
||||||
|
if(ret==null) { ret = (tokens[1].substring(1, tokens[1].length - 1)); }\
|
||||||
|
break;\
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
if(ret==null) { ret = (lines[0]);}\
|
||||||
|
break;\
|
||||||
|
case 'darwin':\
|
||||||
|
var OSNAME = '';\
|
||||||
|
var OSVERSION = '';\
|
||||||
|
lines = child.stdout.str.split('\\n');\
|
||||||
|
for (i in lines)\
|
||||||
|
{\
|
||||||
|
tokens = lines[i].split(':');\
|
||||||
|
if (tokens[0] == 'ProductName') { OSNAME = tokens[1].trim(); }\
|
||||||
|
if (tokens[0] == 'ProductVersion') { OSVERSION = tokens[1].trim(); }\
|
||||||
|
}\
|
||||||
|
ret = (OSNAME + ' ' + OSVERSION);\
|
||||||
|
break;\
|
||||||
|
case 'freebsd':\
|
||||||
|
ret = (child.stdout.str.trim());\
|
||||||
|
break;\
|
||||||
|
}\
|
||||||
|
return(ret);\
|
||||||
|
})();\
|
||||||
exports.name = function name()\
|
exports.name = function name()\
|
||||||
{\
|
{\
|
||||||
var promise = require('promise');\
|
var promise = require('promise');\
|
||||||
|
|||||||
@@ -1698,7 +1698,7 @@ function serviceManager()
|
|||||||
if (!require('fs').existsSync('/usr/local/mesh_services/' + options.name)) { require('fs').mkdirSync('/usr/local/mesh_services/' + options.name); }
|
if (!require('fs').existsSync('/usr/local/mesh_services/' + options.name)) { require('fs').mkdirSync('/usr/local/mesh_services/' + options.name); }
|
||||||
require('fs').copyFileSync(options.servicePath, '/usr/local/mesh_services/' + options.name + '/' + options.target);
|
require('fs').copyFileSync(options.servicePath, '/usr/local/mesh_services/' + options.name + '/' + options.target);
|
||||||
var bm = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
var bm = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
||||||
bm |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP);
|
bm |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH);
|
||||||
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, bm);
|
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, bm);
|
||||||
|
|
||||||
var rc = require('fs').createWriteStream('/usr/local/etc/rc.d/' + options.name, { flags: 'wb' });
|
var rc = require('fs').createWriteStream('/usr/local/etc/rc.d/' + options.name, { flags: 'wb' });
|
||||||
@@ -1719,7 +1719,7 @@ function serviceManager()
|
|||||||
rc.write('run_rc_command "$1"\n');
|
rc.write('run_rc_command "$1"\n');
|
||||||
rc.end();
|
rc.end();
|
||||||
var m = require('fs').statSync('/usr/local/etc/rc.d/' + options.name).mode;
|
var m = require('fs').statSync('/usr/local/etc/rc.d/' + options.name).mode;
|
||||||
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP);
|
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH);
|
||||||
require('fs').chmodSync('/usr/local/etc/rc.d/' + options.name, m);
|
require('fs').chmodSync('/usr/local/etc/rc.d/' + options.name, m);
|
||||||
}
|
}
|
||||||
if(process.platform == 'linux')
|
if(process.platform == 'linux')
|
||||||
@@ -1739,7 +1739,8 @@ function serviceManager()
|
|||||||
console.log('copying ' + options.servicePath);
|
console.log('copying ' + options.servicePath);
|
||||||
|
|
||||||
var m = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
var m = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
||||||
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP);
|
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH);
|
||||||
|
|
||||||
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, m);
|
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, m);
|
||||||
|
|
||||||
if (options.failureRestart == null || options.failureRestart > 0)
|
if (options.failureRestart == null || options.failureRestart > 0)
|
||||||
@@ -1755,7 +1756,7 @@ function serviceManager()
|
|||||||
conf.end();
|
conf.end();
|
||||||
|
|
||||||
m = require('fs').statSync('/etc/init.d/' + options.name).mode;
|
m = require('fs').statSync('/etc/init.d/' + options.name).mode;
|
||||||
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP);
|
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH);
|
||||||
require('fs').chmodSync('/etc/init.d/' + options.name, m);
|
require('fs').chmodSync('/etc/init.d/' + options.name, m);
|
||||||
switch (options.startType)
|
switch (options.startType)
|
||||||
{
|
{
|
||||||
@@ -1779,7 +1780,7 @@ function serviceManager()
|
|||||||
console.log('copying ' + options.servicePath);
|
console.log('copying ' + options.servicePath);
|
||||||
|
|
||||||
var m = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
var m = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
||||||
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP);
|
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH);
|
||||||
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, m);
|
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, m);
|
||||||
|
|
||||||
conf = require('fs').createWriteStream('/etc/init/' + options.name + '.conf', { flags: 'wb' });
|
conf = require('fs').createWriteStream('/etc/init/' + options.name + '.conf', { flags: 'wb' });
|
||||||
@@ -1812,7 +1813,7 @@ function serviceManager()
|
|||||||
require('fs').copyFileSync(options.servicePath, '/usr/local/mesh_services/' + options.name + '/' + options.target);
|
require('fs').copyFileSync(options.servicePath, '/usr/local/mesh_services/' + options.name + '/' + options.target);
|
||||||
|
|
||||||
var m = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
var m = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
||||||
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP);
|
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH);
|
||||||
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, m);
|
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, m);
|
||||||
|
|
||||||
if (require('fs').existsSync('/lib/systemd/system'))
|
if (require('fs').existsSync('/lib/systemd/system'))
|
||||||
@@ -1890,7 +1891,7 @@ function serviceManager()
|
|||||||
require('fs').copyFileSync(options.servicePath, '/usr/local/mesh_daemons/' + options.name + '/' + options.target);
|
require('fs').copyFileSync(options.servicePath, '/usr/local/mesh_daemons/' + options.name + '/' + options.target);
|
||||||
|
|
||||||
var m = require('fs').statSync('/usr/local/mesh_daemons/' + options.name + '/' + options.target).mode;
|
var m = require('fs').statSync('/usr/local/mesh_daemons/' + options.name + '/' + options.target).mode;
|
||||||
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP);
|
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH);
|
||||||
require('fs').chmodSync('/usr/local/mesh_daemons/' + options.name + '/' + options.target, m);
|
require('fs').chmodSync('/usr/local/mesh_daemons/' + options.name + '/' + options.target, m);
|
||||||
|
|
||||||
conf = require('fs').createWriteStream('/usr/local/mesh_daemons/' + options.name + '.service', { flags: 'wb' });
|
conf = require('fs').createWriteStream('/usr/local/mesh_daemons/' + options.name + '.service', { flags: 'wb' });
|
||||||
@@ -1974,7 +1975,7 @@ function serviceManager()
|
|||||||
}
|
}
|
||||||
require('fs').writeFileSync('/Library/LaunchDaemons/' + options.name + '.plist', plist);
|
require('fs').writeFileSync('/Library/LaunchDaemons/' + options.name + '.plist', plist);
|
||||||
var m = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
var m = require('fs').statSync('/usr/local/mesh_services/' + options.name + '/' + options.target).mode;
|
||||||
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP);
|
m |= (require('fs').CHMOD_MODES.S_IXUSR | require('fs').CHMOD_MODES.S_IXGRP | require('fs').CHMOD_MODES.S_IXOTH);
|
||||||
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, m);
|
require('fs').chmodSync('/usr/local/mesh_services/' + options.name + '/' + options.target, m);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user