update
This commit is contained in:
parent
06256f7a4d
commit
d4b249a59b
11
README.md
11
README.md
@ -16,14 +16,19 @@ let myCert = new Cert({
|
|||||||
myCert.getDomainCert("example.com");
|
myCert.getDomainCert("example.com");
|
||||||
```
|
```
|
||||||
|
|
||||||
### sslDir
|
## sslDir
|
||||||
to use the certificates it is important to understand what the structure of the ssl directory looks like.
|
to use the certificates it is important to understand what the structure of the ssl directory looks like.
|
||||||
|
|
||||||
### using a git origin repo.
|
## using a git origin repo.
|
||||||
Often times you want to keep track of certificates in order to keep them
|
Often times you want to keep track of certificates in order to keep them
|
||||||
even if the point of initial certificate request is gone. Imagine you have a dockerenvironement
|
even if the point of initial certificate request is gone. Imagine you have a dockerenvironement
|
||||||
and you keep starting new container versions for the same domain. YOu ideally want to use a proxy
|
and you keep starting new container versions for the same domain. YOu ideally want to use a proxy
|
||||||
that handles SSL managemet for you. But even the proxy needs to be updated from time to time.
|
that handles SSL managemet for you. But even the proxy needs to be updated from time to time.
|
||||||
|
|
||||||
So you need some kind of persistence between versions. This is why you can sync up all certificates to a git repo over ssh
|
So you need some kind of persistence between versions. This is why you can sync up all certificates to a git repo over ssh
|
||||||
Just make sure your id_rsa is in place for the node user and is allowed for the origin repo.
|
Just make sure your id_rsa is in place for the node user and is allowed for the origin repo.
|
||||||
|
|
||||||
|
## Environment
|
||||||
|
Since cert relies on [letsencrypt.sh](https://github.com/lukas2511/letsencrypt.sh) in the background bash is needed on the system.
|
||||||
|
If you plan on using this on Windows check out [npmdocker](https://www.npmjs.com/package/npmdocker) which runs node programs in docker.
|
||||||
|
As of summer 2016 Windows will also ship with bash nativly included.
|
42
dist/cert.hook.js
vendored
42
dist/cert.hook.js
vendored
@ -1,39 +1,39 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
"use strict";
|
"use strict";
|
||||||
var plugins = require("./cert.plugins");
|
const plugins = require("./cert.plugins");
|
||||||
var paths = require("./cert.paths");
|
const paths = require("./cert.paths");
|
||||||
var smartcli = new plugins.smartcli.Smartcli();
|
let smartcli = new plugins.smartcli.Smartcli();
|
||||||
var config = plugins.smartfile.fs.toObjectSync(paths.config);
|
let config = plugins.smartfile.fs.toObjectSync(paths.config);
|
||||||
var cflare = new plugins.cflare.CflareAccount();
|
let cflare = new plugins.cflare.CflareAccount();
|
||||||
cflare.auth({
|
cflare.auth({
|
||||||
email: config.cfEmail,
|
email: config.cfEmail,
|
||||||
key: config.cfKey
|
key: config.cfKey
|
||||||
});
|
});
|
||||||
var setChallenge = function (domainNameArg, challengeArg) {
|
let setChallenge = (domainNameArg, challengeArg) => {
|
||||||
var done = plugins.q.defer();
|
let done = plugins.q.defer();
|
||||||
plugins.beautylog.log("setting challenge for " + domainNameArg);
|
plugins.beautylog.log("setting challenge for " + domainNameArg);
|
||||||
cflare.createRecord(prefixName(domainNameArg), "TXT", challengeArg).then(function () {
|
cflare.createRecord(prefixName(domainNameArg), "TXT", challengeArg).then(() => {
|
||||||
plugins.beautylog.ok("Challenge has been set!");
|
plugins.beautylog.ok("Challenge has been set!");
|
||||||
plugins.beautylog.info("We need to cool down to let DNS propagate to edge locations!");
|
plugins.beautylog.info("We need to cool down to let DNS propagate to edge locations!");
|
||||||
cooldown().then(function () {
|
cooldown().then(() => {
|
||||||
done.resolve();
|
done.resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
var cleanChallenge = function (domainNameArg) {
|
let cleanChallenge = (domainNameArg) => {
|
||||||
var done = plugins.q.defer();
|
let done = plugins.q.defer();
|
||||||
plugins.beautylog.log("cleaning challenge for " + domainNameArg);
|
plugins.beautylog.log("cleaning challenge for " + domainNameArg);
|
||||||
cflare.removeRecord(prefixName(domainNameArg), "TXT");
|
cflare.removeRecord(prefixName(domainNameArg), "TXT");
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
var cooldown = function () {
|
let cooldown = () => {
|
||||||
var done = plugins.q.defer();
|
let done = plugins.q.defer();
|
||||||
var cooldowntime = 40000;
|
let cooldowntime = 40000;
|
||||||
var passedTime = 0;
|
let passedTime = 0;
|
||||||
plugins.beautylog.log("Cooling down! " + (cooldowntime / 1000).toString() + " seconds left");
|
plugins.beautylog.log("Cooling down! " + (cooldowntime / 1000).toString() + " seconds left");
|
||||||
var coolDownCounter = function () {
|
let coolDownCounter = () => {
|
||||||
setTimeout(function () {
|
setTimeout(() => {
|
||||||
if (cooldowntime <= passedTime) {
|
if (cooldowntime <= passedTime) {
|
||||||
plugins.beautylog.ok("Cooled down!");
|
plugins.beautylog.ok("Cooled down!");
|
||||||
done.resolve();
|
done.resolve();
|
||||||
@ -48,18 +48,18 @@ var cooldown = function () {
|
|||||||
coolDownCounter();
|
coolDownCounter();
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
var prefixName = function (domainNameArg) {
|
let prefixName = (domainNameArg) => {
|
||||||
return "_acme-challenge." + domainNameArg;
|
return "_acme-challenge." + domainNameArg;
|
||||||
};
|
};
|
||||||
smartcli.addCommand({
|
smartcli.addCommand({
|
||||||
commandName: "deploy_challenge"
|
commandName: "deploy_challenge"
|
||||||
}).then(function (argv) {
|
}).then((argv) => {
|
||||||
setChallenge(argv._[1], argv._[3]);
|
setChallenge(argv._[1], argv._[3]);
|
||||||
});
|
});
|
||||||
smartcli.addCommand({
|
smartcli.addCommand({
|
||||||
commandName: "clean_challenge"
|
commandName: "clean_challenge"
|
||||||
}).then(function (argv) {
|
}).then((argv) => {
|
||||||
cleanChallenge(argv._[1]);
|
cleanChallenge(argv._[1]);
|
||||||
});
|
});
|
||||||
smartcli.startParse();
|
smartcli.startParse();
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5ob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2VydC5ob29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsSUFBWSxPQUFPLFdBQU0sZ0JBQWdCLENBQUMsQ0FBQTtBQUMxQyxJQUFZLEtBQUssV0FBTSxjQUFjLENBQUMsQ0FBQTtBQUV0QyxJQUFJLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFL0MsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RCxJQUFJLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNSLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTztJQUNyQixHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUs7Q0FDcEIsQ0FBQyxDQUFDO0FBRUgsSUFBSSxZQUFZLEdBQUcsVUFBQyxhQUFxQixFQUFFLFlBQW9CO0lBQzNELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFDdkYsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ1osSUFBSSxDQUFDLE9BQU8sRUFB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
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5ob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2VydC5ob29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsTUFBWSxPQUFPLFdBQU0sZ0JBQWdCLENBQUMsQ0FBQTtBQUMxQyxNQUFZLEtBQUssV0FBTSxjQUFjLENBQUMsQ0FBQTtBQUV0QyxJQUFJLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFL0MsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RCxJQUFJLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNSLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTztJQUNyQixHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUs7Q0FDcEIsQ0FBQyxDQUFDO0FBRUgsSUFBSSxZQUFZLEdBQUcsQ0FBQyxhQUFxQixFQUFFLFlBQW9CO0lBQzNELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFDdkYsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ1osSUFBSSxDQUFDLE9BQU8sRUFB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
|
4
dist/cert.paths.js
vendored
4
dist/cert.paths.js
vendored
@ -1,5 +1,5 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
var plugins = require("./cert.plugins");
|
const plugins = require("./cert.plugins");
|
||||||
// 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");
|
||||||
@ -9,4 +9,4 @@ exports.letsencryptSh = plugins.path.join(__dirname, "assets/letsencrypt.sh");
|
|||||||
exports.certDir = plugins.path.join(__dirname, "assets/certs");
|
exports.certDir = plugins.path.join(__dirname, "assets/certs");
|
||||||
exports.defaultSslDir = plugins.path.join(__dirname, "assets/defaultSslDir");
|
exports.defaultSslDir = plugins.path.join(__dirname, "assets/defaultSslDir");
|
||||||
exports.assetDir = plugins.path.join(__dirname, "assets/");
|
exports.assetDir = plugins.path.join(__dirname, "assets/");
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5wYXRocy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NlcnQucGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLElBQVksT0FBTyxXQUFNLGdCQUFnQixDQUFDLENBQUE7QUFFMUMsUUFBUTtBQUNHLGdCQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3ZELGNBQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUMzRCxrQkFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ25FLHFCQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFaEYsTUFBTTtBQUNLLGVBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsY0FBYyxDQUFDLENBQUM7QUFDdEQscUJBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNwRSxnQkFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxTQUFTLENBQUMsQ0FBQyJ9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5wYXRocy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NlcnQucGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLGdCQUFnQixDQUFDLENBQUE7QUFFMUMsUUFBUTtBQUNHLGdCQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3ZELGNBQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUMzRCxrQkFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ25FLHFCQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFaEYsTUFBTTtBQUNLLGVBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsY0FBYyxDQUFDLENBQUM7QUFDdEQscUJBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNwRSxnQkFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxTQUFTLENBQUMsQ0FBQyJ9
|
2
dist/cert.plugins.d.ts
vendored
2
dist/cert.plugins.d.ts
vendored
@ -4,7 +4,7 @@ export import cflare = require("cflare");
|
|||||||
export declare let fs: any;
|
export declare let fs: any;
|
||||||
export import path = require("path");
|
export import path = require("path");
|
||||||
export import q = require("q");
|
export import q = require("q");
|
||||||
export declare let shelljs: any;
|
export import shelljs = require("shelljs");
|
||||||
export import smartcli = require("smartcli");
|
export import smartcli = require("smartcli");
|
||||||
export import smartfile = require("smartfile");
|
export import smartfile = require("smartfile");
|
||||||
export import smartgit = require("smartgit");
|
export import smartgit = require("smartgit");
|
||||||
|
2
dist/cert.plugins.js
vendored
2
dist/cert.plugins.js
vendored
@ -10,4 +10,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2VydC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDVixpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLGNBQU0sV0FBVyxRQUFRLENBQUMsQ0FBQztBQUM5QixVQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RCLFlBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUN2QixTQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDcEIsZUFBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMxQixnQkFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDakMsZ0JBQVEsV0FBVyxVQUFVLENBQUMsQ0FBQztBQUMvQixtQkFBVyxXQUFXLGFBQWEsQ0FBQyxDQUFDIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2VydC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDVixpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLGNBQU0sV0FBVyxRQUFRLENBQUMsQ0FBQztBQUM5QixVQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RCLFlBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUN2QixTQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDakIsZUFBTyxXQUFXLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLGdCQUFRLFdBQVcsVUFBVSxDQUFDLENBQUM7QUFDL0IsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNqQyxnQkFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLG1CQUFXLFdBQVcsYUFBYSxDQUFDLENBQUMifQ==
|
13
dist/index.d.ts
vendored
13
dist/index.d.ts
vendored
@ -13,11 +13,24 @@ export declare class Cert {
|
|||||||
private _sslDir;
|
private _sslDir;
|
||||||
private _gitOriginRepo;
|
private _gitOriginRepo;
|
||||||
private _testMode;
|
private _testMode;
|
||||||
|
domainsCurrentlyRequesting: string[];
|
||||||
certificatesPresent: Certificate[];
|
certificatesPresent: Certificate[];
|
||||||
certificatesValid: Certificate[];
|
certificatesValid: Certificate[];
|
||||||
|
/**
|
||||||
|
* Constructor for Cert object
|
||||||
|
*/
|
||||||
constructor(optionsArg: ICertConstructorOptions);
|
constructor(optionsArg: ICertConstructorOptions);
|
||||||
|
/**
|
||||||
|
* Pulls already requested certificates from git origin
|
||||||
|
*/
|
||||||
sslGitOriginPull: () => void;
|
sslGitOriginPull: () => void;
|
||||||
|
/**
|
||||||
|
* Pushes all new requested certificates to git origin
|
||||||
|
*/
|
||||||
sslGitOriginAddCommitPush: () => void;
|
sslGitOriginAddCommitPush: () => void;
|
||||||
|
/**
|
||||||
|
* gets a ssl cert for a given domain
|
||||||
|
*/
|
||||||
getDomainCert(domainNameArg: string, optionsArg?: {
|
getDomainCert(domainNameArg: string, optionsArg?: {
|
||||||
force: boolean;
|
force: boolean;
|
||||||
}): plugins.q.Promise<{}>;
|
}): plugins.q.Promise<{}>;
|
||||||
|
120
dist/index.js
vendored
120
dist/index.js
vendored
File diff suppressed because one or more lines are too long
14
dist/install.js
vendored
14
dist/install.js
vendored
@ -1,19 +1,19 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
var plugins = require("./cert.plugins");
|
const plugins = require("./cert.plugins");
|
||||||
var paths = require("./cert.paths");
|
const paths = require("./cert.paths");
|
||||||
exports.startInstall = function () {
|
exports.startInstall = () => {
|
||||||
var done = plugins.q.defer();
|
let done = plugins.q.defer();
|
||||||
plugins.beautylog.info("installing letsencrypt.sh locally...");
|
plugins.beautylog.info("installing letsencrypt.sh locally...");
|
||||||
plugins.fs.ensureDir(plugins.path.join(__dirname, "assets/"));
|
plugins.fs.ensureDir(plugins.path.join(__dirname, "assets/"));
|
||||||
plugins.smartfile.remote.toFs("https://raw.githubusercontent.com/lukas2511/letsencrypt.sh/master/letsencrypt.sh", paths.letsencryptSh).then(function () {
|
plugins.smartfile.remote.toFs("https://raw.githubusercontent.com/lukas2511/letsencrypt.sh/master/letsencrypt.sh", paths.letsencryptSh).then(() => {
|
||||||
plugins.beautylog.success("Done!");
|
plugins.beautylog.success("Done!");
|
||||||
done.resolve();
|
done.resolve();
|
||||||
});
|
});
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
var smartcli = new plugins.smartcli.Smartcli();
|
let smartcli = new plugins.smartcli.Smartcli();
|
||||||
smartcli.addCommand({
|
smartcli.addCommand({
|
||||||
commandName: "install"
|
commandName: "install"
|
||||||
}).then(exports.startInstall);
|
}).then(exports.startInstall);
|
||||||
smartcli.startParse();
|
smartcli.startParse();
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2luc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLElBQVksT0FBTyxXQUFNLGdCQUFnQixDQUFDLENBQUE7QUFDMUMsSUFBWSxLQUFLLFdBQU0sY0FBYyxDQUFDLENBQUE7QUFFM0Isb0JBQVksR0FBRztJQUN0QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFFL0QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6QixrRkFBa0YsRUFDbEYsS0FBSyxDQUFDLGFBQWEsQ0FDdEIsQ0FBQyxJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixJQUFJLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDL0MsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNoQixXQUFXLEVBQUMsU0FBUztDQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFZLENBQUMsQ0FBQztBQUN0QixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMifQ==
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2luc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLGdCQUFnQixDQUFDLENBQUE7QUFDMUMsTUFBWSxLQUFLLFdBQU0sY0FBYyxDQUFDLENBQUE7QUFFM0Isb0JBQVksR0FBRztJQUN0QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFFL0QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6QixrRkFBa0YsRUFDbEYsS0FBSyxDQUFDLGFBQWEsQ0FDdEIsQ0FBQyxJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixJQUFJLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDL0MsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNoQixXQUFXLEVBQUMsU0FBUztDQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFZLENBQUMsQ0FBQztBQUN0QixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMifQ==
|
16
package.json
16
package.json
@ -27,24 +27,24 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/pushrocks/cert#readme",
|
"homepage": "https://gitlab.com/pushrocks/cert#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/minimatch": "*",
|
"@types/minimatch": "^2.0.28",
|
||||||
"@types/q": "*",
|
"@types/q": "^0.0.27",
|
||||||
"@types/shelljs": "*",
|
"@types/shelljs": "^0.3.27",
|
||||||
"beautylog": "^5.0.13",
|
"beautylog": "^5.0.14",
|
||||||
"cflare": "0.0.9",
|
"cflare": "0.0.9",
|
||||||
"fs-extra": "^0.30.0",
|
"fs-extra": "^0.30.0",
|
||||||
"q": "^1.4.1",
|
"q": "^1.4.1",
|
||||||
"shelljs": "^0.7.0",
|
"shelljs": "^0.7.0",
|
||||||
"smartcli": "^1.0.4",
|
"smartcli": "^1.0.4",
|
||||||
"smartfile": "^4.0.10",
|
"smartfile": "^4.0.12",
|
||||||
"smartgit": "0.1.8",
|
"smartgit": "0.1.9",
|
||||||
"smartstring": "^2.0.10",
|
"smartstring": "^2.0.15",
|
||||||
"typings-global": "^1.0.6"
|
"typings-global": "^1.0.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"npmts-g": "^5.2.6",
|
"npmts-g": "^5.2.6",
|
||||||
"qenv": "^1.0.8",
|
"qenv": "^1.0.8",
|
||||||
"should": "^9.0.2",
|
"should": "^10.0.0",
|
||||||
"typings-test": "^1.0.1"
|
"typings-test": "^1.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
23
test/test.js
23
test/test.js
@ -1,17 +1,18 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
require("typings-test");
|
require("typings-test");
|
||||||
require("should");
|
require("should");
|
||||||
var qenv_1 = require("qenv");
|
const qenv_1 = require("qenv");
|
||||||
var path = require("path");
|
const path = require("path");
|
||||||
var install_1 = require("../dist/install");
|
const q = require("q");
|
||||||
var cert = require("../dist/index");
|
const install_1 = require("../dist/install");
|
||||||
var testQenv = new qenv_1.Qenv(process.cwd(), process.cwd() + "/.nogit");
|
const cert = require("../dist/index");
|
||||||
var testCert;
|
let testQenv = new qenv_1.Qenv(process.cwd(), process.cwd() + "/.nogit");
|
||||||
|
let testCert;
|
||||||
describe("cert", function () {
|
describe("cert", function () {
|
||||||
describe("install", function () {
|
describe("install", function () {
|
||||||
it("should download letsencrypt.sh", function (done) {
|
it("should download letsencrypt.sh", function (done) {
|
||||||
this.timeout(5000);
|
this.timeout(5000);
|
||||||
install_1.startInstall().then(function () {
|
install_1.startInstall().then(() => {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -30,10 +31,14 @@ describe("cert", function () {
|
|||||||
});
|
});
|
||||||
it("should get a valid certificate", function (done) {
|
it("should get a valid certificate", function (done) {
|
||||||
this.timeout(120000);
|
this.timeout(120000);
|
||||||
testCert.getDomainCert("hello4.bleu.de").then(function () {
|
let promiseArray = [];
|
||||||
|
promiseArray.push(testCert.getDomainCert("testing1.bleu.de"));
|
||||||
|
//promiseArray.push(testCert.getDomainCert("testing2.bleu.de"));
|
||||||
|
//promiseArray.push(testCert.getDomainCert("testing3.bleu.de"));
|
||||||
|
q.all(promiseArray).then(() => {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUNoQixxQkFBbUIsTUFBTSxDQUFDLENBQUE7QUFDMUIsSUFBTyxJQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFFOUIsd0JBQTJCLGlCQUFpQixDQUFDLENBQUE7QUFDN0MsSUFBWSxJQUFJLFdBQU0sZUFBZSxDQUFDLENBQUE7QUFHdEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxXQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUVsRSxJQUFJLFFBQWtCLENBQUM7QUFFdkIsUUFBUSxDQUFDLE1BQU0sRUFBQztJQUNaLFFBQVEsQ0FBQyxTQUFTLEVBQUM7UUFDZixFQUFFLENBQUMsZ0NBQWdDLEVBQUMsVUFBUyxJQUFJO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsc0JBQVksRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDaEIsSUFBSSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixRQUFRLENBQUMsTUFBTSxFQUFDO1FBQ1osRUFBRSxDQUFDLDRDQUE0QyxFQUFDO1lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtnQkFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTtnQkFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFDLGFBQWEsQ0FBQztnQkFDOUMsYUFBYSxFQUFDLGtEQUFrRDtnQkFDaEUsUUFBUSxFQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBQyxVQUFTLElBQUk7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQixRQUFRLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQyxJQUFJLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFDIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUNoQix1QkFBbUIsTUFBTSxDQUFDLENBQUE7QUFDMUIsTUFBTyxJQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDOUIsTUFBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDeEIsMEJBQTJCLGlCQUFpQixDQUFDLENBQUE7QUFDN0MsTUFBWSxJQUFJLFdBQU0sZUFBZSxDQUFDLENBQUE7QUFHdEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxXQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUVsRSxJQUFJLFFBQWtCLENBQUM7QUFFdkIsUUFBUSxDQUFDLE1BQU0sRUFBQztJQUNaLFFBQVEsQ0FBQyxTQUFTLEVBQUM7UUFDZixFQUFFLENBQUMsZ0NBQWdDLEVBQUMsVUFBUyxJQUFJO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsc0JBQVksRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDaEIsSUFBSSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixRQUFRLENBQUMsTUFBTSxFQUFDO1FBQ1osRUFBRSxDQUFDLDRDQUE0QyxFQUFDO1lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtnQkFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTtnQkFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFDLGFBQWEsQ0FBQztnQkFDOUMsYUFBYSxFQUFDLGtEQUFrRDtnQkFDaEUsUUFBUSxFQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBQyxVQUFTLElBQUk7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUM5RCxnRUFBZ0U7WUFDaEUsZ0VBQWdFO1lBQ2hFLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyQixJQUFJLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFDIn0=
|
@ -2,7 +2,7 @@ import "typings-test";
|
|||||||
import "should";
|
import "should";
|
||||||
import {Qenv} from "qenv";
|
import {Qenv} from "qenv";
|
||||||
import path = require("path");
|
import path = require("path");
|
||||||
|
import q = require("q");
|
||||||
import {startInstall} from "../dist/install";
|
import {startInstall} from "../dist/install";
|
||||||
import * as cert from "../dist/index";
|
import * as cert from "../dist/index";
|
||||||
|
|
||||||
@ -34,7 +34,11 @@ describe("cert",function(){
|
|||||||
})
|
})
|
||||||
it("should get a valid certificate",function(done){
|
it("should get a valid certificate",function(done){
|
||||||
this.timeout(120000);
|
this.timeout(120000);
|
||||||
testCert.getDomainCert("hello4.bleu.de").then(() => {
|
let promiseArray = [];
|
||||||
|
promiseArray.push(testCert.getDomainCert("testing1.bleu.de"));
|
||||||
|
//promiseArray.push(testCert.getDomainCert("testing2.bleu.de"));
|
||||||
|
//promiseArray.push(testCert.getDomainCert("testing3.bleu.de"));
|
||||||
|
q.all(promiseArray).then(() => {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
@ -4,7 +4,7 @@ export import cflare = require("cflare");
|
|||||||
export let fs = require("fs-extra");
|
export let fs = require("fs-extra");
|
||||||
export import path = require("path");
|
export import path = require("path");
|
||||||
export import q = require("q");
|
export import q = require("q");
|
||||||
export let shelljs = require("shelljs");
|
export import shelljs = require("shelljs");
|
||||||
export import smartcli = require("smartcli");
|
export import smartcli = require("smartcli");
|
||||||
export import smartfile = require("smartfile");
|
export import smartfile = require("smartfile");
|
||||||
export import smartgit = require("smartgit");
|
export import smartgit = require("smartgit");
|
||||||
|
48
ts/index.ts
48
ts/index.ts
@ -14,9 +14,14 @@ export class Cert {
|
|||||||
private _cfKey: string;
|
private _cfKey: string;
|
||||||
private _sslDir: string;
|
private _sslDir: string;
|
||||||
private _gitOriginRepo: string;
|
private _gitOriginRepo: string;
|
||||||
private _testMode: boolean
|
private _testMode: boolean;
|
||||||
|
domainsCurrentlyRequesting: string[] = [];
|
||||||
certificatesPresent: Certificate[];
|
certificatesPresent: Certificate[];
|
||||||
certificatesValid: Certificate[];
|
certificatesValid: Certificate[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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;
|
||||||
@ -51,12 +56,23 @@ export class Cert {
|
|||||||
leShConfigString,
|
leShConfigString,
|
||||||
paths.leShConfig
|
paths.leShConfig
|
||||||
);
|
);
|
||||||
|
plugins.shelljs.exec("chmod 700 " + paths.letsencryptSh);
|
||||||
|
plugins.shelljs.exec("chmod 700 " + paths.certHook);
|
||||||
|
plugins.shelljs.exec(`bash -c "${paths.letsencryptSh}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pulls already requested certificates from git origin
|
||||||
|
*/
|
||||||
sslGitOriginPull = () => {
|
sslGitOriginPull = () => {
|
||||||
if (this._gitOriginRepo) {
|
if (this._gitOriginRepo) {
|
||||||
plugins.smartgit.pull(this._sslDir, "origin", "master");
|
plugins.smartgit.pull(this._sslDir, "origin", "master");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pushes all new requested certificates to git origin
|
||||||
|
*/
|
||||||
sslGitOriginAddCommitPush = () => {
|
sslGitOriginAddCommitPush = () => {
|
||||||
if (this._gitOriginRepo) {
|
if (this._gitOriginRepo) {
|
||||||
plugins.smartgit.add.addAll(this._sslDir);
|
plugins.smartgit.add.addAll(this._sslDir);
|
||||||
@ -64,23 +80,31 @@ export class Cert {
|
|||||||
plugins.smartgit.push(this._sslDir, "origin", "master");
|
plugins.smartgit.push(this._sslDir, "origin", "master");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gets a ssl cert for a given domain
|
||||||
|
*/
|
||||||
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();
|
||||||
this.sslGitOriginPull();
|
|
||||||
if (!checkDomainsStillValid(domainNameArg, this._sslDir) || optionsArg.force) {
|
if (!checkDomainsStillValid(domainNameArg, this._sslDir) || optionsArg.force) {
|
||||||
plugins.shelljs.exec("chmod 700 " + paths.letsencryptSh);
|
|
||||||
plugins.shelljs.exec("chmod 700 " + paths.certHook);
|
|
||||||
plugins.smartfile.fs.ensureDir(paths.certDir);
|
plugins.smartfile.fs.ensureDir(paths.certDir);
|
||||||
|
plugins.beautylog.info(`getting cert for ${domainNameArg}`);
|
||||||
plugins.shelljs.exec(
|
plugins.shelljs.exec(
|
||||||
`bash -c "${paths.letsencryptSh} -c -f ${paths.leShConfig} -d ${domainNameArg} -t dns-01 -k ${paths.certHook} -o ${paths.certDir}"`
|
`bash -c "${paths.letsencryptSh} -c --no-lock -f ${paths.leShConfig} -d ${domainNameArg} -t dns-01 -k ${paths.certHook} -o ${paths.certDir}"`,
|
||||||
|
{
|
||||||
|
silent: true,
|
||||||
|
async:true
|
||||||
|
},
|
||||||
|
(codeArg, stdoutArg) => {
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
done.resolve();
|
||||||
|
}
|
||||||
);
|
);
|
||||||
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.sslGitOriginAddCommitPush();
|
|
||||||
done.resolve();
|
|
||||||
} else {
|
} else {
|
||||||
plugins.beautylog.info("certificate for " + domainNameArg + " is still valid! Not fetching new one!");
|
plugins.beautylog.info("certificate for " + domainNameArg + " is still valid! Not fetching new one!");
|
||||||
done.resolve();
|
done.resolve();
|
||||||
|
Loading…
Reference in New Issue
Block a user