From ca2ff3481e72952aacde181c46b013c2567c8c8c Mon Sep 17 00:00:00 2001 From: PhilKunz Date: Mon, 25 Jul 2016 01:54:36 +0200 Subject: [PATCH] now working as intended --- .gitlab-ci.yml | 4 ++ dist/index.d.ts | 3 +- dist/index.js | 7 +-- dist/smartnginx.classes.nginxconfig.d.ts | 4 +- dist/smartnginx.classes.nginxconfig.js | 22 +++---- dist/smartnginx.classes.nginxprocess.d.ts | 26 ++++++++ dist/smartnginx.classes.nginxprocess.js | 75 +++++++++++++++++++++++ dist/smartnginx.classes.nginxzone.js | 2 +- dist/smartnginx.command.d.ts | 19 ------ dist/smartnginx.command.js | 53 ---------------- dist/smartnginx.paths.d.ts | 1 + dist/smartnginx.paths.js | 5 +- package.json | 6 +- test/test.js | 5 +- test/test.ts | 3 +- ts/index.ts | 7 +-- ts/smartnginx.classes.nginxconfig.ts | 57 ++++++++--------- ts/smartnginx.classes.nginxprocess.ts | 70 +++++++++++++++++++++ ts/smartnginx.classes.nginxzone.ts | 31 +++++----- ts/smartnginx.command.ts | 59 ------------------ ts/smartnginx.paths.ts | 6 +- 21 files changed, 258 insertions(+), 207 deletions(-) create mode 100644 dist/smartnginx.classes.nginxprocess.d.ts create mode 100644 dist/smartnginx.classes.nginxprocess.js delete mode 100644 dist/smartnginx.command.d.ts delete mode 100644 dist/smartnginx.command.js create mode 100644 ts/smartnginx.classes.nginxprocess.ts delete mode 100644 ts/smartnginx.command.ts diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e949b71..3db05f6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,9 @@ stages: - test - release +before_script: + - "apt-get update && apt-get install nginx -y" + testLEGACY: stage: test script: @@ -28,6 +31,7 @@ testSTABLE: release: stage: release + environment: npmjs-com_registry script: - npmci publish only: diff --git a/dist/index.d.ts b/dist/index.d.ts index 6b76b40..d287fe4 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,4 +1,3 @@ -import * as CommandModule from "./smartnginx.command"; export { NginxConfig } from "./smartnginx.classes.nginxconfig"; +export { NginxProcess } from "./smartnginx.classes.nginxprocess"; export { NginxZone, zoneTypes } from "./smartnginx.classes.nginxzone"; -export declare let command: typeof CommandModule; diff --git a/dist/index.js b/dist/index.js index b9f3cbd..7cbddb2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,11 +1,10 @@ "use strict"; -const CommandModule = require("./smartnginx.command"); // classes var smartnginx_classes_nginxconfig_1 = require("./smartnginx.classes.nginxconfig"); exports.NginxConfig = smartnginx_classes_nginxconfig_1.NginxConfig; +var smartnginx_classes_nginxprocess_1 = require("./smartnginx.classes.nginxprocess"); +exports.NginxProcess = smartnginx_classes_nginxprocess_1.NginxProcess; var smartnginx_classes_nginxzone_1 = require("./smartnginx.classes.nginxzone"); exports.NginxZone = smartnginx_classes_nginxzone_1.NginxZone; exports.zoneTypes = smartnginx_classes_nginxzone_1.zoneTypes; -// exports -exports.command = CommandModule; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsTUFBWSxhQUFhLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUV0RCxVQUFVO0FBQ1YsK0NBQTBCLGtDQUFrQyxDQUFDO0FBQXJELG1FQUFxRDtBQUM3RCw2Q0FBa0MsZ0NBQWdDLENBQUM7QUFBM0QsNkRBQVM7QUFBQyw2REFBaUQ7QUFFbkUsVUFBVTtBQUNDLGVBQU8sR0FBRyxhQUFhLENBQUMifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsVUFBVTtBQUNWLCtDQUEwQixrQ0FBa0MsQ0FBQztBQUFyRCxtRUFBcUQ7QUFDN0QsZ0RBQTJCLG1DQUFtQyxDQUFDO0FBQXZELHNFQUF1RDtBQUMvRCw2Q0FBa0MsZ0NBQWdDLENBQUM7QUFBM0QsNkRBQVM7QUFBQyw2REFBaUQifQ== \ No newline at end of file diff --git a/dist/smartnginx.classes.nginxconfig.d.ts b/dist/smartnginx.classes.nginxconfig.d.ts index a47a24e..9b0a117 100644 --- a/dist/smartnginx.classes.nginxconfig.d.ts +++ b/dist/smartnginx.classes.nginxconfig.d.ts @@ -1,14 +1,16 @@ /// import * as plugins from "./smartnginx.plugins"; import { NginxZone } from "./smartnginx.classes.nginxzone"; +import { NginxProcess } from "./smartnginx.classes.nginxprocess"; export declare class NginxConfig { zones: NginxZone[]; cert: plugins.cert.Cert; + nginxProcess: NginxProcess; isDeployed: boolean; constructor(optionsArg: plugins.cert.ICertConstructorOptions); addZone(zoneArg: NginxZone): void; listZones(): NginxZone[]; removeZones(zoneArg: NginxZone): void; clean(): void; - deploy(nginxRestartArg?: boolean): plugins.q.Promise<{}>; + deploy(): plugins.q.Promise<{}>; } diff --git a/dist/smartnginx.classes.nginxconfig.js b/dist/smartnginx.classes.nginxconfig.js index e61e395..74204a8 100644 --- a/dist/smartnginx.classes.nginxconfig.js +++ b/dist/smartnginx.classes.nginxconfig.js @@ -1,12 +1,13 @@ "use strict"; const plugins = require("./smartnginx.plugins"); const paths = require("./smartnginx.paths"); -const command = require("./smartnginx.command"); const snippets = require("./smartnginx.snippets"); +const smartnginx_classes_nginxprocess_1 = require("./smartnginx.classes.nginxprocess"); let allConfigs = []; class NginxConfig { constructor(optionsArg) { this.zones = []; + this.nginxProcess = new smartnginx_classes_nginxprocess_1.NginxProcess(this); this.isDeployed = false; this.cert = new plugins.cert.Cert({ cfEmail: optionsArg.cfEmail, @@ -31,9 +32,8 @@ class NginxConfig { this.zones = []; } // handle deployment of zones - deploy(nginxRestartArg = false) { + deploy() { let done = plugins.q.defer(); - plugins.smartfile.fs.removeSync(paths.nginxConfigBase); plugins.smartfile.fs.ensureDirSync(paths.nginxConfigBase); plugins.smartfile.fs.ensureDirSync(paths.nginxZoneBase); plugins.smartfile.fs.ensureDirSync(paths.nginxCertBase); @@ -43,20 +43,20 @@ class NginxConfig { ; this.isDeployed = true; // write base config - plugins.smartfile.memory.toFsSync(snippets.getBaseConfigString(), plugins.path.join(paths.nginxConfigBase, "nginx.conf")); + plugins.smartfile.memory.toFsSync(snippets.getBaseConfigString(), paths.nginxConfFile); // deploy zones let promiseArray = []; for (let zone of this.zones) { - promiseArray.push(zone.deploy(this.cert)); + let zoneDeployedPromise = zone.deploy(this.cert); + zoneDeployedPromise.then(() => { + plugins.beautylog.info(`Zone ${zone.zoneName} deployed!`); + this.nginxProcess.reloadConfig(); + }); + promiseArray.push(zoneDeployedPromise); } ; plugins.q.all(promiseArray) .then(() => { - // restart nginx - if (nginxRestartArg) { - command.restart(this); - } - ; done.resolve(); }); return done.promise; @@ -65,4 +65,4 @@ class NginxConfig { } exports.NginxConfig = NginxConfig; ; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRuZ2lueC5jbGFzc2VzLm5naW54Y29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRuZ2lueC5jbGFzc2VzLm5naW54Y29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSxzQkFBc0IsQ0FBQyxDQUFBO0FBQ2hELE1BQVksS0FBSyxXQUFNLG9CQUFvQixDQUFDLENBQUE7QUFDNUMsTUFBWSxPQUFPLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxNQUFZLFFBQVEsV0FBTSx1QkFDMUIsQ0FBQyxDQURnRDtBQUVqRCxJQUFJLFVBQVUsR0FBaUIsRUFBRSxDQUFDO0FBRWxDO0lBSUksWUFBWSxVQUErQztRQUgzRCxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBRXZCLGVBQVUsR0FBVyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzlCLE9BQU8sRUFBQyxVQUFVLENBQUMsT0FBTztZQUMxQixLQUFLLEVBQUMsVUFBVSxDQUFDLEtBQUs7WUFDdEIsTUFBTSxFQUFDLEtBQUssQ0FBQyxhQUFhO1lBQzFCLGFBQWEsRUFBQyxVQUFVLENBQUMsYUFBYTtZQUN0QyxRQUFRLEVBQUMsVUFBVSxDQUFDLFFBQVE7U0FDL0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7SUFFRCxzQkFBc0I7SUFDdEIsT0FBTyxDQUFDLE9BQWlCO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxTQUFTO1FBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQzs7SUFDRCxXQUFXLENBQUMsT0FBaUI7SUFFN0IsQ0FBQztJQUNELEtBQUs7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsNkJBQTZCO0lBQzdCLE1BQU0sQ0FBQyxlQUFlLEdBQVcsS0FBSztRQUNsQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEQsR0FBRyxDQUFBLENBQUMsSUFBSSxNQUFNLElBQUksVUFBVSxDQUFDLENBQUEsQ0FBQztZQUMxQixNQUFNLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO1FBQUEsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLG9CQUFvQjtRQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQzdCLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxFQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFDLFlBQVksQ0FBQyxDQUN4RCxDQUFDO1FBQ0YsZUFBZTtRQUNmLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixHQUFHLENBQUEsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQztZQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUFBLENBQUM7UUFDRixPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7YUFDdEIsSUFBSSxDQUFDO1lBQ0YsZ0JBQWdCO1lBQ2hCLEVBQUUsQ0FBQSxDQUFDLGVBQWUsQ0FBQyxDQUFBLENBQUM7Z0JBQ2hCLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUFBLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFFUCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztBQUNMLENBQUM7QUEzRFksbUJBQVcsY0EyRHZCLENBQUE7QUFBQSxDQUFDIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRuZ2lueC5jbGFzc2VzLm5naW54Y29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRuZ2lueC5jbGFzc2VzLm5naW54Y29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSxzQkFBc0IsQ0FBQyxDQUFBO0FBQ2hELE1BQVksS0FBSyxXQUFNLG9CQUFvQixDQUFDLENBQUE7QUFDNUMsTUFBWSxRQUFRLFdBQU0sdUJBQXVCLENBQUMsQ0FBQTtBQUVsRCxrREFBNkIsbUNBQW1DLENBQUMsQ0FBQTtBQUNqRSxJQUFJLFVBQVUsR0FBa0IsRUFBRSxDQUFDO0FBRW5DO0lBS0ksWUFBWSxVQUFnRDtRQUo1RCxVQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUV4QixpQkFBWSxHQUFpQixJQUFJLDhDQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUV4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDOUIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1lBQzNCLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztZQUN2QixNQUFNLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDM0IsYUFBYSxFQUFFLFVBQVUsQ0FBQyxhQUFhO1lBQ3ZDLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtTQUNoQyxDQUFDLENBQUM7SUFDUCxDQUFDOztJQUVELHNCQUFzQjtJQUN0QixPQUFPLENBQUMsT0FBa0I7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELFNBQVM7UUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDOztJQUNELFdBQVcsQ0FBQyxPQUFrQjtJQUU5QixDQUFDO0lBQ0QsS0FBSztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDRCw2QkFBNkI7SUFDN0IsTUFBTTtRQUNGLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEQsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO1FBQUEsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLG9CQUFvQjtRQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQzdCLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxFQUM5QixLQUFLLENBQUMsYUFBYSxDQUN0QixDQUFDO1FBQ0YsZUFBZTtRQUNmLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELG1CQUFtQixDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxZQUFZLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztZQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUEsQ0FBQztRQUNGLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQzthQUN0QixJQUFJLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFFUCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztBQUNMLENBQUM7QUE1RFksbUJBQVcsY0E0RHZCLENBQUE7QUFBQSxDQUFDIn0= \ No newline at end of file diff --git a/dist/smartnginx.classes.nginxprocess.d.ts b/dist/smartnginx.classes.nginxprocess.d.ts new file mode 100644 index 0000000..2596ca8 --- /dev/null +++ b/dist/smartnginx.classes.nginxprocess.d.ts @@ -0,0 +1,26 @@ +/// +/// +import * as plugins from "./smartnginx.plugins"; +import { NginxConfig } from "./smartnginx.classes.nginxconfig"; +export declare class NginxProcess { + started: boolean; + nginxConfig: NginxConfig; + nginxChildProcess: plugins.childProcess.ChildProcess; + constructor(nginxConfigArg: any); + /** + * start nginx + */ + start(): plugins.q.Promise<{}>; + /** + * reload config + */ + reloadConfig(): plugins.q.Promise<{}>; + /** + * stop the nginx instance + */ + stop(): plugins.q.Promise<{}>; + /** + * checks if nginx is in path + */ + check(): boolean; +} diff --git a/dist/smartnginx.classes.nginxprocess.js b/dist/smartnginx.classes.nginxprocess.js new file mode 100644 index 0000000..c2f2609 --- /dev/null +++ b/dist/smartnginx.classes.nginxprocess.js @@ -0,0 +1,75 @@ +"use strict"; +const plugins = require("./smartnginx.plugins"); +const paths = require("./smartnginx.paths"); +class NginxProcess { + constructor(nginxConfigArg) { + this.started = false; + 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 { + this.nginxChildProcess.kill("SIGHUP"); + } + ; + 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") { + this.nginxChildProcess.kill(); + plugins.beautylog.info("stopped Nginx!"); + } + else { + plugins.beautylog.log("nginx already stopped!"); + } + ; + done.resolve(); + return done.promise; + } + ; + /** + * checks if nginx is in path + */ + check() { + return; + } + ; +} +exports.NginxProcess = NginxProcess; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRuZ2lueC5jbGFzc2VzLm5naW54cHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bmdpbnguY2xhc3Nlcy5uZ2lueHByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDaEQsTUFBWSxLQUFLLFdBQU0sb0JBQW9CLENBQUMsQ0FBQTtBQUk1QztJQUlJLFlBQVksY0FBYztRQUgxQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBSXJCLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO0lBQ3RDLENBQUM7O0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0QsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxXQUFXLENBQUMsQ0FBQSxDQUFDO1lBQzlDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxhQUFhLEVBQUUsRUFBRSxVQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTTtnQkFDakgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7Z0JBQUEsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUFBLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7O0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFBLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2hCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUFBLENBQUM7UUFDRixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO1FBQy9ELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7O0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0EsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUFBLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNELE1BQU0sQ0FBQztJQUNYLENBQUM7O0FBQ0wsQ0FBQztBQWhFWSxvQkFBWSxlQWdFeEIsQ0FBQSJ9 \ No newline at end of file diff --git a/dist/smartnginx.classes.nginxzone.js b/dist/smartnginx.classes.nginxzone.js index b3a8855..38dbc92 100644 --- a/dist/smartnginx.classes.nginxzone.js +++ b/dist/smartnginx.classes.nginxzone.js @@ -29,4 +29,4 @@ class NginxZone { } exports.NginxZone = NginxZone; ; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRuZ2lueC5jbGFzc2VzLm5naW54em9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bmdpbnguY2xhc3Nlcy5uZ2lueHpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDaEQsTUFBWSxLQUFLLFdBQU0sb0JBQW9CLENBQUMsQ0FBQTtBQUU1QyxNQUFZLFFBQVEsV0FBTSx1QkFDMUIsQ0FBQyxDQURnRDtBQUNqRCxXQUFZLFNBQVM7SUFDZCx5REFBWSxDQUFBO0lBQ1osNkNBQU0sQ0FBQTtBQUNiLENBQUMsRUFIVyxpQkFBUyxLQUFULGlCQUFTLFFBR3BCO0FBSEQsSUFBWSxTQUFTLEdBQVQsaUJBR1gsQ0FBQTtBQUVEO0lBS0ksWUFBWSxVQUlYO1FBQ0csSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakcsQ0FBQzs7SUFDRCxNQUFNLENBQUMsZUFBaUM7UUFDcEMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDOUUsY0FBYztRQUNkLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlELFdBQVc7UUFDWCxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztBQUNMLENBQUM7QUF6QlksaUJBQVMsWUF5QnJCLENBQUE7QUFBQSxDQUFDIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRuZ2lueC5jbGFzc2VzLm5naW54em9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bmdpbnguY2xhc3Nlcy5uZ2lueHpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDaEQsTUFBWSxLQUFLLFdBQU0sb0JBQW9CLENBQUMsQ0FBQTtBQUM1QyxNQUFZLFFBQVEsV0FBTSx1QkFDMUIsQ0FBQyxDQURnRDtBQUNqRCxXQUFZLFNBQVM7SUFDakIseURBQVksQ0FBQTtJQUNaLDZDQUFNLENBQUE7QUFDVixDQUFDLEVBSFcsaUJBQVMsS0FBVCxpQkFBUyxRQUdwQjtBQUhELElBQVksU0FBUyxHQUFULGlCQUdYLENBQUE7QUFFRDtJQUtJLFlBQVksVUFJWDtRQUNHLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7O0lBQ0QsTUFBTSxDQUFDLGVBQWtDO1FBQ3JDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQy9FLGNBQWM7UUFDZCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRCxXQUFXO1FBQ1gsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7QUFDTCxDQUFDO0FBekJZLGlCQUFTLFlBeUJyQixDQUFBO0FBQUEsQ0FBQyJ9 \ No newline at end of file diff --git a/dist/smartnginx.command.d.ts b/dist/smartnginx.command.d.ts deleted file mode 100644 index de5ff3a..0000000 --- a/dist/smartnginx.command.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// -import * as plugins from "./smartnginx.plugins"; -import { NginxConfig } from "./smartnginx.classes.nginxconfig"; -/** - * starts nginx - */ -export declare let start: (configArg: NginxConfig) => plugins.q.Promise<{}>; -/** - * restarts nginx - */ -export declare let restart: (configArg: NginxConfig) => plugins.q.Promise<{}>; -/** - * stops nginx - */ -export declare let stop: () => plugins.q.Promise<{}>; -/** - * checks if nginx is in path - */ -export declare let check: () => boolean; diff --git a/dist/smartnginx.command.js b/dist/smartnginx.command.js deleted file mode 100644 index 30f7e10..0000000 --- a/dist/smartnginx.command.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; -const plugins = require("./smartnginx.plugins"); -let nginxChildProcess = undefined; // points to the nginx child process -/** - * starts nginx - */ -exports.start = (configArg) => { - let done = plugins.q.defer(); - if (typeof nginxChildProcess == "undefined") { - nginxChildProcess = plugins.childProcess.exec("nginx", function (error, stdout, stderr) { - console.log(`stdout: ${stdout}`); - console.log(`stderr: ${stderr}`); - if (error !== null) { - console.log(`exec error: ${error}`); - } - }); - } - ; - plugins.beautylog.info("started Nginx!"); - done.resolve(); - return done.promise; -}; -/** - * restarts nginx - */ -exports.restart = (configArg) => { - return exports.stop().then(() => { - return exports.start(configArg); - }); -}; -/** - * stops nginx - */ -exports.stop = () => { - let done = plugins.q.defer(); - if (typeof nginxChildProcess != "undefined") { - nginxChildProcess.kill(); - plugins.beautylog.info("stopped Nginx!"); - } - else { - plugins.beautylog.log("nginx already stopped!"); - } - ; - done.resolve(); - return done.promise; -}; -/** - * checks if nginx is in path - */ -exports.check = () => { - return; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRuZ2lueC5jb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRuZ2lueC5jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSxzQkFBc0IsQ0FBQyxDQUFBO0FBS2hELElBQUksaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQUMsb0NBQW9DO0FBR3ZFOztHQUVHO0FBQ1EsYUFBSyxHQUFHLENBQUMsU0FBcUI7SUFDckMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixFQUFFLENBQUEsQ0FBQyxPQUFPLGlCQUFpQixJQUFJLFdBQVcsQ0FBQyxDQUFBLENBQUM7UUFDeEMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFDLFVBQVMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNO1lBQ2hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQUEsQ0FBQztJQUNGLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDUSxlQUFPLEdBQUcsQ0FBQyxTQUFxQjtJQUN2QyxNQUFNLENBQUMsWUFBSSxFQUFFLENBQUMsSUFBSSxDQUNkO1FBQ0ksTUFBTSxDQUFDLGFBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ1EsWUFBSSxHQUFHO0lBQ2QsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixFQUFFLENBQUEsQ0FBQyxPQUFPLGlCQUFpQixJQUFJLFdBQVcsQ0FBQyxDQUFBLENBQUM7UUFDeEMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDUSxhQUFLLEdBQUc7SUFDZixNQUFNLENBQUM7QUFDWCxDQUFDLENBQUMifQ== \ No newline at end of file diff --git a/dist/smartnginx.paths.d.ts b/dist/smartnginx.paths.d.ts index 8e239f8..24503d8 100644 --- a/dist/smartnginx.paths.d.ts +++ b/dist/smartnginx.paths.d.ts @@ -2,3 +2,4 @@ export declare let packageBase: string; export declare let nginxConfigBase: string; export declare let nginxZoneBase: string; export declare let nginxCertBase: string; +export declare let nginxConfFile: string; diff --git a/dist/smartnginx.paths.js b/dist/smartnginx.paths.js index cfef858..50dd9fd 100644 --- a/dist/smartnginx.paths.js +++ b/dist/smartnginx.paths.js @@ -1,7 +1,10 @@ "use strict"; const plugins = require("./smartnginx.plugins"); +// directories exports.packageBase = plugins.path.join(__dirname, "../"); exports.nginxConfigBase = plugins.path.join(exports.packageBase, "nginxconfig"); exports.nginxZoneBase = plugins.path.join(exports.nginxConfigBase, "zones"); exports.nginxCertBase = plugins.path.join(exports.nginxConfigBase, "cert"); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRuZ2lueC5wYXRocy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bmdpbngucGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHNCQUV6QixDQUFDLENBRjhDO0FBRXBDLG1CQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pELHVCQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQVcsRUFBQyxhQUFhLENBQUMsQ0FBQztBQUMvRCxxQkFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUFlLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0QscUJBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBZSxFQUFDLE1BQU0sQ0FBQyxDQUFDIn0= \ No newline at end of file +// files +exports.nginxConfFile = plugins.path.join(exports.nginxConfigBase, "nginx.conf"); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRuZ2lueC5wYXRocy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bmdpbngucGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHNCQUd6QixDQUFDLENBSDhDO0FBRS9DLGNBQWM7QUFDSCxtQkFBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztBQUNqRCx1QkFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFXLEVBQUMsYUFBYSxDQUFDLENBQUM7QUFDL0QscUJBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBZSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNELHFCQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQWUsRUFBQyxNQUFNLENBQUMsQ0FBQztBQUVyRSxRQUFRO0FBQ0cscUJBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBZSxFQUFDLFlBQVksQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/package.json b/package.json index e3591f9..56ec92d 100644 --- a/package.json +++ b/package.json @@ -24,10 +24,10 @@ "dependencies": { "@types/q": "^0.0.27", "@types/shelljs": "^0.3.27", - "beautylog": "^5.0.14", - "cert": "0.0.17", + "beautylog": "^5.0.18", + "cert": "1.0.6", "q": "^1.4.1", - "shelljs": "^0.7.0", + "shelljs": "^0.7.1", "smartfile": "^4.0.12", "smartstring": "^2.0.15" }, diff --git a/test/test.js b/test/test.js index b5a6841..4bbfb05 100644 --- a/test/test.js +++ b/test/test.js @@ -27,6 +27,7 @@ describe("smartnginx", function () { }); }); describe("NginxConfig", function () { + this.timeout(10000); it(`"new NginxConfig()" should produce an instance of NginxConfig`, function () { testNginxConfig = new smartnginx.NginxConfig({ cfEmail: process.env.CF_EMAIL, @@ -42,7 +43,7 @@ describe("smartnginx", function () { }); }); describe(".deploy()", function () { - this.timeout(240000); + this.timeout(600000); it("should deploy a config from an instance", function (done) { testNginxConfig.deploy() .then(() => { @@ -52,4 +53,4 @@ describe("smartnginx", function () { }); }); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsTUFBTyxJQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDOUIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUNoQix1QkFBbUIsTUFBTSxDQUFDLENBQUE7QUFDMUIsTUFBWSxVQUFVLFdBQU0sZUFBZSxDQUFDLENBQUE7QUFFNUMsb0JBQW9CO0FBQ3BCLElBQUksUUFBUSxHQUFHLElBQUksV0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLFFBQVEsQ0FBQyxZQUFZLEVBQUM7SUFDbEIsSUFBSSxlQUFzQyxDQUFDO0lBQzNDLElBQUksZUFBb0MsQ0FBQztJQUN6QyxJQUFJLGVBQW9DLENBQUM7SUFDekMsUUFBUSxDQUFDLFdBQVcsRUFBQztRQUNqQixFQUFFLENBQUMsNkRBQTZELEVBQUM7WUFDN0QsZUFBZSxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsUUFBUSxFQUFDLGlCQUFpQjtnQkFDMUIsSUFBSSxFQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsWUFBWTtnQkFDdEMsV0FBVyxFQUFDLGlCQUFpQjthQUNoQyxDQUFDLENBQUM7WUFDSCxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUN2QyxRQUFRLEVBQUMsaUJBQWlCO2dCQUMxQixJQUFJLEVBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxZQUFZO2dCQUN0QyxXQUFXLEVBQUMsaUJBQWlCO2FBQ2hDLENBQUMsQ0FBQztZQUNILGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxhQUFhLEVBQUM7UUFDbkIsRUFBRSxDQUFDLCtEQUErRCxFQUFDO1lBQy9ELGVBQWUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7Z0JBQzdCLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU07Z0JBQ3pCLFFBQVEsRUFBQyxJQUFJO2FBQ2hCLENBQUMsQ0FBQztZQUNILGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsWUFBWSxFQUFDO1lBQ2xCLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBQztnQkFDekMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDekMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLFdBQVcsRUFBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JCLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBQyxVQUFTLElBQUk7Z0JBQ3RELGVBQWUsQ0FBQyxNQUFNLEVBQUU7cUJBQ25CLElBQUksQ0FBQztvQkFDRixJQUFJLEVBQUUsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsTUFBTyxJQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDOUIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUNoQix1QkFBbUIsTUFBTSxDQUFDLENBQUE7QUFDMUIsTUFBWSxVQUFVLFdBQU0sZUFBZSxDQUFDLENBQUE7QUFFNUMsb0JBQW9CO0FBQ3BCLElBQUksUUFBUSxHQUFHLElBQUksV0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLFFBQVEsQ0FBQyxZQUFZLEVBQUM7SUFDbEIsSUFBSSxlQUFzQyxDQUFDO0lBQzNDLElBQUksZUFBb0MsQ0FBQztJQUN6QyxJQUFJLGVBQW9DLENBQUM7SUFDekMsUUFBUSxDQUFDLFdBQVcsRUFBQztRQUNqQixFQUFFLENBQUMsNkRBQTZELEVBQUM7WUFDN0QsZUFBZSxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsUUFBUSxFQUFDLGlCQUFpQjtnQkFDMUIsSUFBSSxFQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsWUFBWTtnQkFDdEMsV0FBVyxFQUFDLGlCQUFpQjthQUNoQyxDQUFDLENBQUM7WUFDSCxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUN2QyxRQUFRLEVBQUMsaUJBQWlCO2dCQUMxQixJQUFJLEVBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxZQUFZO2dCQUN0QyxXQUFXLEVBQUMsaUJBQWlCO2FBQ2hDLENBQUMsQ0FBQztZQUNILGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxhQUFhLEVBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixFQUFFLENBQUMsK0RBQStELEVBQUM7WUFDL0QsZUFBZSxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQztnQkFDekMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtnQkFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTtnQkFDekIsUUFBUSxFQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1lBQ0gsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxZQUFZLEVBQUM7WUFDbEIsRUFBRSxDQUFDLHlDQUF5QyxFQUFDO2dCQUN6QyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN6QyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsV0FBVyxFQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckIsRUFBRSxDQUFDLHlDQUF5QyxFQUFDLFVBQVMsSUFBSTtnQkFDdEQsZUFBZSxDQUFDLE1BQU0sRUFBRTtxQkFDbkIsSUFBSSxDQUFDO29CQUNGLElBQUksRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMifQ== \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index c3c592a..dc7939f 100644 --- a/test/test.ts +++ b/test/test.ts @@ -27,6 +27,7 @@ describe("smartnginx",function(){ }); }); describe("NginxConfig",function(){ + this.timeout(10000); it(`"new NginxConfig()" should produce an instance of NginxConfig`,function(){ testNginxConfig = new smartnginx.NginxConfig({ cfEmail: process.env.CF_EMAIL, @@ -42,7 +43,7 @@ describe("smartnginx",function(){ }) }); describe(".deploy()",function(){ - this.timeout(240000); + this.timeout(600000); it("should deploy a config from an instance",function(done){ testNginxConfig.deploy() .then(() => { diff --git a/ts/index.ts b/ts/index.ts index 342e249..8ccc1c3 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,9 +1,6 @@ import * as plugins from "./smartnginx.plugins"; -import * as CommandModule from "./smartnginx.command"; // classes export {NginxConfig} from "./smartnginx.classes.nginxconfig"; -export {NginxZone,zoneTypes} from "./smartnginx.classes.nginxzone"; - -// exports -export let command = CommandModule; \ No newline at end of file +export {NginxProcess} from "./smartnginx.classes.nginxprocess"; +export {NginxZone,zoneTypes} from "./smartnginx.classes.nginxzone"; \ No newline at end of file diff --git a/ts/smartnginx.classes.nginxconfig.ts b/ts/smartnginx.classes.nginxconfig.ts index a4279a1..4fb2831 100644 --- a/ts/smartnginx.classes.nginxconfig.ts +++ b/ts/smartnginx.classes.nginxconfig.ts @@ -1,67 +1,68 @@ import * as plugins from "./smartnginx.plugins"; import * as paths from "./smartnginx.paths"; -import * as command from "./smartnginx.command"; -import * as snippets from "./smartnginx.snippets" -import {NginxZone} from "./smartnginx.classes.nginxzone"; -let allConfigs:NginxConfig[] = []; +import * as snippets from "./smartnginx.snippets"; +import { NginxZone } from "./smartnginx.classes.nginxzone"; +import { NginxProcess } from "./smartnginx.classes.nginxprocess"; +let allConfigs: NginxConfig[] = []; export class NginxConfig { - zones:NginxZone[] = []; - cert:plugins.cert.Cert; // the Cert Instance from which the config gets its certificates - isDeployed:boolean = false; - constructor(optionsArg:plugins.cert.ICertConstructorOptions){ + zones: NginxZone[] = []; + cert: plugins.cert.Cert; // the Cert Instance from which the config gets its certificates + nginxProcess: NginxProcess = new NginxProcess(this); + isDeployed: boolean = false; + constructor(optionsArg: plugins.cert.ICertConstructorOptions) { this.cert = new plugins.cert.Cert({ - cfEmail:optionsArg.cfEmail, - cfKey:optionsArg.cfKey, - sslDir:paths.nginxCertBase, - gitOriginRepo:optionsArg.gitOriginRepo, - testMode:optionsArg.testMode + cfEmail: optionsArg.cfEmail, + cfKey: optionsArg.cfKey, + sslDir: paths.nginxCertBase, + gitOriginRepo: optionsArg.gitOriginRepo, + testMode: optionsArg.testMode }); }; // interact with Zones - addZone(zoneArg:NginxZone){ + addZone(zoneArg: NginxZone){ this.zones.push(zoneArg); } - listZones():NginxZone[] { + listZones(): NginxZone[]{ return this.zones; }; - removeZones(zoneArg:NginxZone){ + removeZones(zoneArg: NginxZone) { } - clean(){ + clean() { this.zones = []; } // handle deployment of zones - deploy(nginxRestartArg:boolean = false){ + deploy() { let done = plugins.q.defer(); - plugins.smartfile.fs.removeSync(paths.nginxConfigBase); plugins.smartfile.fs.ensureDirSync(paths.nginxConfigBase); plugins.smartfile.fs.ensureDirSync(paths.nginxZoneBase); plugins.smartfile.fs.ensureDirSync(paths.nginxCertBase); - for(let config of allConfigs){ + for (let config of allConfigs) { config.isDeployed = false; }; this.isDeployed = true; // write base config plugins.smartfile.memory.toFsSync( snippets.getBaseConfigString(), - plugins.path.join(paths.nginxConfigBase,"nginx.conf") + paths.nginxConfFile ); // deploy zones let promiseArray = []; - for(let zone of this.zones){ - promiseArray.push(zone.deploy(this.cert)); + for (let zone of this.zones) { + let zoneDeployedPromise = zone.deploy(this.cert); + zoneDeployedPromise.then(() => { + plugins.beautylog.info(`Zone ${zone.zoneName} deployed!`); + this.nginxProcess.reloadConfig(); + }); + promiseArray.push(zoneDeployedPromise); }; plugins.q.all(promiseArray) .then(() => { - // restart nginx - if(nginxRestartArg){ - command.restart(this); - }; done.resolve(); }); - + return done.promise; }; }; diff --git a/ts/smartnginx.classes.nginxprocess.ts b/ts/smartnginx.classes.nginxprocess.ts new file mode 100644 index 0000000..d03e746 --- /dev/null +++ b/ts/smartnginx.classes.nginxprocess.ts @@ -0,0 +1,70 @@ +import * as plugins from "./smartnginx.plugins"; +import * as paths from "./smartnginx.paths"; +import { NginxConfig } from "./smartnginx.classes.nginxconfig"; +import { NginxZone } from "./smartnginx.classes.nginxzone"; + +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 { + this.nginxChildProcess.kill("SIGHUP"); + }; + 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") { + this.nginxChildProcess.kill(); + 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; + }; +} diff --git a/ts/smartnginx.classes.nginxzone.ts b/ts/smartnginx.classes.nginxzone.ts index f2a9894..2dab206 100644 --- a/ts/smartnginx.classes.nginxzone.ts +++ b/ts/smartnginx.classes.nginxzone.ts @@ -1,32 +1,31 @@ import * as plugins from "./smartnginx.plugins"; import * as paths from "./smartnginx.paths"; -import * as command from "./smartnginx.command"; import * as snippets from "./smartnginx.snippets" export enum zoneTypes { - reverseProxy, - static + reverseProxy, + static } export class NginxZone { - zoneName:string; // the zone name e.g. domain name - type:zoneTypes; - destination:string; - configString:string; // the actual zone config file as string - constructor(optionsArg:{ - zoneName:string, - type:zoneTypes, - destination:string - }){ + zoneName: string; // the zone name e.g. domain name + type: zoneTypes; + destination: string; + configString: string; // the actual zone config file as string + constructor(optionsArg: { + zoneName: string, + type: zoneTypes, + destination: string + }) { this.zoneName = optionsArg.zoneName; this.type = optionsArg.type; this.destination = optionsArg.destination; - this.configString = snippets.getZoneConfigString(optionsArg.zoneName,optionsArg.destination); + this.configString = snippets.getZoneConfigString(optionsArg.zoneName, optionsArg.destination); }; - deploy(certInstanceArg:plugins.cert.Cert){ + deploy(certInstanceArg: plugins.cert.Cert) { let done = plugins.q.defer(); - let filePath = plugins.path.join(paths.nginxZoneBase,this.zoneName + ".conf"); + let filePath = plugins.path.join(paths.nginxZoneBase, this.zoneName + ".conf"); // writeConfig - plugins.smartfile.memory.toFsSync(this.configString,filePath); + plugins.smartfile.memory.toFsSync(this.configString, filePath); // get cert certInstanceArg.getDomainCert(this.zoneName) .then(done.resolve); diff --git a/ts/smartnginx.command.ts b/ts/smartnginx.command.ts deleted file mode 100644 index a9c0323..0000000 --- a/ts/smartnginx.command.ts +++ /dev/null @@ -1,59 +0,0 @@ -import * as plugins from "./smartnginx.plugins"; -import {NginxConfig} from "./smartnginx.classes.nginxconfig"; -import {NginxZone} from "./smartnginx.classes.nginxzone"; - - -let nginxChildProcess = undefined; // points to the nginx child process - - -/** - * starts nginx - */ -export let start = (configArg:NginxConfig) => { - let done = plugins.q.defer(); - if(typeof nginxChildProcess == "undefined"){ - nginxChildProcess = plugins.childProcess.exec("nginx",function(error, stdout, stderr){ - console.log(`stdout: ${stdout}`); - console.log(`stderr: ${stderr}`); - if (error !== null) { - console.log(`exec error: ${error}`); - } - }); - }; - plugins.beautylog.info("started Nginx!"); - done.resolve(); - return done.promise; -}; - -/** - * restarts nginx - */ -export let restart = (configArg:NginxConfig) => { - return stop().then( - () => { - return start(configArg); - } - ); -} - -/** - * stops nginx - */ -export let stop = () => { - let done = plugins.q.defer(); - if(typeof nginxChildProcess != "undefined"){ - nginxChildProcess.kill(); - plugins.beautylog.info("stopped Nginx!"); - } else { - plugins.beautylog.log("nginx already stopped!"); - }; - done.resolve(); - return done.promise; -}; - -/** - * checks if nginx is in path - */ -export let check = ():boolean => { - return; -}; \ No newline at end of file diff --git a/ts/smartnginx.paths.ts b/ts/smartnginx.paths.ts index 2e3ebad..4f3d35f 100644 --- a/ts/smartnginx.paths.ts +++ b/ts/smartnginx.paths.ts @@ -1,6 +1,10 @@ import * as plugins from "./smartnginx.plugins" +// directories export let packageBase = plugins.path.join(__dirname,"../"); export let nginxConfigBase = plugins.path.join(packageBase,"nginxconfig"); export let nginxZoneBase = plugins.path.join(nginxConfigBase,"zones"); -export let nginxCertBase = plugins.path.join(nginxConfigBase,"cert"); \ No newline at end of file +export let nginxCertBase = plugins.path.join(nginxConfigBase,"cert"); + +// files +export let nginxConfFile = plugins.path.join(nginxConfigBase,"nginx.conf"); \ No newline at end of file