mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-06-17 14:28:13 +00:00
Starting and stopping gns3server in local-server.js manager
This commit is contained in:
@ -1,39 +1,71 @@
|
|||||||
const { spawn } = require('child_process');
|
const { spawn } = require('child_process');
|
||||||
|
const kill = require('tree-kill');
|
||||||
|
|
||||||
servers = [
|
let runningServers = {};
|
||||||
{
|
|
||||||
name: 'my-local',
|
|
||||||
path: 'c:\\Program Files\\GNS3\\gns3server.EXE'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
function getServerArguments(server, overrides) {
|
||||||
|
let serverArguments = [];
|
||||||
|
return serverArguments;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function stopAll() {
|
||||||
|
Object.keys(runningServers).forEach(async (serverName) => {
|
||||||
|
await stop(serverName);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function stop(serverName) {
|
||||||
|
const runningServer = runningServers[serverName];
|
||||||
|
const pid = runningServer.process.pid;
|
||||||
|
console.log(`Stopping '${serverName}' with PID='${pid}'`);
|
||||||
|
kill(pid, (error) => {
|
||||||
|
if(error) {
|
||||||
|
console.error(`Error occured during stopping '${serverName}' with PID='${pid}'`);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(`Stopped '${serverName}' with PID='${pid}'`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function run(server, options) {
|
||||||
|
const logStdout = options.logStdout || false;
|
||||||
|
|
||||||
async function run(server) {
|
|
||||||
console.log(`Running '${server.path}'`);
|
console.log(`Running '${server.path}'`);
|
||||||
const process = spawn(server.path);
|
|
||||||
|
|
||||||
process.on('exit', () => {
|
let serverProcess = spawn(server.path, getServerArguments(server));
|
||||||
console.log(`Process has exited`);
|
|
||||||
|
runningServers[server.name] = {
|
||||||
|
process: serverProcess
|
||||||
|
};
|
||||||
|
|
||||||
|
serverProcess.stdout.on('data', function(data) {
|
||||||
|
if(logStdout) {
|
||||||
|
console.log(data.toString());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
process.on('close', (code) => {
|
|
||||||
console.log(`child process exited with code ${code}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
process.stdout.on('data', (data) => {
|
|
||||||
console.log(`stdout: ${data}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
process.stderr.on('data', (data) => {
|
|
||||||
console.log(`stderr: ${data}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
await run(servers[0]);
|
await run({
|
||||||
|
name: 'my-local',
|
||||||
|
path: 'c:\\Program Files\\GNS3\\gns3server.EXE',
|
||||||
|
port: 3080
|
||||||
|
}, {
|
||||||
|
logStdout: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (require.main === module) {
|
if (require.main === module) {
|
||||||
|
process.on('SIGINT', function() {
|
||||||
|
console.log("Caught interrupt signal");
|
||||||
|
stopAll();
|
||||||
|
});
|
||||||
|
|
||||||
|
process.on('unhandledRejection', (reason, promise) => {
|
||||||
|
console.log(`UnhandledRejection occured 'reason'`);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
|
||||||
main();
|
main();
|
||||||
}
|
}
|
@ -61,14 +61,14 @@
|
|||||||
"material-design-icons": "^3.0.1",
|
"material-design-icons": "^3.0.1",
|
||||||
"ng2-file-upload": "^1.3.0",
|
"ng2-file-upload": "^1.3.0",
|
||||||
"ngx-electron": "^2.0.0",
|
"ngx-electron": "^2.0.0",
|
||||||
|
"node-fetch": "^2.3.0",
|
||||||
"notosans-fontface": "^1.1.0",
|
"notosans-fontface": "^1.1.0",
|
||||||
"raven-js": "^3.27.0",
|
"raven-js": "^3.27.0",
|
||||||
"rxjs": "^6.3.3",
|
"rxjs": "^6.3.3",
|
||||||
"rxjs-compat": "^6.3.3",
|
"rxjs-compat": "^6.3.3",
|
||||||
"typeface-roboto": "^0.0.54",
|
"typeface-roboto": "^0.0.54",
|
||||||
"yargs": "^12.0.5",
|
"yargs": "^12.0.5",
|
||||||
"zone.js": "^0.8.26",
|
"zone.js": "^0.8.26"
|
||||||
"node-fetch": "^2.3.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "~0.11.4",
|
"@angular-devkit/build-angular": "~0.11.4",
|
||||||
@ -97,6 +97,7 @@
|
|||||||
"prettier": "^1.15.2",
|
"prettier": "^1.15.2",
|
||||||
"protractor": "~5.4.2",
|
"protractor": "~5.4.2",
|
||||||
"replace": "^1.0.1",
|
"replace": "^1.0.1",
|
||||||
|
"tree-kill": "^1.2.1",
|
||||||
"ts-mockito": "^2.3.1",
|
"ts-mockito": "^2.3.1",
|
||||||
"ts-node": "~7.0.1",
|
"ts-node": "~7.0.1",
|
||||||
"tslint": "~5.12.0",
|
"tslint": "~5.12.0",
|
||||||
|
Reference in New Issue
Block a user