@abtnode/certificate-manager 1.7.8 → 1.7.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/libs/acme-manager.js +35 -32
- package/package.json +7 -7
package/libs/acme-manager.js
CHANGED
|
@@ -31,24 +31,16 @@ class Manager extends EventEmitter {
|
|
|
31
31
|
this.maintainerEmail = maintainerEmail;
|
|
32
32
|
this.renewalOffsetInDay = renewalOffsetInDay;
|
|
33
33
|
this.dataDir = dataDir;
|
|
34
|
+
this.getJobId = (job) => (job ? md5(`${job.domain}-${job.challenge}`) : '');
|
|
34
35
|
this.queue = createQueue({
|
|
35
36
|
name: 'create-cert-queue',
|
|
36
37
|
dataDir,
|
|
37
|
-
onJob:
|
|
38
|
-
const data = await states.certificate.findOne({ domain });
|
|
39
|
-
if (data) {
|
|
40
|
-
await this._createOrRenewCert({
|
|
41
|
-
domain: data.domain,
|
|
42
|
-
subscriberEmail: this.subscriberEmail,
|
|
43
|
-
challenges: { 'http-01': http01 },
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
},
|
|
38
|
+
onJob: (data) => this._createOrRenewCert(data),
|
|
47
39
|
options: {
|
|
48
|
-
maxRetries:
|
|
40
|
+
maxRetries: 0,
|
|
49
41
|
retryDelay: 60 * 1000,
|
|
50
42
|
maxTimeout: 60 * 1000, // throw timeout error after 1 minutes
|
|
51
|
-
id: (job) => (job
|
|
43
|
+
id: (job) => this.getJobId(job),
|
|
52
44
|
},
|
|
53
45
|
});
|
|
54
46
|
}
|
|
@@ -67,19 +59,39 @@ class Manager extends EventEmitter {
|
|
|
67
59
|
throw new Error('domain is required when add domain');
|
|
68
60
|
}
|
|
69
61
|
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
|
|
62
|
+
let cert = await states.certificate.findOne({ domain });
|
|
63
|
+
if (!cert) {
|
|
64
|
+
cert = await states.certificate.insert({
|
|
65
|
+
domain,
|
|
66
|
+
source: CERT_SOURCE.letsEncrypt,
|
|
67
|
+
status: CERT_STATUS.waiting,
|
|
68
|
+
});
|
|
73
69
|
}
|
|
74
70
|
|
|
75
|
-
const
|
|
71
|
+
const getJob = (id) =>
|
|
72
|
+
new Promise((resolve, reject) => {
|
|
73
|
+
this.queue.store.getJob(id, (error, job) => {
|
|
74
|
+
if (error) {
|
|
75
|
+
return reject(error);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return resolve(job);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
const jobData = {
|
|
76
83
|
domain,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
84
|
+
subscriberEmail: this.subscriberEmail,
|
|
85
|
+
challenges: { 'http-01': http01 },
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const job = await getJob(jobData);
|
|
89
|
+
|
|
90
|
+
if (!job) {
|
|
91
|
+
this.queue.push(jobData);
|
|
92
|
+
}
|
|
80
93
|
|
|
81
|
-
|
|
82
|
-
return result;
|
|
94
|
+
return cert;
|
|
83
95
|
}
|
|
84
96
|
|
|
85
97
|
getCertState(domain) {
|
|
@@ -148,17 +160,8 @@ class Manager extends EventEmitter {
|
|
|
148
160
|
async checkRenewalCerts() {
|
|
149
161
|
logger.info('run generate certificate job');
|
|
150
162
|
const certs = await states.certificate.find({
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
source: CERT_SOURCE.letsEncrypt,
|
|
154
|
-
status: { $in: [CERT_STATUS.waiting, CERT_STATUS.error] },
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
source: CERT_SOURCE.letsEncrypt,
|
|
158
|
-
status: CERT_STATUS.generated,
|
|
159
|
-
'meta.validTo': { $lte: moment().add(this.renewalOffsetInDay, 'days').unix() * 1000 },
|
|
160
|
-
},
|
|
161
|
-
],
|
|
163
|
+
source: CERT_SOURCE.letsEncrypt,
|
|
164
|
+
'meta.validTo': { $exists: true, $lte: moment().add(this.renewalOffsetInDay, 'days').unix() * 1000 },
|
|
162
165
|
});
|
|
163
166
|
|
|
164
167
|
certs.forEach(({ domain }) => this.queue.push({ domain }));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abtnode/certificate-manager",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.11",
|
|
4
4
|
"description": "Manage ABT Node SSL certificates",
|
|
5
5
|
"author": "polunzh <polunzh@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/ArcBlock/blocklet-server#readme",
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"url": "https://github.com/ArcBlock/blocklet-server/issues"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@abtnode/cron": "1.7.
|
|
35
|
-
"@abtnode/db": "1.7.
|
|
36
|
-
"@abtnode/logger": "1.7.
|
|
37
|
-
"@abtnode/queue": "1.7.
|
|
38
|
-
"@abtnode/util": "1.7.
|
|
34
|
+
"@abtnode/cron": "1.7.11",
|
|
35
|
+
"@abtnode/db": "1.7.11",
|
|
36
|
+
"@abtnode/logger": "1.7.11",
|
|
37
|
+
"@abtnode/queue": "1.7.11",
|
|
38
|
+
"@abtnode/util": "1.7.11",
|
|
39
39
|
"@fidm/x509": "^1.2.1",
|
|
40
40
|
"@greenlock/manager": "^3.1.0",
|
|
41
41
|
"@nedb/core": "^1.1.0",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"punycode": "^2.1.1",
|
|
56
56
|
"ursa-optional": "^0.10.2"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "84e741e6b37e47d52bf834ce3ace8ed601d0896c"
|
|
59
59
|
}
|