import * as plugins from './smartnginx.plugins'; import * as paths from './smartnginx.paths'; import * as snippets from './smartnginx.snippets'; import { SmartNginx } from './smartnginx.classes.smartnginx'; /** * the host config data that NginxHost needs to create a valid instance */ export interface IHostConfigData { hostName: string; destination: string; } export enum hostTypes { reverseProxy } /** * manages a single nginx host */ export class NginxHost { /** * smartnginxInstance this NginHost belongs to */ smartnginxInstance: SmartNginx hostName: string; // the host name e.g. domain name destination: string; configString: string; // the actual host config file as string constructor(smartnginxInstanceArg: SmartNginx, optionsArg: IHostConfigData) { this.smartnginxInstance = smartnginxInstanceArg; this.hostName = optionsArg.hostName; this.destination = optionsArg.destination; this.configString = snippets.getHostConfigString(optionsArg.hostName, optionsArg.destination); } /** * * @param certInstanceArg */ async deploy() { let filePath = plugins.path.join(paths.nginxHostFileBase, this.hostName + '.conf'); // writeConfig plugins.smartfile.memory.toFsSync(this.configString, filePath); } }