@push.rocks/smartacme 4.0.8 → 6.0.0
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/LICENSE +1 -1
- package/dist_ts/00_commitinfo_data.d.ts +1 -1
- package/dist_ts/00_commitinfo_data.js +4 -4
- package/dist_ts/handlers/Dns01Handler.d.ts +13 -0
- package/dist_ts/handlers/Dns01Handler.js +24 -0
- package/dist_ts/handlers/Http01Handler.d.ts +34 -0
- package/dist_ts/handlers/Http01Handler.js +32 -0
- package/dist_ts/handlers/IChallengeHandler.d.ts +22 -0
- package/dist_ts/handlers/IChallengeHandler.js +2 -0
- package/dist_ts/handlers/index.d.ts +3 -0
- package/dist_ts/handlers/index.js +4 -0
- package/dist_ts/index.d.ts +1 -1
- package/dist_ts/index.js +2 -2
- package/dist_ts/smartacme.classes.cert.d.ts +1 -1
- package/dist_ts/smartacme.classes.cert.js +14 -14
- package/dist_ts/smartacme.classes.certmanager.d.ts +4 -4
- package/dist_ts/smartacme.classes.certmanager.js +7 -7
- package/dist_ts/smartacme.classes.certmatcher.d.ts +1 -1
- package/dist_ts/smartacme.classes.certmatcher.js +2 -2
- package/dist_ts/smartacme.classes.smartacme.d.ts +39 -10
- package/dist_ts/smartacme.classes.smartacme.js +150 -48
- package/dist_ts/smartacme.plugins.d.ts +4 -2
- package/dist_ts/smartacme.plugins.js +6 -3
- package/npmextra.json +23 -3
- package/package.json +39 -27
- package/readme.hints.md +2 -0
- package/readme.md +235 -39
- package/ts/00_commitinfo_data.ts +3 -3
- package/ts/handlers/Dns01Handler.ts +40 -0
- package/ts/handlers/Http01Handler.ts +54 -0
- package/ts/handlers/IChallengeHandler.ts +22 -0
- package/ts/handlers/index.ts +4 -0
- package/ts/index.ts +1 -1
- package/ts/smartacme.classes.cert.ts +4 -4
- package/ts/smartacme.classes.certmanager.ts +9 -9
- package/ts/smartacme.classes.certmatcher.ts +1 -1
- package/ts/smartacme.classes.smartacme.ts +185 -64
- package/ts/smartacme.plugins.ts +5 -2
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as plugins from './smartacme.plugins.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { SmartacmeCert } from './smartacme.classes.cert.js';
|
|
3
|
+
import { SmartacmeCertManager } from './smartacme.classes.certmanager.js';
|
|
4
|
+
import { SmartacmeCertMatcher } from './smartacme.classes.certmatcher.js';
|
|
5
|
+
import { commitinfo } from './00_commitinfo_data.js';
|
|
5
6
|
/**
|
|
6
7
|
* class SmartAcme
|
|
7
8
|
* can be used for setting up communication with an ACME authority
|
|
@@ -14,28 +15,47 @@ import { CertMatcher } from './smartacme.classes.certmatcher.js';
|
|
|
14
15
|
*/
|
|
15
16
|
export class SmartAcme {
|
|
16
17
|
constructor(optionsArg) {
|
|
17
|
-
this.smartdns = new plugins.
|
|
18
|
+
this.smartdns = new plugins.smartdnsClient.Smartdns({});
|
|
19
|
+
// track pending DNS challenges for graceful shutdown
|
|
20
|
+
this.pendingChallenges = [];
|
|
18
21
|
this.options = optionsArg;
|
|
19
|
-
this.logger =
|
|
22
|
+
this.logger = plugins.smartlog.Smartlog.createForCommitinfo(commitinfo);
|
|
23
|
+
// enable console output for structured logging
|
|
24
|
+
this.logger.enableConsole();
|
|
25
|
+
// initialize retry/backoff options
|
|
26
|
+
this.retryOptions = {
|
|
27
|
+
retries: optionsArg.retryOptions?.retries ?? 3,
|
|
28
|
+
factor: optionsArg.retryOptions?.factor ?? 2,
|
|
29
|
+
minTimeoutMs: optionsArg.retryOptions?.minTimeoutMs ?? 1000,
|
|
30
|
+
maxTimeoutMs: optionsArg.retryOptions?.maxTimeoutMs ?? 30000,
|
|
31
|
+
};
|
|
32
|
+
// initialize challenge handlers (must provide at least one)
|
|
33
|
+
if (!optionsArg.challengeHandlers || optionsArg.challengeHandlers.length === 0) {
|
|
34
|
+
throw new Error('You must provide at least one ACME challenge handler via options.challengeHandlers');
|
|
35
|
+
}
|
|
36
|
+
this.challengeHandlers = optionsArg.challengeHandlers;
|
|
37
|
+
// initialize challenge priority
|
|
38
|
+
this.challengePriority =
|
|
39
|
+
optionsArg.challengePriority && optionsArg.challengePriority.length > 0
|
|
40
|
+
? optionsArg.challengePriority
|
|
41
|
+
: this.challengeHandlers.map((h) => h.getSupportedTypes()[0]);
|
|
20
42
|
}
|
|
21
43
|
/**
|
|
22
|
-
*
|
|
44
|
+
* starts the instance
|
|
23
45
|
* ```ts
|
|
24
|
-
* await myCloudlyInstance.
|
|
46
|
+
* await myCloudlyInstance.start() // does not support options
|
|
25
47
|
* ```
|
|
26
48
|
*/
|
|
27
|
-
async
|
|
49
|
+
async start() {
|
|
28
50
|
this.privateKey =
|
|
29
51
|
this.options.accountPrivateKey || (await plugins.acme.forge.createPrivateKey()).toString();
|
|
30
|
-
this.setChallenge = this.options.setChallenge;
|
|
31
|
-
this.removeChallenge = this.options.removeChallenge;
|
|
32
52
|
// CertMangaer
|
|
33
|
-
this.certmanager = new
|
|
53
|
+
this.certmanager = new SmartacmeCertManager(this, {
|
|
34
54
|
mongoDescriptor: this.options.mongoDescriptor,
|
|
35
55
|
});
|
|
36
56
|
await this.certmanager.init();
|
|
37
57
|
// CertMatcher
|
|
38
|
-
this.certmatcher = new
|
|
58
|
+
this.certmatcher = new SmartacmeCertMatcher();
|
|
39
59
|
// ACME Client
|
|
40
60
|
this.client = new plugins.acme.Client({
|
|
41
61
|
directoryUrl: (() => {
|
|
@@ -53,10 +73,63 @@ export class SmartAcme {
|
|
|
53
73
|
termsOfServiceAgreed: true,
|
|
54
74
|
contact: [`mailto:${this.options.accountEmail}`],
|
|
55
75
|
});
|
|
76
|
+
// Setup graceful shutdown handlers
|
|
77
|
+
process.on('SIGINT', () => this.handleSignal('SIGINT'));
|
|
78
|
+
process.on('SIGTERM', () => this.handleSignal('SIGTERM'));
|
|
56
79
|
}
|
|
57
80
|
async stop() {
|
|
58
81
|
await this.certmanager.smartdataDb.close();
|
|
59
82
|
}
|
|
83
|
+
/** Retry helper with exponential backoff */
|
|
84
|
+
async retry(operation, operationName = 'operation') {
|
|
85
|
+
let attempt = 0;
|
|
86
|
+
let delay = this.retryOptions.minTimeoutMs;
|
|
87
|
+
while (true) {
|
|
88
|
+
try {
|
|
89
|
+
return await operation();
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
attempt++;
|
|
93
|
+
if (attempt > this.retryOptions.retries) {
|
|
94
|
+
await this.logger.log('error', `Operation ${operationName} failed after ${attempt} attempts`, err);
|
|
95
|
+
throw err;
|
|
96
|
+
}
|
|
97
|
+
await this.logger.log('warn', `Operation ${operationName} failed on attempt ${attempt}, retrying in ${delay}ms`, err);
|
|
98
|
+
await plugins.smartdelay.delayFor(delay);
|
|
99
|
+
delay = Math.min(delay * this.retryOptions.factor, this.retryOptions.maxTimeoutMs);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** Clean up pending challenges and shut down */
|
|
104
|
+
async handleShutdown() {
|
|
105
|
+
for (const input of [...this.pendingChallenges]) {
|
|
106
|
+
const type = input.type;
|
|
107
|
+
const handler = this.challengeHandlers.find((h) => h.getSupportedTypes().includes(type));
|
|
108
|
+
if (handler) {
|
|
109
|
+
try {
|
|
110
|
+
await handler.cleanup(input);
|
|
111
|
+
await this.logger.log('info', `Removed pending ${type} challenge during shutdown`, input);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
await this.logger.log('error', `Failed to remove pending ${type} challenge during shutdown`, err);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
await this.logger.log('warn', `No handler for pending challenge type '${type}' during shutdown; skipping cleanup`, input);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
this.pendingChallenges = [];
|
|
122
|
+
await this.stop();
|
|
123
|
+
}
|
|
124
|
+
/** Handle process signals for graceful shutdown */
|
|
125
|
+
handleSignal(sig) {
|
|
126
|
+
this.logger.log('info', `Received signal ${sig}, shutting down gracefully`);
|
|
127
|
+
this.handleShutdown()
|
|
128
|
+
.then(() => process.exit(0))
|
|
129
|
+
.catch((err) => {
|
|
130
|
+
this.logger.log('error', 'Error during shutdown', err).then(() => process.exit(1));
|
|
131
|
+
});
|
|
132
|
+
}
|
|
60
133
|
/**
|
|
61
134
|
* gets a certificate
|
|
62
135
|
* it runs through the following steps
|
|
@@ -88,50 +161,76 @@ export class SmartAcme {
|
|
|
88
161
|
}
|
|
89
162
|
// lets make sure others get the same interest
|
|
90
163
|
const currentDomainInterst = await this.certmanager.interestMap.addInterest(certDomainName);
|
|
91
|
-
/* Place new order */
|
|
92
|
-
const order = await this.client.createOrder({
|
|
164
|
+
/* Place new order with retry */
|
|
165
|
+
const order = await this.retry(() => this.client.createOrder({
|
|
93
166
|
identifiers: [
|
|
94
167
|
{ type: 'dns', value: certDomainName },
|
|
95
168
|
{ type: 'dns', value: `*.${certDomainName}` },
|
|
96
169
|
],
|
|
97
|
-
});
|
|
170
|
+
}), 'createOrder');
|
|
98
171
|
/* Get authorizations and select challenges */
|
|
99
|
-
const authorizations = await this.client.getAuthorizations(order);
|
|
172
|
+
const authorizations = await this.retry(() => this.client.getAuthorizations(order), 'getAuthorizations');
|
|
100
173
|
for (const authz of authorizations) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
174
|
+
await this.logger.log('debug', 'Authorization received', authz);
|
|
175
|
+
// select a handler based on configured priority
|
|
176
|
+
let selectedHandler = null;
|
|
177
|
+
let selectedChallengeArg = null;
|
|
178
|
+
for (const type of this.challengePriority) {
|
|
179
|
+
const candidate = authz.challenges.find((c) => c.type === type);
|
|
180
|
+
if (!candidate)
|
|
181
|
+
continue;
|
|
182
|
+
const handler = this.challengeHandlers.find((h) => h.getSupportedTypes().includes(type));
|
|
183
|
+
if (handler) {
|
|
184
|
+
selectedHandler = { type, handler };
|
|
185
|
+
selectedChallengeArg = candidate;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (!selectedHandler) {
|
|
190
|
+
throw new Error(`No challenge handler for domain ${authz.identifier.value}: supported types [${this.challengePriority.join(',')}]`);
|
|
191
|
+
}
|
|
192
|
+
const { type, handler } = selectedHandler;
|
|
193
|
+
// build handler input with keyAuthorization
|
|
194
|
+
let input;
|
|
195
|
+
// retrieve keyAuthorization for challenge
|
|
196
|
+
const keyAuth = await this.client.getChallengeKeyAuthorization(selectedChallengeArg);
|
|
197
|
+
if (type === 'dns-01') {
|
|
198
|
+
input = { type, hostName: `_acme-challenge.${authz.identifier.value}`, challenge: keyAuth };
|
|
199
|
+
}
|
|
200
|
+
else if (type === 'http-01') {
|
|
201
|
+
// HTTP-01 requires serving token at webPath
|
|
202
|
+
input = {
|
|
203
|
+
type,
|
|
204
|
+
token: selectedChallengeArg.token,
|
|
205
|
+
keyAuthorization: keyAuth,
|
|
206
|
+
webPath: `/.well-known/acme-challenge/${selectedChallengeArg.token}`,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
// generic challenge input: include raw challenge properties
|
|
211
|
+
input = { type, keyAuthorization: keyAuth, ...selectedChallengeArg };
|
|
212
|
+
}
|
|
213
|
+
this.pendingChallenges.push(input);
|
|
108
214
|
try {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
await
|
|
118
|
-
/* Verify that challenge is satisfied */
|
|
119
|
-
await this.client.verifyChallenge(authz, dnsChallenge);
|
|
120
|
-
/* Notify ACME provider that challenge is satisfied */
|
|
121
|
-
await this.client.completeChallenge(dnsChallenge);
|
|
122
|
-
/* Wait for ACME provider to respond with valid status */
|
|
123
|
-
await this.client.waitForValidStatus(dnsChallenge);
|
|
215
|
+
await this.retry(() => handler.prepare(input), `${type}.prepare`);
|
|
216
|
+
if (handler.verify) {
|
|
217
|
+
await this.retry(() => handler.verify(input), `${type}.verify`);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
await this.retry(() => this.client.verifyChallenge(authz, selectedChallengeArg), `${type}.verifyChallenge`);
|
|
221
|
+
}
|
|
222
|
+
await this.retry(() => this.client.completeChallenge(selectedChallengeArg), `${type}.completeChallenge`);
|
|
223
|
+
await this.retry(() => this.client.waitForValidStatus(selectedChallengeArg), `${type}.waitForValidStatus`);
|
|
124
224
|
}
|
|
125
225
|
finally {
|
|
126
|
-
/* Clean up challenge response */
|
|
127
226
|
try {
|
|
128
|
-
await this.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
});
|
|
227
|
+
await this.retry(() => handler.cleanup(input), `${type}.cleanup`);
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
await this.logger.log('error', `Error during ${type}.cleanup`, err);
|
|
132
231
|
}
|
|
133
|
-
|
|
134
|
-
|
|
232
|
+
finally {
|
|
233
|
+
this.pendingChallenges = this.pendingChallenges.filter((c) => c !== input);
|
|
135
234
|
}
|
|
136
235
|
}
|
|
137
236
|
}
|
|
@@ -140,8 +239,8 @@ export class SmartAcme {
|
|
|
140
239
|
commonName: `*.${certDomainName}`,
|
|
141
240
|
altNames: [certDomainName],
|
|
142
241
|
});
|
|
143
|
-
await this.client.finalizeOrder(order, csr);
|
|
144
|
-
const cert = await this.client.getCertificate(order);
|
|
242
|
+
await this.retry(() => this.client.finalizeOrder(order, csr), 'finalizeOrder');
|
|
243
|
+
const cert = await this.retry(() => this.client.getCertificate(order), 'getCertificate');
|
|
145
244
|
/* Done */
|
|
146
245
|
await this.certmanager.storeCertificate({
|
|
147
246
|
id: plugins.smartunique.shortId(),
|
|
@@ -160,5 +259,8 @@ export class SmartAcme {
|
|
|
160
259
|
currentDomainInterst.destroy();
|
|
161
260
|
return newCertificate;
|
|
162
261
|
}
|
|
262
|
+
async getAllCertificates() {
|
|
263
|
+
return SmartacmeCert.getInstances({});
|
|
264
|
+
}
|
|
163
265
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFjakU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFtQnBCLFlBQVksVUFBNkI7UUFkakMsYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFlbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsVUFBVTtZQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLElBQUksQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3RixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFFcEQsY0FBYztRQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFO1lBQ3ZDLGVBQWUsRUFB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
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQW1DckQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUF3QnBCLFlBQVksVUFBNkI7UUFuQmpDLGFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBWTNELHFEQUFxRDtRQUM3QyxzQkFBaUIsR0FBNEMsRUFBRSxDQUFDO1FBT3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxJQUFJLENBQUM7WUFDOUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUM7WUFDNUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxJQUFJLElBQUk7WUFDM0QsWUFBWSxF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
|
|
@@ -3,15 +3,17 @@ export { typedserver };
|
|
|
3
3
|
import * as lik from '@push.rocks/lik';
|
|
4
4
|
import * as smartdata from '@push.rocks/smartdata';
|
|
5
5
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
6
|
-
import * as
|
|
6
|
+
import * as smartdnsClient from '@push.rocks/smartdns/client';
|
|
7
7
|
import * as smartlog from '@push.rocks/smartlog';
|
|
8
8
|
import * as smartpromise from '@push.rocks/smartpromise';
|
|
9
9
|
import * as smartrequest from '@push.rocks/smartrequest';
|
|
10
10
|
import * as smartunique from '@push.rocks/smartunique';
|
|
11
11
|
import * as smartstring from '@push.rocks/smartstring';
|
|
12
12
|
import * as smarttime from '@push.rocks/smarttime';
|
|
13
|
-
export { lik, smartdata, smartdelay,
|
|
13
|
+
export { lik, smartdata, smartdelay, smartdnsClient, smartlog, smartpromise, smartrequest, smartunique, smartstring, smarttime, };
|
|
14
14
|
import * as tsclass from '@tsclass/tsclass';
|
|
15
15
|
export { tsclass };
|
|
16
16
|
import * as acme from 'acme-client';
|
|
17
17
|
export { acme };
|
|
18
|
+
import * as handlers from './handlers/index.js';
|
|
19
|
+
export { handlers };
|
|
@@ -5,18 +5,21 @@ export { typedserver };
|
|
|
5
5
|
import * as lik from '@push.rocks/lik';
|
|
6
6
|
import * as smartdata from '@push.rocks/smartdata';
|
|
7
7
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
8
|
-
import * as
|
|
8
|
+
import * as smartdnsClient from '@push.rocks/smartdns/client';
|
|
9
9
|
import * as smartlog from '@push.rocks/smartlog';
|
|
10
10
|
import * as smartpromise from '@push.rocks/smartpromise';
|
|
11
11
|
import * as smartrequest from '@push.rocks/smartrequest';
|
|
12
12
|
import * as smartunique from '@push.rocks/smartunique';
|
|
13
13
|
import * as smartstring from '@push.rocks/smartstring';
|
|
14
14
|
import * as smarttime from '@push.rocks/smarttime';
|
|
15
|
-
export { lik, smartdata, smartdelay,
|
|
15
|
+
export { lik, smartdata, smartdelay, smartdnsClient, smartlog, smartpromise, smartrequest, smartunique, smartstring, smarttime, };
|
|
16
16
|
// @tsclass scope
|
|
17
17
|
import * as tsclass from '@tsclass/tsclass';
|
|
18
18
|
export { tsclass };
|
|
19
19
|
// third party scope
|
|
20
20
|
import * as acme from 'acme-client';
|
|
21
21
|
export { acme };
|
|
22
|
-
|
|
22
|
+
// local handlers for challenge types
|
|
23
|
+
import * as handlers from './handlers/index.js';
|
|
24
|
+
export { handlers };
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFjbWUucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUI7QUFDbkIsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFFdkIsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxHQUFHLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxjQUFjLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUNMLEdBQUcsRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLGNBQWMsRUFDZCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsR0FDVixDQUFDO0FBRUYsaUJBQWlCO0FBQ2pCLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBRW5CLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDaEIscUNBQXFDO0FBQ3JDLE9BQU8sS0FBSyxRQUFRLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDIn0=
|
package/npmextra.json
CHANGED
|
@@ -2,17 +2,37 @@
|
|
|
2
2
|
"gitzone": {
|
|
3
3
|
"projectType": "npm",
|
|
4
4
|
"module": {
|
|
5
|
-
"githost": "
|
|
5
|
+
"githost": "code.foss.global",
|
|
6
6
|
"gitscope": "push.rocks",
|
|
7
7
|
"gitrepo": "smartacme",
|
|
8
|
-
"description": "
|
|
8
|
+
"description": "A TypeScript-based ACME client for LetsEncrypt certificate management with a focus on simplicity and power.",
|
|
9
9
|
"npmPackagename": "@push.rocks/smartacme",
|
|
10
10
|
"license": "MIT",
|
|
11
|
-
"projectDomain": "push.rocks"
|
|
11
|
+
"projectDomain": "push.rocks",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"ACME",
|
|
14
|
+
"LetsEncrypt",
|
|
15
|
+
"TypeScript",
|
|
16
|
+
"certificate management",
|
|
17
|
+
"DNS challenges",
|
|
18
|
+
"SSL/TLS",
|
|
19
|
+
"secure communication",
|
|
20
|
+
"domain validation",
|
|
21
|
+
"automation",
|
|
22
|
+
"crypto",
|
|
23
|
+
"MongoDB",
|
|
24
|
+
"dns-01 challenge",
|
|
25
|
+
"token-based challenges",
|
|
26
|
+
"certificate renewal",
|
|
27
|
+
"wildcard certificates"
|
|
28
|
+
]
|
|
12
29
|
}
|
|
13
30
|
},
|
|
14
31
|
"npmci": {
|
|
15
32
|
"npmGlobalTools": [],
|
|
16
33
|
"npmAccessLevel": "public"
|
|
34
|
+
},
|
|
35
|
+
"tsdoc": {
|
|
36
|
+
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
|
17
37
|
}
|
|
18
38
|
}
|
package/package.json
CHANGED
|
@@ -1,49 +1,61 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartacme",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "A TypeScript-based ACME client for LetsEncrypt certificate management with a focus on simplicity and power.",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
7
7
|
"typings": "dist_ts/index.d.ts",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "
|
|
11
|
+
"url": "https://code.foss.global/push.rocks/smartacme.git"
|
|
12
12
|
},
|
|
13
13
|
"keywords": [
|
|
14
|
+
"ACME",
|
|
15
|
+
"LetsEncrypt",
|
|
14
16
|
"TypeScript",
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
+
"certificate management",
|
|
18
|
+
"DNS challenges",
|
|
19
|
+
"SSL/TLS",
|
|
20
|
+
"secure communication",
|
|
21
|
+
"domain validation",
|
|
22
|
+
"automation",
|
|
23
|
+
"crypto",
|
|
24
|
+
"MongoDB",
|
|
25
|
+
"dns-01 challenge",
|
|
26
|
+
"token-based challenges",
|
|
27
|
+
"certificate renewal",
|
|
28
|
+
"wildcard certificates"
|
|
17
29
|
],
|
|
18
|
-
"author": "
|
|
30
|
+
"author": "Task Venture Capital GmbH",
|
|
19
31
|
"license": "MIT",
|
|
20
32
|
"bugs": {
|
|
21
|
-
"url": "https://
|
|
33
|
+
"url": "https://code.foss.global/push.rocks/smartacme/issues"
|
|
22
34
|
},
|
|
23
|
-
"homepage": "https://
|
|
35
|
+
"homepage": "https://code.foss.global/push.rocks/smartacme#readme",
|
|
24
36
|
"dependencies": {
|
|
25
|
-
"@api.global/typedserver": "^3.0.
|
|
26
|
-
"@push.rocks/lik": "^6.
|
|
27
|
-
"@push.rocks/smartdata": "^5.
|
|
37
|
+
"@api.global/typedserver": "^3.0.74",
|
|
38
|
+
"@push.rocks/lik": "^6.2.2",
|
|
39
|
+
"@push.rocks/smartdata": "^5.15.1",
|
|
28
40
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
29
|
-
"@push.rocks/smartdns": "^
|
|
30
|
-
"@push.rocks/smartlog": "^3.0.
|
|
31
|
-
"@push.rocks/smartpromise": "^4.
|
|
32
|
-
"@push.rocks/smartrequest": "^2.0
|
|
33
|
-
"@push.rocks/smartstring": "^4.0.
|
|
34
|
-
"@push.rocks/smarttime": "^4.
|
|
35
|
-
"@push.rocks/smartunique": "^3.0.
|
|
36
|
-
"@tsclass/tsclass": "^
|
|
37
|
-
"acme-client": "^4.
|
|
41
|
+
"@push.rocks/smartdns": "^6.2.2",
|
|
42
|
+
"@push.rocks/smartlog": "^3.0.7",
|
|
43
|
+
"@push.rocks/smartpromise": "^4.2.3",
|
|
44
|
+
"@push.rocks/smartrequest": "^2.1.0",
|
|
45
|
+
"@push.rocks/smartstring": "^4.0.15",
|
|
46
|
+
"@push.rocks/smarttime": "^4.1.1",
|
|
47
|
+
"@push.rocks/smartunique": "^3.0.9",
|
|
48
|
+
"@tsclass/tsclass": "^9.0.0",
|
|
49
|
+
"acme-client": "^5.4.0"
|
|
38
50
|
},
|
|
39
51
|
"devDependencies": {
|
|
40
|
-
"@apiclient.xyz/cloudflare": "^6.
|
|
41
|
-
"@git.zone/tsbuild": "^2.
|
|
42
|
-
"@git.zone/tsrun": "^1.
|
|
43
|
-
"@git.zone/tstest": "^1.0.
|
|
44
|
-
"@push.rocks/qenv": "^6.0
|
|
45
|
-
"@push.rocks/tapbundle": "^5.
|
|
46
|
-
"@types/node": "^
|
|
52
|
+
"@apiclient.xyz/cloudflare": "^6.3.2",
|
|
53
|
+
"@git.zone/tsbuild": "^2.3.2",
|
|
54
|
+
"@git.zone/tsrun": "^1.3.3",
|
|
55
|
+
"@git.zone/tstest": "^1.0.96",
|
|
56
|
+
"@push.rocks/qenv": "^6.1.0",
|
|
57
|
+
"@push.rocks/tapbundle": "^5.6.3",
|
|
58
|
+
"@types/node": "^22.15.2"
|
|
47
59
|
},
|
|
48
60
|
"files": [
|
|
49
61
|
"ts/**/*",
|
package/readme.hints.md
ADDED