integrate cert

This commit is contained in:
Phil Kunz 2016-07-12 23:11:57 +02:00
parent 244b21ca36
commit e0757600b6
4 changed files with 36 additions and 11 deletions

View File

@ -24,7 +24,7 @@
"dependencies": {
"@types/q": "*",
"beautylog": "^5.0.13",
"cert": "0.0.13",
"cert": "0.0.15",
"q": "^1.4.1",
"shelljs": "^0.7.0",
"smartfile": "^4.0.10",

View File

@ -7,9 +7,15 @@ 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(){
constructor(optionsArg:plugins.cert.CertConstructorOptions){
this.cert = new plugins.cert.Cert({
cfEmail:optionsArg.cfEmail,
cfKey:optionsArg.cfKey,
sslDir:optionsArg.sslDir,
gitOriginRepo:optionsArg.gitOriginRepo
});
};
// interact with Zones
@ -25,22 +31,34 @@ export class NginxConfig {
// handle deployment of zones
deploy(nginxRestartArg:boolean = false){
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){
config.isDeployed = false;
};
this.isDeployed = true;
for(let zone of this.zones){
zone.deploy();
};
// write base config
plugins.smartfile.memory.toFsSync(
snippets.getBaseConfigString(),
plugins.path.join(paths.nginxConfigBase,"nginx.conf")
);
if(nginxRestartArg){
command.restart(this);
// deploy zones
let promiseArray = [];
for(let zone of this.zones){
promiseArray.push(zone.deploy(this.cert));
};
plugins.q.all(promiseArray)
.then(() => {
// restart nginx
if(nginxRestartArg){
command.restart(this);
};
done.resolve();
});
return done.promise;
};
};

View File

@ -22,8 +22,14 @@ export class NginxZone {
this.destination = optionsArg.destination;
this.configString = snippets.getZoneConfigString(optionsArg.zoneName,optionsArg.destination);
};
deploy(){
deploy(certInstanceArg:plugins.cert.Cert){
let done = plugins.q.defer();
let filePath = plugins.path.join(paths.nginxZoneBase,this.zoneName + ".conf");
// writeConfig
plugins.smartfile.memory.toFsSync(this.configString,filePath);
// get cert
certInstanceArg.getDomainCert(this.zoneName)
.then(done.resolve);
return done.promise;
};
};

View File

@ -1,5 +1,6 @@
import * as plugins from "./smartnginx.plugins"
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 nginxConfigBase = plugins.path.join(packageBase,"nginxconfig");
export let nginxZoneBase = plugins.path.join(nginxConfigBase,"zones");
export let nginxCertBase = plugins.path.join(nginxConfigBase,"cert");