mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-12-22 21:31:35 +03:00
Fixed MeshCentral running as a Windows service.
This commit is contained in:
parent
2429a00907
commit
d28454c5ec
@ -9,7 +9,7 @@
|
|||||||
// If app metrics is available
|
// If app metrics is available
|
||||||
if (process.argv[2] == '--launch') { try { require('appmetrics-dash').monitor({ url: '/', title: 'MeshCentral', port: 88, host: '127.0.0.1' }); } catch (e) { } }
|
if (process.argv[2] == '--launch') { try { require('appmetrics-dash').monitor({ url: '/', title: 'MeshCentral', port: 88, host: '127.0.0.1' }); } catch (e) { } }
|
||||||
|
|
||||||
function CreateMeshCentralServer(config) {
|
function CreateMeshCentralServer(config, args) {
|
||||||
var obj = {};
|
var obj = {};
|
||||||
obj.db;
|
obj.db;
|
||||||
obj.webserver;
|
obj.webserver;
|
||||||
@ -27,7 +27,7 @@ function CreateMeshCentralServer(config) {
|
|||||||
obj.crypto = require('crypto');
|
obj.crypto = require('crypto');
|
||||||
obj.exeHandler = require('./exeHandler.js');
|
obj.exeHandler = require('./exeHandler.js');
|
||||||
obj.platform = require('os').platform();
|
obj.platform = require('os').platform();
|
||||||
obj.args = require('minimist')(process.argv.slice(2));
|
obj.args = args;
|
||||||
obj.common = require('./common.js');
|
obj.common = require('./common.js');
|
||||||
obj.certificates = null;
|
obj.certificates = null;
|
||||||
obj.connectivityByNode = {}; // This object keeps a list of all connected CIRA and agents, by nodeid->value (value: 1 = Agent, 2 = CIRA, 4 = AmtDirect)
|
obj.connectivityByNode = {}; // This object keeps a list of all connected CIRA and agents, by nodeid->value (value: 1 = Agent, 2 = CIRA, 4 = AmtDirect)
|
||||||
@ -108,7 +108,7 @@ function CreateMeshCentralServer(config) {
|
|||||||
if ((obj.service != null) && ((obj.args.install == true) || (obj.args.uninstall == true) || (obj.args.start == true) || (obj.args.stop == true) || (obj.args.restart == true))) {
|
if ((obj.service != null) && ((obj.args.install == true) || (obj.args.uninstall == true) || (obj.args.start == true) || (obj.args.stop == true) || (obj.args.restart == true))) {
|
||||||
var env = [], xenv = ['user', 'port', 'aliasport', 'mpsport', 'mpsaliasport', 'redirport', 'exactport', 'debug'];
|
var env = [], xenv = ['user', 'port', 'aliasport', 'mpsport', 'mpsaliasport', 'redirport', 'exactport', 'debug'];
|
||||||
for (var i in xenv) { if (obj.args[xenv[i]] != null) { env.push({ name: 'mesh' + xenv[i], value: obj.args[xenv[i]] }); } } // Set some args as service environement variables.
|
for (var i in xenv) { if (obj.args[xenv[i]] != null) { env.push({ name: 'mesh' + xenv[i], value: obj.args[xenv[i]] }); } } // Set some args as service environement variables.
|
||||||
var svc = new obj.service({ name: 'MeshCentral', description: 'MeshCentral Remote Management Server', script: obj.path.join(__dirname, 'meshcentral.js'), env: env, wait: 2, grow: .5 });
|
var svc = new obj.service({ name: 'MeshCentral', description: 'MeshCentral Remote Management Server', script: obj.path.join(__dirname, 'winservice.js'), env: env, wait: 2, grow: .5 });
|
||||||
svc.on('install', function () { console.log('MeshCentral service installed.'); svc.start(); });
|
svc.on('install', function () { console.log('MeshCentral service installed.'); svc.start(); });
|
||||||
svc.on('uninstall', function () { console.log('MeshCentral service uninstalled.'); process.exit(); });
|
svc.on('uninstall', function () { console.log('MeshCentral service uninstalled.'); process.exit(); });
|
||||||
svc.on('start', function () { console.log('MeshCentral service started.'); process.exit(); });
|
svc.on('start', function () { console.log('MeshCentral service started.'); process.exit(); });
|
||||||
@ -196,6 +196,9 @@ function CreateMeshCentralServer(config) {
|
|||||||
obj.performServerCertUpdate = function () { console.log('Updating server certificates...'); process.exit(200); }
|
obj.performServerCertUpdate = function () { console.log('Updating server certificates...'); process.exit(200); }
|
||||||
|
|
||||||
obj.StartEx = function () {
|
obj.StartEx = function () {
|
||||||
|
//var wincmd = require('node-windows');
|
||||||
|
//wincmd.list(function (svc) { console.log(svc); }, true);
|
||||||
|
|
||||||
// Write the server state
|
// Write the server state
|
||||||
obj.updateServerState('state', 'starting');
|
obj.updateServerState('state', 'starting');
|
||||||
|
|
||||||
@ -428,6 +431,7 @@ function CreateMeshCentralServer(config) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
obj.debug(1, 'Server started');
|
obj.debug(1, 'Server started');
|
||||||
|
if (obj.args.nousers == true) { obj.updateServerState('nousers', '1'); }
|
||||||
obj.updateServerState('state', 'running');
|
obj.updateServerState('state', 'running');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -1110,18 +1114,26 @@ process.on('SIGINT', function () { if (meshserver != null) { meshserver.Stop();
|
|||||||
|
|
||||||
// Load the really basic modules
|
// Load the really basic modules
|
||||||
var meshserver = null;
|
var meshserver = null;
|
||||||
InstallModules(['minimist'], function () {
|
function mainStart(args) {
|
||||||
// Get the server configuration
|
InstallModules(['minimist'], function () {
|
||||||
var config = getConfig();
|
// Get the server configuration
|
||||||
if (config == null) { process.exit(); }
|
var config = getConfig();
|
||||||
|
if (config == null) { process.exit(); }
|
||||||
|
|
||||||
// Build the list of required modules
|
// Build the list of required modules
|
||||||
var modules = ['ws', 'nedb', 'https', 'unzip', 'xmldom', 'express', 'archiver', 'multiparty', 'node-forge', 'express-ws', 'compression', 'body-parser', 'connect-redis', 'express-session', 'express-handlebars'];
|
var modules = ['ws', 'nedb', 'https', 'unzip', 'xmldom', 'express', 'archiver', 'multiparty', 'node-forge', 'express-ws', 'compression', 'body-parser', 'connect-redis', 'express-session', 'express-handlebars'];
|
||||||
if (require('os').platform() == 'win32') { modules.push('node-sspi'); modules.push('node-windows'); } // Add Windows modules
|
if (require('os').platform() == 'win32') { modules.push('node-sspi'); modules.push('node-windows'); } // Add Windows modules
|
||||||
if (config.letsencrypt != null) { modules.push('greenlock'); modules.push('le-store-certbot'); modules.push('le-challenge-fs'); modules.push('le-acme-core'); } // Add Greenlock Modules
|
if (config.letsencrypt != null) { modules.push('greenlock'); modules.push('le-store-certbot'); modules.push('le-challenge-fs'); modules.push('le-acme-core'); } // Add Greenlock Modules
|
||||||
if (config.settings.mongodb != null) { modules.push('mongojs'); } // Add MongoDB
|
if (config.settings.mongodb != null) { modules.push('mongojs'); } // Add MongoDB
|
||||||
if (config.smtp != null) { modules.push('nodemailer'); } // Add SMTP support
|
if (config.smtp != null) { modules.push('nodemailer'); } // Add SMTP support
|
||||||
|
|
||||||
// Install any missing modules and launch the server
|
// Install any missing modules and launch the server
|
||||||
InstallModules(modules, function () { meshserver = CreateMeshCentralServer(config); meshserver.Start(); });
|
InstallModules(modules, function () { meshserver = CreateMeshCentralServer(config, args); meshserver.Start(); });
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
mainStart(require('minimist')(process.argv.slice(2))); // Called directly, launch normally.
|
||||||
|
} else {
|
||||||
|
module.exports.mainStart = mainStart; // Required as a module, useful for winservice.js
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "meshcentral",
|
"name": "meshcentral",
|
||||||
"version": "0.1.5-a",
|
"version": "0.1.5-c",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"Remote Management",
|
"Remote Management",
|
||||||
"Intel AMT",
|
"Intel AMT",
|
||||||
|
11
winservice.js
Normal file
11
winservice.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* @description MeshCentral main module
|
||||||
|
* @author Ylian Saint-Hilaire
|
||||||
|
* @copyright Intel Corporation 2018
|
||||||
|
* @license Apache-2.0
|
||||||
|
* @version v0.0.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
// This module is only called when MeshCentral is running as a Windows service.
|
||||||
|
// In this case, we don't want to start a child process, so we launch directly without arguments.
|
||||||
|
require('./meshcentral.js').mainStart({ "launch": true });
|
Loading…
Reference in New Issue
Block a user