2018-08-10 21:10:48 +00:00
|
|
|
import * as plugins from './smartnginx.plugins';
|
|
|
|
import * as paths from './smartnginx.paths';
|
|
|
|
import * as snippets from './smartnginx.snippets';
|
|
|
|
|
|
|
|
import { SmartNginx } from './smartnginx.classes.smartnginx';
|
2016-08-02 13:32:06 +00:00
|
|
|
|
2019-01-09 11:15:28 +00:00
|
|
|
import { IHostConfig } from './interfaces/hostconfig';
|
2016-08-02 13:32:06 +00:00
|
|
|
|
|
|
|
export enum hostTypes {
|
2018-08-10 21:10:48 +00:00
|
|
|
reverseProxy
|
2016-08-02 13:32:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* manages a single nginx host
|
|
|
|
*/
|
2019-01-09 11:15:28 +00:00
|
|
|
export class NginxHost implements IHostConfig {
|
|
|
|
/**
|
2018-08-10 21:10:48 +00:00
|
|
|
* smartnginxInstance this NginHost belongs to
|
|
|
|
*/
|
2019-01-09 11:15:28 +00:00
|
|
|
smartnginxInstance: SmartNginx;
|
2018-08-10 21:10:48 +00:00
|
|
|
|
|
|
|
hostName: string; // the host name e.g. domain name
|
|
|
|
destination: string;
|
|
|
|
configString: string; // the actual host config file as string
|
2019-01-09 11:15:28 +00:00
|
|
|
privateKey: string;
|
|
|
|
publicKey: string;
|
|
|
|
|
|
|
|
constructor(smartnginxInstanceArg: SmartNginx, optionsArg: IHostConfig) {
|
2018-08-10 21:10:48 +00:00
|
|
|
this.smartnginxInstance = smartnginxInstanceArg;
|
|
|
|
this.hostName = optionsArg.hostName;
|
|
|
|
this.destination = optionsArg.destination;
|
|
|
|
this.configString = snippets.getHostConfigString(optionsArg.hostName, optionsArg.destination);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param certInstanceArg
|
|
|
|
*/
|
2019-01-09 11:15:28 +00:00
|
|
|
public async deploy() {
|
|
|
|
const filePath = plugins.path.join(paths.nginxHostDirPath, `${this.hostName}.conf`);
|
2018-08-10 21:10:48 +00:00
|
|
|
// writeConfig
|
|
|
|
plugins.smartfile.memory.toFsSync(this.configString, filePath);
|
|
|
|
}
|
|
|
|
}
|