now requesting in parallel
This commit is contained in:
parent
3c3da30966
commit
159ffe0728
3
dist/cert.helpers.d.ts
vendored
Normal file
3
dist/cert.helpers.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
/// <reference types="q" />
|
||||||
|
import * as plugins from "./cert.plugins";
|
||||||
|
export declare let accountsKeyPresent: () => plugins.q.Promise<{}>;
|
16
dist/cert.helpers.js
vendored
Normal file
16
dist/cert.helpers.js
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
"use strict";
|
||||||
|
const plugins = require("./cert.plugins");
|
||||||
|
let firstCall = true;
|
||||||
|
exports.accountsKeyPresent = () => {
|
||||||
|
let done = plugins.q.defer();
|
||||||
|
if (firstCall) {
|
||||||
|
done.resolve();
|
||||||
|
firstCall = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setTimeout(done.resolve, 5000);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2VydC5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSxnQkFBZ0IsQ0FBQyxDQUFBO0FBRzFDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztBQUNWLDBCQUFrQixHQUFHO0lBQzVCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUFBLENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUMifQ==
|
7
dist/cert.paths.d.ts
vendored
7
dist/cert.paths.d.ts
vendored
@ -1,7 +1,8 @@
|
|||||||
|
export declare let certDir: string;
|
||||||
|
export declare let defaultSslDir: string;
|
||||||
|
export declare let assetDir: string;
|
||||||
|
export declare let accountsDir: string;
|
||||||
export declare let certHook: string;
|
export declare let certHook: string;
|
||||||
export declare let config: string;
|
export declare let config: string;
|
||||||
export declare let leShConfig: string;
|
export declare let leShConfig: string;
|
||||||
export declare let letsencryptSh: string;
|
export declare let letsencryptSh: string;
|
||||||
export declare let certDir: string;
|
|
||||||
export declare let defaultSslDir: string;
|
|
||||||
export declare let assetDir: string;
|
|
||||||
|
11
dist/cert.paths.js
vendored
11
dist/cert.paths.js
vendored
@ -1,12 +1,13 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const plugins = require("./cert.plugins");
|
const plugins = require("./cert.plugins");
|
||||||
|
//dirs
|
||||||
|
exports.certDir = plugins.path.join(__dirname, "assets/certs");
|
||||||
|
exports.defaultSslDir = plugins.path.join(__dirname, "assets/defaultSslDir");
|
||||||
|
exports.assetDir = plugins.path.join(__dirname, "assets/");
|
||||||
|
exports.accountsDir = plugins.path.join(__dirname, "assets/accounts/");
|
||||||
// files
|
// files
|
||||||
exports.certHook = plugins.path.join(__dirname, "cert.hook.js");
|
exports.certHook = plugins.path.join(__dirname, "cert.hook.js");
|
||||||
exports.config = plugins.path.join(__dirname, "assets/config.json");
|
exports.config = plugins.path.join(__dirname, "assets/config.json");
|
||||||
exports.leShConfig = plugins.path.join(__dirname, "assets/leshconfig.json");
|
exports.leShConfig = plugins.path.join(__dirname, "assets/leshconfig.json");
|
||||||
exports.letsencryptSh = plugins.path.join(__dirname, "assets/letsencrypt.sh");
|
exports.letsencryptSh = plugins.path.join(__dirname, "assets/letsencrypt.sh");
|
||||||
//dirs
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5wYXRocy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NlcnQucGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLGdCQUFnQixDQUFDLENBQUE7QUFFMUMsTUFBTTtBQUNLLGVBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsY0FBYyxDQUFDLENBQUM7QUFDdEQscUJBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNwRSxnQkFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxTQUFTLENBQUMsQ0FBQztBQUNsRCxtQkFBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXpFLFFBQVE7QUFDRyxnQkFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxjQUFjLENBQUMsQ0FBQztBQUN2RCxjQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDM0Qsa0JBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNuRSxxQkFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyx1QkFBdUIsQ0FBQyxDQUFDIn0=
|
||||||
exports.certDir = plugins.path.join(__dirname, "assets/certs");
|
|
||||||
exports.defaultSslDir = plugins.path.join(__dirname, "assets/defaultSslDir");
|
|
||||||
exports.assetDir = plugins.path.join(__dirname, "assets/");
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5wYXRocy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NlcnQucGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLGdCQUFnQixDQUFDLENBQUE7QUFFMUMsUUFBUTtBQUNHLGdCQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3ZELGNBQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUMzRCxrQkFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ25FLHFCQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFaEYsTUFBTTtBQUNLLGVBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsY0FBYyxDQUFDLENBQUM7QUFDdEQscUJBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNwRSxnQkFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxTQUFTLENBQUMsQ0FBQyJ9
|
|
1
dist/cert.plugins.d.ts
vendored
1
dist/cert.plugins.d.ts
vendored
@ -2,6 +2,7 @@ import "typings-global";
|
|||||||
export import beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export import cflare = require("cflare");
|
export import cflare = require("cflare");
|
||||||
export declare let fs: any;
|
export declare let fs: any;
|
||||||
|
export import lik = require("lik");
|
||||||
export import path = require("path");
|
export import path = require("path");
|
||||||
export import q = require("q");
|
export import q = require("q");
|
||||||
export import shelljs = require("shelljs");
|
export import shelljs = require("shelljs");
|
||||||
|
3
dist/cert.plugins.js
vendored
3
dist/cert.plugins.js
vendored
@ -3,6 +3,7 @@ require("typings-global");
|
|||||||
exports.beautylog = require("beautylog");
|
exports.beautylog = require("beautylog");
|
||||||
exports.cflare = require("cflare");
|
exports.cflare = require("cflare");
|
||||||
exports.fs = require("fs-extra");
|
exports.fs = require("fs-extra");
|
||||||
|
exports.lik = require("lik");
|
||||||
exports.path = require("path");
|
exports.path = require("path");
|
||||||
exports.q = require("q");
|
exports.q = require("q");
|
||||||
exports.shelljs = require("shelljs");
|
exports.shelljs = require("shelljs");
|
||||||
@ -10,4 +11,4 @@ exports.smartcli = require("smartcli");
|
|||||||
exports.smartfile = require("smartfile");
|
exports.smartfile = require("smartfile");
|
||||||
exports.smartgit = require("smartgit");
|
exports.smartgit = require("smartgit");
|
||||||
exports.smartstring = require("smartstring");
|
exports.smartstring = require("smartstring");
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2VydC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDVixpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLGNBQU0sV0FBVyxRQUFRLENBQUMsQ0FBQztBQUM5QixVQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RCLFlBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUN2QixTQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDakIsZUFBTyxXQUFXLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLGdCQUFRLFdBQVcsVUFBVSxDQUFDLENBQUM7QUFDL0IsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNqQyxnQkFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLG1CQUFXLFdBQVcsYUFBYSxDQUFDLENBQUMifQ==
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2VydC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDVixpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLGNBQU0sV0FBVyxRQUFRLENBQUMsQ0FBQztBQUM5QixVQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RCLFdBQUcsV0FBVyxLQUFLLENBQUMsQ0FBQztBQUNyQixZQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDdkIsU0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLGVBQU8sV0FBVyxTQUFTLENBQUMsQ0FBQztBQUM3QixnQkFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDakMsZ0JBQVEsV0FBVyxVQUFVLENBQUMsQ0FBQztBQUMvQixtQkFBVyxXQUFXLGFBQWEsQ0FBQyxDQUFDIn0=
|
2
dist/index.d.ts
vendored
2
dist/index.d.ts
vendored
@ -13,7 +13,7 @@ export declare class Cert {
|
|||||||
private _sslDir;
|
private _sslDir;
|
||||||
private _gitOriginRepo;
|
private _gitOriginRepo;
|
||||||
private _testMode;
|
private _testMode;
|
||||||
domainsCurrentlyRequesting: string[];
|
domainsCurrentlyRequesting: plugins.lik.Stringmap;
|
||||||
certificatesPresent: Certificate[];
|
certificatesPresent: Certificate[];
|
||||||
certificatesValid: Certificate[];
|
certificatesValid: Certificate[];
|
||||||
/**
|
/**
|
||||||
|
58
dist/index.js
vendored
58
dist/index.js
vendored
File diff suppressed because one or more lines are too long
@ -33,6 +33,7 @@
|
|||||||
"beautylog": "^5.0.14",
|
"beautylog": "^5.0.14",
|
||||||
"cflare": "0.0.9",
|
"cflare": "0.0.9",
|
||||||
"fs-extra": "^0.30.0",
|
"fs-extra": "^0.30.0",
|
||||||
|
"lik": "^1.0.2",
|
||||||
"q": "^1.4.1",
|
"q": "^1.4.1",
|
||||||
"shelljs": "^0.7.0",
|
"shelljs": "^0.7.0",
|
||||||
"smartcli": "^1.0.4",
|
"smartcli": "^1.0.4",
|
||||||
|
@ -33,12 +33,12 @@ describe("cert", function () {
|
|||||||
this.timeout(120000);
|
this.timeout(120000);
|
||||||
let promiseArray = [];
|
let promiseArray = [];
|
||||||
promiseArray.push(testCert.getDomainCert("testing1.bleu.de"));
|
promiseArray.push(testCert.getDomainCert("testing1.bleu.de"));
|
||||||
//promiseArray.push(testCert.getDomainCert("testing2.bleu.de"));
|
promiseArray.push(testCert.getDomainCert("testing2.bleu.de"));
|
||||||
//promiseArray.push(testCert.getDomainCert("testing3.bleu.de"));
|
promiseArray.push(testCert.getDomainCert("testing3.bleu.de"));
|
||||||
q.all(promiseArray).then(() => {
|
q.all(promiseArray).then(() => {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUNoQix1QkFBbUIsTUFBTSxDQUFDLENBQUE7QUFDMUIsTUFBTyxJQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDOUIsTUFBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDeEIsMEJBQTJCLGlCQUFpQixDQUFDLENBQUE7QUFDN0MsTUFBWSxJQUFJLFdBQU0sZUFBZSxDQUFDLENBQUE7QUFHdEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxXQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUVsRSxJQUFJLFFBQWtCLENBQUM7QUFFdkIsUUFBUSxDQUFDLE1BQU0sRUFBQztJQUNaLFFBQVEsQ0FBQyxTQUFTLEVBQUM7UUFDZixFQUFFLENBQUMsZ0NBQWdDLEVBQUMsVUFBUyxJQUFJO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsc0JBQVksRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDaEIsSUFBSSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixRQUFRLENBQUMsTUFBTSxFQUFDO1FBQ1osRUFBRSxDQUFDLDRDQUE0QyxFQUFDO1lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtnQkFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTtnQkFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFDLGFBQWEsQ0FBQztnQkFDOUMsYUFBYSxFQUFDLGtEQUFrRDtnQkFDaEUsUUFBUSxFQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBQyxVQUFTLElBQUk7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUM5RCxnRUFBZ0U7WUFDaEUsZ0VBQWdFO1lBQ2hFLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyQixJQUFJLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFDIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUNoQix1QkFBbUIsTUFBTSxDQUFDLENBQUE7QUFDMUIsTUFBTyxJQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDOUIsTUFBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDeEIsMEJBQTJCLGlCQUFpQixDQUFDLENBQUE7QUFDN0MsTUFBWSxJQUFJLFdBQU0sZUFBZSxDQUFDLENBQUE7QUFHdEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxXQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUVsRSxJQUFJLFFBQWtCLENBQUM7QUFFdkIsUUFBUSxDQUFDLE1BQU0sRUFBQztJQUNaLFFBQVEsQ0FBQyxTQUFTLEVBQUM7UUFDZixFQUFFLENBQUMsZ0NBQWdDLEVBQUMsVUFBUyxJQUFJO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsc0JBQVksRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDaEIsSUFBSSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixRQUFRLENBQUMsTUFBTSxFQUFDO1FBQ1osRUFBRSxDQUFDLDRDQUE0QyxFQUFDO1lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtnQkFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTtnQkFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFDLGFBQWEsQ0FBQztnQkFDOUMsYUFBYSxFQUFDLGtEQUFrRDtnQkFDaEUsUUFBUSxFQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBQyxVQUFTLElBQUk7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUM5RCxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQzlELFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7WUFDOUQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksRUFBRSxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUMifQ==
|
@ -36,8 +36,8 @@ describe("cert",function(){
|
|||||||
this.timeout(120000);
|
this.timeout(120000);
|
||||||
let promiseArray = [];
|
let promiseArray = [];
|
||||||
promiseArray.push(testCert.getDomainCert("testing1.bleu.de"));
|
promiseArray.push(testCert.getDomainCert("testing1.bleu.de"));
|
||||||
//promiseArray.push(testCert.getDomainCert("testing2.bleu.de"));
|
promiseArray.push(testCert.getDomainCert("testing2.bleu.de"));
|
||||||
//promiseArray.push(testCert.getDomainCert("testing3.bleu.de"));
|
promiseArray.push(testCert.getDomainCert("testing3.bleu.de"));
|
||||||
q.all(promiseArray).then(() => {
|
q.all(promiseArray).then(() => {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
18
ts/cert.helpers.ts
Normal file
18
ts/cert.helpers.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import * as plugins from "./cert.plugins";
|
||||||
|
import * as paths from "./cert.paths";
|
||||||
|
|
||||||
|
let firstCall = true;
|
||||||
|
let accountKeyPresent = true;
|
||||||
|
export let accountsKeyPresent = () => {
|
||||||
|
let done = plugins.q.defer();
|
||||||
|
if (firstCall) {
|
||||||
|
done.resolve();
|
||||||
|
firstCall = false;
|
||||||
|
setTimeout(() => {accountKeyPresent = true},5000);
|
||||||
|
} else if(accountKeyPresent){
|
||||||
|
done.resolve()
|
||||||
|
} else {
|
||||||
|
setTimeout(done.resolve, 5000);
|
||||||
|
};
|
||||||
|
return done.promise;
|
||||||
|
};
|
@ -1,12 +1,14 @@
|
|||||||
import * as plugins from "./cert.plugins";
|
import * as plugins from "./cert.plugins";
|
||||||
|
|
||||||
|
//dirs
|
||||||
|
export let certDir = plugins.path.join(__dirname,"assets/certs");
|
||||||
|
export let defaultSslDir = plugins.path.join(__dirname,"assets/defaultSslDir");
|
||||||
|
export let assetDir = plugins.path.join(__dirname,"assets/");
|
||||||
|
export let accountsDir = plugins.path.join(__dirname,"assets/accounts/");
|
||||||
|
|
||||||
// files
|
// files
|
||||||
export let certHook = plugins.path.join(__dirname,"cert.hook.js");
|
export let certHook = plugins.path.join(__dirname,"cert.hook.js");
|
||||||
export let config = plugins.path.join(__dirname,"assets/config.json");
|
export let config = plugins.path.join(__dirname,"assets/config.json");
|
||||||
export let leShConfig = plugins.path.join(__dirname,"assets/leshconfig.json");
|
export let leShConfig = plugins.path.join(__dirname,"assets/leshconfig.json");
|
||||||
export let letsencryptSh = plugins.path.join(__dirname,"assets/letsencrypt.sh");
|
export let letsencryptSh = plugins.path.join(__dirname,"assets/letsencrypt.sh");
|
||||||
|
|
||||||
//dirs
|
|
||||||
export let certDir = plugins.path.join(__dirname,"assets/certs");
|
|
||||||
export let defaultSslDir = plugins.path.join(__dirname,"assets/defaultSslDir");
|
|
||||||
export let assetDir = plugins.path.join(__dirname,"assets/");
|
|
@ -2,6 +2,7 @@ import "typings-global";
|
|||||||
export import beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export import cflare = require("cflare");
|
export import cflare = require("cflare");
|
||||||
export let fs = require("fs-extra");
|
export let fs = require("fs-extra");
|
||||||
|
export import lik = require("lik");
|
||||||
export import path = require("path");
|
export import path = require("path");
|
||||||
export import q = require("q");
|
export import q = require("q");
|
||||||
export import shelljs = require("shelljs");
|
export import shelljs = require("shelljs");
|
||||||
|
65
ts/index.ts
65
ts/index.ts
@ -1,5 +1,6 @@
|
|||||||
import * as plugins from "./cert.plugins";
|
import * as plugins from "./cert.plugins";
|
||||||
import * as paths from "./cert.paths";
|
import * as paths from "./cert.paths";
|
||||||
|
import * as helpers from "./cert.helpers"
|
||||||
|
|
||||||
export interface ICertConstructorOptions {
|
export interface ICertConstructorOptions {
|
||||||
cfEmail: string,
|
cfEmail: string,
|
||||||
@ -15,14 +16,14 @@ export class Cert {
|
|||||||
private _sslDir: string;
|
private _sslDir: string;
|
||||||
private _gitOriginRepo: string;
|
private _gitOriginRepo: string;
|
||||||
private _testMode: boolean;
|
private _testMode: boolean;
|
||||||
domainsCurrentlyRequesting: string[] = [];
|
domainsCurrentlyRequesting: plugins.lik.Stringmap = new plugins.lik.Stringmap();
|
||||||
certificatesPresent: Certificate[];
|
certificatesPresent: Certificate[];
|
||||||
certificatesValid: Certificate[];
|
certificatesValid: Certificate[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for Cert object
|
* Constructor for Cert object
|
||||||
*/
|
*/
|
||||||
constructor(optionsArg:ICertConstructorOptions) {
|
constructor(optionsArg: ICertConstructorOptions) {
|
||||||
this._cfEmail = optionsArg.cfEmail;
|
this._cfEmail = optionsArg.cfEmail;
|
||||||
this._cfKey = optionsArg.cfKey;
|
this._cfKey = optionsArg.cfKey;
|
||||||
this._sslDir = optionsArg.sslDir;
|
this._sslDir = optionsArg.sslDir;
|
||||||
@ -58,7 +59,6 @@ export class Cert {
|
|||||||
);
|
);
|
||||||
plugins.shelljs.exec("chmod 700 " + paths.letsencryptSh);
|
plugins.shelljs.exec("chmod 700 " + paths.letsencryptSh);
|
||||||
plugins.shelljs.exec("chmod 700 " + paths.certHook);
|
plugins.shelljs.exec("chmod 700 " + paths.certHook);
|
||||||
plugins.shelljs.exec(`bash -c "${paths.letsencryptSh}`);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,29 +86,40 @@ export class Cert {
|
|||||||
*/
|
*/
|
||||||
getDomainCert(domainNameArg: string, optionsArg: { force: boolean } = { force: false }) {
|
getDomainCert(domainNameArg: string, optionsArg: { force: boolean } = { force: false }) {
|
||||||
let done = plugins.q.defer();
|
let done = plugins.q.defer();
|
||||||
if (!checkDomainsStillValid(domainNameArg, this._sslDir) || optionsArg.force) {
|
// make sure no one else requires the same domain at the same time
|
||||||
plugins.smartfile.fs.ensureDir(paths.certDir);
|
helpers.accountsKeyPresent().then(() => {
|
||||||
plugins.beautylog.info(`getting cert for ${domainNameArg}`);
|
if (!this.domainsCurrentlyRequesting.checkString(domainNameArg)) {
|
||||||
plugins.shelljs.exec(
|
this.domainsCurrentlyRequesting.addString(domainNameArg);
|
||||||
`bash -c "${paths.letsencryptSh} -c --no-lock -f ${paths.leShConfig} -d ${domainNameArg} -t dns-01 -k ${paths.certHook} -o ${paths.certDir}"`,
|
if (!checkDomainsStillValid(domainNameArg, this._sslDir) || optionsArg.force) {
|
||||||
{
|
plugins.smartfile.fs.ensureDir(paths.certDir);
|
||||||
silent: true,
|
plugins.beautylog.info(`getting cert for ${domainNameArg}`);
|
||||||
async:true
|
plugins.shelljs.exec(
|
||||||
},
|
`bash -c "${paths.letsencryptSh} -c --no-lock -f ${paths.leShConfig} -d ${domainNameArg} -t dns-01 -k ${paths.certHook} -o ${paths.certDir}"`,
|
||||||
(codeArg, stdoutArg) => {
|
{
|
||||||
console.log(stdoutArg);
|
silent: true,
|
||||||
let fetchedCertsArray: string[] = plugins.smartfile.fs.listFoldersSync(paths.certDir);
|
async: true
|
||||||
if (fetchedCertsArray.indexOf(domainNameArg) != -1) {
|
},
|
||||||
updateSslDirSync(this._sslDir, domainNameArg);
|
(codeArg, stdoutArg) => {
|
||||||
plugins.smartfile.fs.removeSync(plugins.path.join(paths.certDir,domainNameArg));
|
console.log(stdoutArg);
|
||||||
}
|
let fetchedCertsArray: string[] = plugins.smartfile.fs.listFoldersSync(paths.certDir);
|
||||||
|
if (fetchedCertsArray.indexOf(domainNameArg) != -1) {
|
||||||
|
updateSslDirSync(this._sslDir, domainNameArg);
|
||||||
|
plugins.smartfile.fs.removeSync(plugins.path.join(paths.certDir, domainNameArg));
|
||||||
|
}
|
||||||
|
this.domainsCurrentlyRequesting.removeString(domainNameArg);
|
||||||
|
done.resolve();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
plugins.beautylog.info("certificate for " + domainNameArg + " is still valid! Not fetching new one!");
|
||||||
|
this.domainsCurrentlyRequesting.removeString(domainNameArg);
|
||||||
done.resolve();
|
done.resolve();
|
||||||
}
|
};
|
||||||
);
|
} else {
|
||||||
} else {
|
plugins.beautylog.warn(`${domainNameArg} is already requesting`);
|
||||||
plugins.beautylog.info("certificate for " + domainNameArg + " is still valid! Not fetching new one!");
|
};
|
||||||
done.resolve();
|
});
|
||||||
};
|
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
cleanOldCertificates() {
|
cleanOldCertificates() {
|
||||||
@ -132,8 +143,8 @@ interface certConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let checkDomainsStillValid = (domainNameArg: string, sslDirArg: string): boolean => {
|
let checkDomainsStillValid = (domainNameArg: string, sslDirArg: string): boolean => {
|
||||||
let domainConfigPath = plugins.path.join(sslDirArg, domainNameArg,"config.json");
|
let domainConfigPath = plugins.path.join(sslDirArg, domainNameArg, "config.json");
|
||||||
if (plugins.smartfile.fs.fileExistsSync(domainConfigPath)){
|
if (plugins.smartfile.fs.fileExistsSync(domainConfigPath)) {
|
||||||
let domainConfig = plugins.smartfile.fs.toObjectSync(
|
let domainConfig = plugins.smartfile.fs.toObjectSync(
|
||||||
domainConfigPath,
|
domainConfigPath,
|
||||||
"json"
|
"json"
|
||||||
|
Loading…
Reference in New Issue
Block a user