@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.
@@ -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: async ({ domain }) => {
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: 3,
40
+ maxRetries: 0,
49
41
  retryDelay: 60 * 1000,
50
42
  maxTimeout: 60 * 1000, // throw timeout error after 1 minutes
51
- id: (job) => (job ? md5(`${job.domain}-${job.challenge}`) : ''),
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
- const existed = await states.certificate.findOne({ domain });
71
- if (existed) {
72
- return existed;
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 result = await states.certificate.insert({
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
- source: CERT_SOURCE.letsEncrypt,
78
- status: CERT_STATUS.waiting,
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
- this.queue.push({ domain });
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
- $or: [
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.8",
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.8",
35
- "@abtnode/db": "1.7.8",
36
- "@abtnode/logger": "1.7.8",
37
- "@abtnode/queue": "1.7.8",
38
- "@abtnode/util": "1.7.8",
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": "ae75dd20b4750a31dc53c88b75ed1d95c8f15397"
58
+ "gitHead": "84e741e6b37e47d52bf834ce3ace8ed601d0896c"
59
59
  }