mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-04-13 13:22:58 +00:00
Starting and stopping gns3server in local-server.js manager
This commit is contained in:
parent
6c7196c0be
commit
06bda9fc79
@ -1,39 +1,71 @@
|
||||
const { spawn } = require('child_process');
|
||||
const kill = require('tree-kill');
|
||||
|
||||
servers = [
|
||||
{
|
||||
name: 'my-local',
|
||||
path: 'c:\\Program Files\\GNS3\\gns3server.EXE'
|
||||
}
|
||||
]
|
||||
let runningServers = {};
|
||||
|
||||
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}'`);
|
||||
const process = spawn(server.path);
|
||||
|
||||
let serverProcess = spawn(server.path, getServerArguments(server));
|
||||
|
||||
process.on('exit', () => {
|
||||
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() {
|
||||
await run(servers[0]);
|
||||
await run({
|
||||
name: 'my-local',
|
||||
path: 'c:\\Program Files\\GNS3\\gns3server.EXE',
|
||||
port: 3080
|
||||
}, {
|
||||
logStdout: true
|
||||
});
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
@ -61,14 +61,14 @@
|
||||
"material-design-icons": "^3.0.1",
|
||||
"ng2-file-upload": "^1.3.0",
|
||||
"ngx-electron": "^2.0.0",
|
||||
"node-fetch": "^2.3.0",
|
||||
"notosans-fontface": "^1.1.0",
|
||||
"raven-js": "^3.27.0",
|
||||
"rxjs": "^6.3.3",
|
||||
"rxjs-compat": "^6.3.3",
|
||||
"typeface-roboto": "^0.0.54",
|
||||
"yargs": "^12.0.5",
|
||||
"zone.js": "^0.8.26",
|
||||
"node-fetch": "^2.3.0"
|
||||
"zone.js": "^0.8.26"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "~0.11.4",
|
||||
@ -97,6 +97,7 @@
|
||||
"prettier": "^1.15.2",
|
||||
"protractor": "~5.4.2",
|
||||
"replace": "^1.0.1",
|
||||
"tree-kill": "^1.2.1",
|
||||
"ts-mockito": "^2.3.1",
|
||||
"ts-node": "~7.0.1",
|
||||
"tslint": "~5.12.0",
|
||||
|
Loading…
x
Reference in New Issue
Block a user