Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
9f66a0487f | |||
40cae220d0 | |||
f7dccb25e4 | |||
da75c52c09 | |||
708145c550 | |||
0de2178eb5 | |||
5183d88b69 | |||
d5e7e11256 |
26
changelog.md
26
changelog.md
@ -1,5 +1,31 @@
|
||||
# Changelog
|
||||
|
||||
## 2025-04-30 - 6.1.3 - fix(Dns01Handler)
|
||||
Update dependency versions and refine Dns01Handler implementation
|
||||
|
||||
- Bump '@apiclient.xyz/cloudflare' to ^6.4.1 and '@tsclass/tsclass' to ^9.1.0 in package.json
|
||||
- Remove duplicate Cloudflare import in smartacme.plugins.ts
|
||||
- Refactor Dns01Handler to use IConvenientDnsProvider and add checkWetherDomainIsSupported method
|
||||
- Align devDependencies versions for improved consistency
|
||||
|
||||
## 2025-04-27 - 6.1.2 - fix(repo)
|
||||
Update repository metadata by replacing the LICENSE file with a license.md file for improved consistency.
|
||||
|
||||
- Removed the old LICENSE file.
|
||||
- Introduced license.md as the new license documentation file.
|
||||
|
||||
## 2025-04-27 - 6.1.1 - fix(readme)
|
||||
Fix license link reference in documentation
|
||||
|
||||
- Updated the license link from [license](license) to [license.md](license.md) in the License and Legal Information section
|
||||
|
||||
## 2025-04-27 - 6.1.0 - feat(readme)
|
||||
Update documentation with detailed built-in challenge handlers and custom handler examples
|
||||
|
||||
- Expanded readme to include sections on Dns01Handler and Http01Handler usage
|
||||
- Added examples for creating and registering custom ACME challenge handlers
|
||||
- Improved clarity of ACME certificate management instructions using SmartAcme
|
||||
|
||||
## 2025-04-27 - 6.0.1 - fix(readme)
|
||||
Remove extraneous code fence markers from license section in readme
|
||||
|
||||
|
10
package.json
10
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@push.rocks/smartacme",
|
||||
"version": "6.0.1",
|
||||
"version": "6.1.3",
|
||||
"private": false,
|
||||
"description": "A TypeScript-based ACME client for LetsEncrypt certificate management with a focus on simplicity and power.",
|
||||
"main": "dist_ts/index.js",
|
||||
@ -40,6 +40,7 @@
|
||||
"homepage": "https://code.foss.global/push.rocks/smartacme#readme",
|
||||
"dependencies": {
|
||||
"@api.global/typedserver": "^3.0.74",
|
||||
"@apiclient.xyz/cloudflare": "^6.4.1",
|
||||
"@push.rocks/lik": "^6.2.2",
|
||||
"@push.rocks/smartdata": "^5.15.1",
|
||||
"@push.rocks/smartdelay": "^3.0.5",
|
||||
@ -50,17 +51,16 @@
|
||||
"@push.rocks/smartstring": "^4.0.15",
|
||||
"@push.rocks/smarttime": "^4.1.1",
|
||||
"@push.rocks/smartunique": "^3.0.9",
|
||||
"@tsclass/tsclass": "^9.0.0",
|
||||
"@tsclass/tsclass": "^9.1.0",
|
||||
"acme-client": "^5.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@apiclient.xyz/cloudflare": "^6.3.2",
|
||||
"@git.zone/tsbuild": "^2.3.2",
|
||||
"@git.zone/tsrun": "^1.3.3",
|
||||
"@git.zone/tstest": "^1.0.96",
|
||||
"@push.rocks/qenv": "^6.1.0",
|
||||
"@push.rocks/tapbundle": "^5.6.3",
|
||||
"@types/node": "^22.15.2"
|
||||
"@push.rocks/tapbundle": "^6.0.0",
|
||||
"@types/node": "^22.15.3"
|
||||
},
|
||||
"files": [
|
||||
"ts/**/*",
|
||||
|
154
pnpm-lock.yaml
generated
154
pnpm-lock.yaml
generated
@ -11,6 +11,9 @@ importers:
|
||||
'@api.global/typedserver':
|
||||
specifier: ^3.0.74
|
||||
version: 3.0.74
|
||||
'@apiclient.xyz/cloudflare':
|
||||
specifier: ^6.4.1
|
||||
version: 6.4.1
|
||||
'@push.rocks/lik':
|
||||
specifier: ^6.2.2
|
||||
version: 6.2.2
|
||||
@ -42,15 +45,12 @@ importers:
|
||||
specifier: ^3.0.9
|
||||
version: 3.0.9
|
||||
'@tsclass/tsclass':
|
||||
specifier: ^9.0.0
|
||||
version: 9.0.0
|
||||
specifier: ^9.1.0
|
||||
version: 9.1.0
|
||||
acme-client:
|
||||
specifier: ^5.4.0
|
||||
version: 5.4.0
|
||||
devDependencies:
|
||||
'@apiclient.xyz/cloudflare':
|
||||
specifier: ^6.3.2
|
||||
version: 6.3.2
|
||||
'@git.zone/tsbuild':
|
||||
specifier: ^2.3.2
|
||||
version: 2.3.2
|
||||
@ -64,11 +64,11 @@ importers:
|
||||
specifier: ^6.1.0
|
||||
version: 6.1.0
|
||||
'@push.rocks/tapbundle':
|
||||
specifier: ^5.6.3
|
||||
version: 5.6.3(@aws-sdk/credential-providers@3.797.0)(socks@2.8.4)
|
||||
specifier: ^6.0.0
|
||||
version: 6.0.0(@aws-sdk/credential-providers@3.797.0)(socks@2.8.4)
|
||||
'@types/node':
|
||||
specifier: ^22.15.2
|
||||
version: 22.15.2
|
||||
specifier: ^22.15.3
|
||||
version: 22.15.3
|
||||
|
||||
packages:
|
||||
|
||||
@ -87,8 +87,8 @@ packages:
|
||||
'@api.global/typedsocket@3.0.1':
|
||||
resolution: {integrity: sha512-xojiAVNXtHoxkpBo8U2HHJG8FrVXXuLvDNndSHXwx4C9VslUwDn5zSCI+PdBl8iAg+ZuBmKjqkpZZ9sL6DC5yQ==}
|
||||
|
||||
'@apiclient.xyz/cloudflare@6.3.2':
|
||||
resolution: {integrity: sha512-u5ud25tR1epNVgAPtL2t1qZ7FOGsLhID4zAzwcIQQTqmBb43US0fkI/I+JjIW0uyHi12AI4gWez2ke2nAR4+pw==}
|
||||
'@apiclient.xyz/cloudflare@6.4.1':
|
||||
resolution: {integrity: sha512-RYFphnbunjK+Imq/3ynIQpAvIGBJ38kqSZ2nrpTm26zsBIxW7S6xEe3zhXfVMtUIgC99OL3Xr/SGXl3CNBwCug==}
|
||||
|
||||
'@aws-crypto/crc32@5.2.0':
|
||||
resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==}
|
||||
@ -821,6 +821,9 @@ packages:
|
||||
'@push.rocks/smartexpect@1.6.1':
|
||||
resolution: {integrity: sha512-NFQXEPkGiMNxyvFwKyzDWe3ADYdf8KNvIcV7TGNZZT3uPQtk65te4Q+a1cWErjP/61yE9XdYiQA66QQp+TV9IQ==}
|
||||
|
||||
'@push.rocks/smartexpect@2.2.2':
|
||||
resolution: {integrity: sha512-s2zJlLc6Wub7P/jgKSM51kW2UjslxQwx2BXoyJVO95OgiOwarde0AuxPR0lfRA/FvHdBfTmJf4upiWtcjYMB/Q==}
|
||||
|
||||
'@push.rocks/smartfeed@1.0.11':
|
||||
resolution: {integrity: sha512-02uhXxQamgfBo3T12FsAdfyElnpoWuDUb08B2AE60DbIaukVx/7Mi17xwobApY1flNSr5StZDt8N8vxPhBhIXw==}
|
||||
|
||||
@ -956,6 +959,9 @@ packages:
|
||||
'@push.rocks/tapbundle@5.6.3':
|
||||
resolution: {integrity: sha512-hFzsf59rg1K70i45llj7PCyyCZp7JW19XRR+Q1gge1T0pBN8Wi53aYqP/2qtxdMiNVe2s3ESp6VJZv3sLOMYPQ==}
|
||||
|
||||
'@push.rocks/tapbundle@6.0.0':
|
||||
resolution: {integrity: sha512-ARIs189TysvI8EsPAC7LH6O0WbBYI9E7XxdihwmM6LRgLvzAbp1agfO6lOjpKrAYWKjT3KdlUEihilxOBrgTYQ==}
|
||||
|
||||
'@push.rocks/taskbuffer@3.1.7':
|
||||
resolution: {integrity: sha512-QktGVJPucqQmW/QNGnscf4FAigT1H7JWKFGFdRuDEaOHKFh9qN+PXG3QY7DtZ4jfXdGLxPN4yAufDuPSAJYFnw==}
|
||||
|
||||
@ -1336,8 +1342,8 @@ packages:
|
||||
'@tsclass/tsclass@8.2.1':
|
||||
resolution: {integrity: sha512-bRDCfJTipsTcK6eEokWdsOR1mGCQFeM7zTg6PRHzbxTWQcWQD9AhEr2q3CrPcmAbvIS7fvkO6/pU/mPm1MZxhQ==}
|
||||
|
||||
'@tsclass/tsclass@9.0.0':
|
||||
resolution: {integrity: sha512-QuV2WKzi3p1ONq0UR+hNulG62D6vRPJxOXunWvN9zpWx6Uj70DKntMu8nqEIWUPgL3UKIPe7GN8l6mPCdxdcEg==}
|
||||
'@tsclass/tsclass@9.1.0':
|
||||
resolution: {integrity: sha512-PkG1bXK/bqVtxaRHje+iJHjtcdRHLHrNTOkzqh+jv2A7mgiyNo2YBJIl4eEJLkw1X3FwEFU4vCAtsegSmJgRug==}
|
||||
|
||||
'@types/accepts@1.3.7':
|
||||
resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==}
|
||||
@ -1499,8 +1505,8 @@ packages:
|
||||
'@types/node@18.19.87':
|
||||
resolution: {integrity: sha512-OIAAu6ypnVZHmsHCeJ+7CCSub38QNBS9uceMQeg7K5Ur0Jr+wG9wEOEvvMbhp09pxD5czIUy/jND7s7Tb6Nw7A==}
|
||||
|
||||
'@types/node@22.15.2':
|
||||
resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==}
|
||||
'@types/node@22.15.3':
|
||||
resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==}
|
||||
|
||||
'@types/parse5@6.0.3':
|
||||
resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
|
||||
@ -4189,6 +4195,10 @@ packages:
|
||||
resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==}
|
||||
engines: {node: '>=16'}
|
||||
|
||||
type-fest@4.40.1:
|
||||
resolution: {integrity: sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==}
|
||||
engines: {node: '>=16'}
|
||||
|
||||
type-is@1.6.18:
|
||||
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
|
||||
engines: {node: '>= 0.6'}
|
||||
@ -4510,14 +4520,14 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- vue
|
||||
|
||||
'@apiclient.xyz/cloudflare@6.3.2':
|
||||
'@apiclient.xyz/cloudflare@6.4.1':
|
||||
dependencies:
|
||||
'@push.rocks/smartdelay': 3.0.5
|
||||
'@push.rocks/smartlog': 3.0.7
|
||||
'@push.rocks/smartpromise': 4.2.3
|
||||
'@push.rocks/smartrequest': 2.1.0
|
||||
'@push.rocks/smartstring': 4.0.15
|
||||
'@tsclass/tsclass': 5.0.0
|
||||
'@tsclass/tsclass': 9.1.0
|
||||
cloudflare: 4.2.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
@ -5399,7 +5409,7 @@ snapshots:
|
||||
'@jest/schemas': 29.6.3
|
||||
'@types/istanbul-lib-coverage': 2.0.6
|
||||
'@types/istanbul-reports': 3.0.4
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
'@types/yargs': 17.0.33
|
||||
chalk: 4.1.2
|
||||
|
||||
@ -5820,6 +5830,12 @@ snapshots:
|
||||
'@push.rocks/smartpromise': 4.2.3
|
||||
fast-deep-equal: 3.1.3
|
||||
|
||||
'@push.rocks/smartexpect@2.2.2':
|
||||
dependencies:
|
||||
'@push.rocks/smartdelay': 3.0.5
|
||||
'@push.rocks/smartpromise': 4.2.3
|
||||
fast-deep-equal: 3.1.3
|
||||
|
||||
'@push.rocks/smartfeed@1.0.11':
|
||||
dependencies:
|
||||
'@tsclass/tsclass': 3.0.48
|
||||
@ -6224,6 +6240,38 @@ snapshots:
|
||||
- supports-color
|
||||
- utf-8-validate
|
||||
|
||||
'@push.rocks/tapbundle@6.0.0(@aws-sdk/credential-providers@3.797.0)(socks@2.8.4)':
|
||||
dependencies:
|
||||
'@open-wc/testing': 4.0.0
|
||||
'@push.rocks/consolecolor': 2.0.2
|
||||
'@push.rocks/qenv': 6.1.0
|
||||
'@push.rocks/smartcrypto': 2.0.4
|
||||
'@push.rocks/smartdelay': 3.0.5
|
||||
'@push.rocks/smartenv': 5.0.12
|
||||
'@push.rocks/smartexpect': 2.2.2
|
||||
'@push.rocks/smartfile': 11.2.0
|
||||
'@push.rocks/smartjson': 5.0.20
|
||||
'@push.rocks/smartmongo': 2.0.12(@aws-sdk/credential-providers@3.797.0)(socks@2.8.4)
|
||||
'@push.rocks/smartpath': 5.0.18
|
||||
'@push.rocks/smartpromise': 4.2.3
|
||||
'@push.rocks/smartrequest': 2.1.0
|
||||
'@push.rocks/smarts3': 2.2.5
|
||||
'@push.rocks/smartshell': 3.2.3
|
||||
'@push.rocks/smarttime': 4.1.1
|
||||
expect: 29.7.0
|
||||
transitivePeerDependencies:
|
||||
- '@aws-sdk/credential-providers'
|
||||
- '@mongodb-js/zstd'
|
||||
- aws-crt
|
||||
- bufferutil
|
||||
- gcp-metadata
|
||||
- kerberos
|
||||
- mongodb-client-encryption
|
||||
- snappy
|
||||
- socks
|
||||
- supports-color
|
||||
- utf-8-validate
|
||||
|
||||
'@push.rocks/taskbuffer@3.1.7':
|
||||
dependencies:
|
||||
'@push.rocks/lik': 6.2.2
|
||||
@ -6800,24 +6848,24 @@ snapshots:
|
||||
dependencies:
|
||||
type-fest: 4.40.0
|
||||
|
||||
'@tsclass/tsclass@9.0.0':
|
||||
'@tsclass/tsclass@9.1.0':
|
||||
dependencies:
|
||||
type-fest: 4.40.0
|
||||
type-fest: 4.40.1
|
||||
|
||||
'@types/accepts@1.3.7':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/babel__code-frame@7.0.6': {}
|
||||
|
||||
'@types/bn.js@5.1.6':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/body-parser@1.19.5':
|
||||
dependencies:
|
||||
'@types/connect': 3.4.38
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/buffer-json@2.0.3': {}
|
||||
|
||||
@ -6833,17 +6881,17 @@ snapshots:
|
||||
|
||||
'@types/clean-css@4.2.11':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
source-map: 0.6.1
|
||||
|
||||
'@types/co-body@6.1.3':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
'@types/qs': 6.9.18
|
||||
|
||||
'@types/connect@3.4.38':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/content-disposition@0.5.8': {}
|
||||
|
||||
@ -6854,11 +6902,11 @@ snapshots:
|
||||
'@types/connect': 3.4.38
|
||||
'@types/express': 5.0.1
|
||||
'@types/keygrip': 1.0.6
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/cors@2.8.17':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/debounce@1.2.4': {}
|
||||
|
||||
@ -6872,7 +6920,7 @@ snapshots:
|
||||
|
||||
'@types/dns-packet@5.6.5':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/elliptic@6.4.18':
|
||||
dependencies:
|
||||
@ -6880,7 +6928,7 @@ snapshots:
|
||||
|
||||
'@types/express-serve-static-core@5.0.6':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
'@types/qs': 6.9.18
|
||||
'@types/range-parser': 1.2.7
|
||||
'@types/send': 0.17.4
|
||||
@ -6897,30 +6945,30 @@ snapshots:
|
||||
|
||||
'@types/from2@2.3.5':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/fs-extra@11.0.4':
|
||||
dependencies:
|
||||
'@types/jsonfile': 6.1.4
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/fs-extra@9.0.13':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/glob@7.2.0':
|
||||
dependencies:
|
||||
'@types/minimatch': 5.1.2
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/glob@8.1.0':
|
||||
dependencies:
|
||||
'@types/minimatch': 5.1.2
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/gunzip-maybe@1.4.2':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/hast@3.0.4':
|
||||
dependencies:
|
||||
@ -6954,7 +7002,7 @@ snapshots:
|
||||
|
||||
'@types/jsonfile@6.1.4':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/keygrip@1.0.6': {}
|
||||
|
||||
@ -6971,7 +7019,7 @@ snapshots:
|
||||
'@types/http-errors': 2.0.4
|
||||
'@types/keygrip': 1.0.6
|
||||
'@types/koa-compose': 3.2.8
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/mdast@4.0.4':
|
||||
dependencies:
|
||||
@ -6989,18 +7037,18 @@ snapshots:
|
||||
|
||||
'@types/node-fetch@2.6.12':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
form-data: 4.0.2
|
||||
|
||||
'@types/node-forge@1.3.11':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/node@18.19.87':
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
|
||||
'@types/node@22.15.2':
|
||||
'@types/node@22.15.3':
|
||||
dependencies:
|
||||
undici-types: 6.21.0
|
||||
|
||||
@ -7018,19 +7066,19 @@ snapshots:
|
||||
|
||||
'@types/s3rver@3.7.4':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/semver@7.7.0': {}
|
||||
|
||||
'@types/send@0.17.4':
|
||||
dependencies:
|
||||
'@types/mime': 1.3.5
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/serve-static@1.15.7':
|
||||
dependencies:
|
||||
'@types/http-errors': 2.0.4
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
'@types/send': 0.17.4
|
||||
|
||||
'@types/sinon-chai@3.2.12':
|
||||
@ -7050,11 +7098,11 @@ snapshots:
|
||||
|
||||
'@types/tar-stream@2.2.3':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/through2@2.0.41':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/triple-beam@1.3.5': {}
|
||||
|
||||
@ -7078,18 +7126,18 @@ snapshots:
|
||||
|
||||
'@types/whatwg-url@8.2.2':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
'@types/webidl-conversions': 7.0.3
|
||||
|
||||
'@types/which@3.0.4': {}
|
||||
|
||||
'@types/ws@7.4.7':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/ws@8.18.1':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
|
||||
'@types/yargs-parser@21.0.3': {}
|
||||
|
||||
@ -7099,7 +7147,7 @@ snapshots:
|
||||
|
||||
'@types/yauzl@2.10.3':
|
||||
dependencies:
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
optional: true
|
||||
|
||||
'@ungap/structured-clone@1.3.0': {}
|
||||
@ -7775,7 +7823,7 @@ snapshots:
|
||||
engine.io@6.6.4:
|
||||
dependencies:
|
||||
'@types/cors': 2.8.17
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
accepts: 1.3.8
|
||||
base64id: 2.0.0
|
||||
cookie: 0.7.2
|
||||
@ -8579,7 +8627,7 @@ snapshots:
|
||||
jest-util@29.7.0:
|
||||
dependencies:
|
||||
'@jest/types': 29.6.3
|
||||
'@types/node': 22.15.2
|
||||
'@types/node': 22.15.3
|
||||
chalk: 4.1.2
|
||||
ci-info: 3.9.0
|
||||
graceful-fs: 4.2.11
|
||||
@ -10172,6 +10220,8 @@ snapshots:
|
||||
|
||||
type-fest@4.40.0: {}
|
||||
|
||||
type-fest@4.40.1: {}
|
||||
|
||||
type-is@1.6.18:
|
||||
dependencies:
|
||||
media-typer: 0.3.0
|
||||
|
74
readme.md
74
readme.md
@ -138,8 +138,76 @@ async function main() {
|
||||
await smartAcmeInstance.stop();
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
```
|
||||
main().catch(console.error);
|
||||
```
|
||||
|
||||
## Built-in Challenge Handlers
|
||||
|
||||
This module includes two out-of-the-box ACME challenge handlers:
|
||||
|
||||
- **Dns01Handler**
|
||||
- Uses a Cloudflare account (from `@apiclient.xyz/cloudflare`) and Smartdns client to set and remove DNS TXT records, then wait for propagation.
|
||||
- Import path:
|
||||
```typescript
|
||||
import { Dns01Handler } from '@push.rocks/smartacme/ts/handlers/Dns01Handler.js';
|
||||
```
|
||||
- Example:
|
||||
```typescript
|
||||
import * as cloudflare from '@apiclient.xyz/cloudflare';
|
||||
const cfAccount = new cloudflare.CloudflareAccount('CF_TOKEN');
|
||||
const dnsHandler = new Dns01Handler(cfAccount);
|
||||
```
|
||||
|
||||
- **Http01Handler**
|
||||
- Writes ACME HTTP-01 challenge files under a file-system webroot (`/.well-known/acme-challenge/`), and removes them on cleanup.
|
||||
- Import path:
|
||||
```typescript
|
||||
import { Http01Handler } from '@push.rocks/smartacme/ts/handlers/Http01Handler.js';
|
||||
```
|
||||
- Example:
|
||||
```typescript
|
||||
const httpHandler = new Http01Handler({ webroot: '/var/www/html' });
|
||||
```
|
||||
|
||||
Both handlers implement the `IChallengeHandler<T>` interface and can be combined in the `challengeHandlers` array.
|
||||
|
||||
## Creating Custom Handlers
|
||||
|
||||
To support additional challenge types or custom validation flows, implement the `IChallengeHandler<T>` interface:
|
||||
|
||||
```typescript
|
||||
import type { IChallengeHandler } from '@push.rocks/smartacme/ts/handlers/IChallengeHandler.js';
|
||||
|
||||
// Define your custom challenge payload type
|
||||
interface MyChallenge { type: string; /* ... */ }
|
||||
|
||||
class MyCustomHandler implements IChallengeHandler<MyChallenge> {
|
||||
getSupportedTypes(): string[] {
|
||||
return ['my-01'];
|
||||
}
|
||||
|
||||
// Prepare the challenge (set DNS records, start servers, etc.)
|
||||
async prepare(ch: MyChallenge): Promise<void> {
|
||||
// preparation logic
|
||||
}
|
||||
|
||||
// Optional verify step after prepare
|
||||
async verify?(ch: MyChallenge): Promise<void> {
|
||||
// verification logic
|
||||
}
|
||||
|
||||
// Cleanup after challenge (remove records, stop servers)
|
||||
async cleanup(ch: MyChallenge): Promise<void> {
|
||||
// cleanup logic
|
||||
}
|
||||
}
|
||||
|
||||
// Then register your handler:
|
||||
const customInstance = new SmartAcme({
|
||||
/* other options */,
|
||||
challengeHandlers: [ new MyCustomHandler() ],
|
||||
challengePriority: ['my-01'],
|
||||
});
|
||||
|
||||
In this example, `Qenv` is used to manage environment variables, and `cloudflare` library is used to handle DNS challenges required by Let's Encrypt ACME protocol. The `setChallenge` and `removeChallenge` methods are essential for automating the DNS challenge process, which is a key part of domain validation.
|
||||
|
||||
@ -239,7 +307,7 @@ This comprehensive guide ensures you can set up, manage, and test ACME certifica
|
||||
|
||||
## License and Legal Information
|
||||
|
||||
This 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.
|
||||
This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license.md](license.md) file within this repository.
|
||||
|
||||
**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.
|
||||
|
||||
|
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@push.rocks/smartacme',
|
||||
version: '6.0.1',
|
||||
version: '6.1.3',
|
||||
description: 'A TypeScript-based ACME client for LetsEncrypt certificate management with a focus on simplicity and power.'
|
||||
}
|
||||
|
@ -5,14 +5,14 @@ import type { IChallengeHandler } from './IChallengeHandler.js';
|
||||
* DNS-01 challenge handler using CloudflareAccount and Smartdns.
|
||||
*/
|
||||
export class Dns01Handler implements IChallengeHandler<plugins.tsclass.network.IDnsChallenge> {
|
||||
private cf: any;
|
||||
private cf: plugins.tsclass.network.IConvenientDnsProvider;
|
||||
private smartdns: plugins.smartdnsClient.Smartdns;
|
||||
|
||||
constructor(
|
||||
cloudflareAccount: any,
|
||||
convenientDnsProvider: plugins.tsclass.network.IConvenientDnsProvider,
|
||||
smartdnsInstance?: plugins.smartdnsClient.Smartdns,
|
||||
) {
|
||||
this.cf = cloudflareAccount;
|
||||
this.cf = convenientDnsProvider;
|
||||
this.smartdns = smartdnsInstance ?? new plugins.smartdnsClient.Smartdns({});
|
||||
}
|
||||
|
||||
@ -37,4 +37,8 @@ export class Dns01Handler implements IChallengeHandler<plugins.tsclass.network.I
|
||||
// remove DNS TXT record
|
||||
await this.cf.convenience.acmeRemoveDnsChallenge(ch);
|
||||
}
|
||||
|
||||
public async checkWetherDomainIsSupported(domainArg: string): Promise<boolean> {
|
||||
return this.cf.convenience.isDomainSupported(domainArg);
|
||||
}
|
||||
}
|
@ -1,3 +1,8 @@
|
||||
// @apiclient.xyz scope
|
||||
import * as cloudflare from '@apiclient.xyz/cloudflare';
|
||||
|
||||
export { cloudflare };
|
||||
|
||||
// @apiglobal scope
|
||||
import * as typedserver from '@api.global/typedserver';
|
||||
|
||||
|
Reference in New Issue
Block a user