diff --git a/changelog.md b/changelog.md index d8831d8..ac9b57a 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 2026-02-16 - 6.2.1 - fix(smartacme,storage) +Respect wildcard domain requests when retrieving certificates and treat empty/whitespace storage values as null in getJSON + +- Pass includeWildcard flag to smartAcme.getCertificateForDomain to avoid incorrectly including/excluding wildcard certificates based on whether the requested domain itself is a wildcard +- Detect wildcard domains via domain.startsWith('*.') and set includeWildcard to false for wildcard requests +- Treat empty or whitespace-only stored values as null in StorageManager.getJSON to avoid parsing empty strings as JSON and potential errors + ## 2026-02-16 - 6.2.0 - feat(ts_web) add Certificate Management documentation and ops-view-certificates reference diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 92091d2..a84b0fa 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@serve.zone/dcrouter', - version: '6.2.0', + version: '6.2.1', description: 'A multifaceted routing service handling mail and SMS delivery functions.' } diff --git a/ts/classes.dcrouter.ts b/ts/classes.dcrouter.ts index 787193a..e9038e2 100644 --- a/ts/classes.dcrouter.ts +++ b/ts/classes.dcrouter.ts @@ -499,7 +499,10 @@ export class DcRouter { // smartacme v9 handles concurrency, per-domain dedup, and rate limiting internally eventComms.log(`Attempting DNS-01 via SmartAcme for ${domain}`); eventComms.setSource('smartacme-dns-01'); - const cert = await this.smartAcme.getCertificateForDomain(domain); + const isWildcardDomain = domain.startsWith('*.'); + const cert = await this.smartAcme.getCertificateForDomain(domain, { + includeWildcard: !isWildcardDomain, + }); if (cert.validUntil) { eventComms.setExpiryDate(new Date(cert.validUntil)); } diff --git a/ts/storage/classes.storagemanager.ts b/ts/storage/classes.storagemanager.ts index 852bb5a..5085d89 100644 --- a/ts/storage/classes.storagemanager.ts +++ b/ts/storage/classes.storagemanager.ts @@ -378,7 +378,7 @@ export class StorageManager { */ async getJSON(key: string): Promise { const value = await this.get(key); - if (value === null) { + if (value === null || value.trim() === '') { return null; } diff --git a/ts_web/00_commitinfo_data.ts b/ts_web/00_commitinfo_data.ts index 92091d2..a84b0fa 100644 --- a/ts_web/00_commitinfo_data.ts +++ b/ts_web/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@serve.zone/dcrouter', - version: '6.2.0', + version: '6.2.1', description: 'A multifaceted routing service handling mail and SMS delivery functions.' }