import * as plugins from "./smartnginx.plugins"; import * as paths from "./smartnginx.paths"; import { NginxConfig } from "./smartnginx.classes.nginxconfig"; import { NginxHost } from "./smartnginx.classes.nginxhost"; /** * manages a nginxprocess for an NginxConfig */ export class NginxProcess { started: boolean = false; nginxConfig:NginxConfig; nginxChildProcess: plugins.childProcess.ChildProcess; constructor(nginxConfigArg) { this.nginxConfig = nginxConfigArg; }; /** * start nginx */ start() { let done = plugins.q.defer(); if (typeof this.nginxChildProcess == "undefined"){ this.nginxChildProcess = plugins.childProcess.exec(`nginx -c ${paths.nginxConfFile}`, function (error, stdout, stderr) { console.log(`stdout: ${stdout}`); console.log(`stderr: ${stderr}`); if (error !== null) { console.log(`exec error: ${error}`); }; }); }; this.started = true; plugins.beautylog.info("started Nginx!"); done.resolve(); return done.promise; }; /** * reload config */ reloadConfig(){ let done = plugins.q.defer(); if(this.started == false){ this.start(); } else { plugins.shelljs.exec("nginx -s reload"); }; plugins.beautylog.ok("NginxProcess has loaded the new config!") done.resolve(); return done.promise; }; /** * stop the nginx instance */ stop() { let done = plugins.q.defer(); if (typeof this.nginxChildProcess != "undefined") { plugins.shelljs.exec("nginx -s quit"); this.started = false; plugins.beautylog.info("stopped Nginx!"); } else { plugins.beautylog.log("nginx already stopped!"); }; done.resolve(); return done.promise; }; /** * checks if nginx is in path */ check(): boolean { return; }; }