Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cd957526e2 | |||
| 7aa5f07731 | |||
| 5b6f7b30c3 | |||
| 18cc21a49e |
14
changelog.md
14
changelog.md
@@ -1,5 +1,19 @@
|
|||||||
# Changelog
|
# 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
|
||||||
|
|
||||||
|
- Adds a new 'Certificate Management' section to ts_web/readme.md describing domain-centric overview, certificate sources (ACME/provision/static), expiry monitoring, per-domain backoff, and one-click reprovisioning
|
||||||
|
- Adds ops-view-certificates.ts entry to the ops UI file list
|
||||||
|
- Documents new route mapping '/certificates' in the readme navigation
|
||||||
|
|
||||||
## 2026-02-16 - 6.1.0 - feat(certs)
|
## 2026-02-16 - 6.1.0 - feat(certs)
|
||||||
integrate smartacme v9 for ACME certificate provisioning and add certificate management features, docs, dashboard views, API endpoints, and per-domain backoff scheduler
|
integrate smartacme v9 for ACME certificate provisioning and add certificate management features, docs, dashboard views, API endpoints, and per-domain backoff scheduler
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@serve.zone/dcrouter",
|
"name": "@serve.zone/dcrouter",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "6.1.0",
|
"version": "6.2.1",
|
||||||
"description": "A multifaceted routing service handling mail and SMS delivery functions.",
|
"description": "A multifaceted routing service handling mail and SMS delivery functions.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/dcrouter',
|
name: '@serve.zone/dcrouter',
|
||||||
version: '6.1.0',
|
version: '6.2.1',
|
||||||
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -499,7 +499,10 @@ export class DcRouter {
|
|||||||
// smartacme v9 handles concurrency, per-domain dedup, and rate limiting internally
|
// smartacme v9 handles concurrency, per-domain dedup, and rate limiting internally
|
||||||
eventComms.log(`Attempting DNS-01 via SmartAcme for ${domain}`);
|
eventComms.log(`Attempting DNS-01 via SmartAcme for ${domain}`);
|
||||||
eventComms.setSource('smartacme-dns-01');
|
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) {
|
if (cert.validUntil) {
|
||||||
eventComms.setExpiryDate(new Date(cert.validUntil));
|
eventComms.setExpiryDate(new Date(cert.validUntil));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ export class StorageManager {
|
|||||||
*/
|
*/
|
||||||
async getJSON<T = any>(key: string): Promise<T | null> {
|
async getJSON<T = any>(key: string): Promise<T | null> {
|
||||||
const value = await this.get(key);
|
const value = await this.get(key);
|
||||||
if (value === null) {
|
if (value === null || value.trim() === '') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/dcrouter',
|
name: '@serve.zone/dcrouter',
|
||||||
version: '6.1.0',
|
version: '6.2.1',
|
||||||
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,13 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
|
|||||||
- **Security** — Security incidents from email processing
|
- **Security** — Security incidents from email processing
|
||||||
- Bounce record management and suppression list controls
|
- Bounce record management and suppression list controls
|
||||||
|
|
||||||
|
### 🔐 Certificate Management
|
||||||
|
- Domain-centric certificate overview with status indicators
|
||||||
|
- Certificate source tracking (ACME, provision function, static)
|
||||||
|
- Expiry date monitoring and alerts
|
||||||
|
- Per-domain backoff status for failed provisions
|
||||||
|
- One-click reprovisioning per domain
|
||||||
|
|
||||||
### 📜 Log Viewer
|
### 📜 Log Viewer
|
||||||
- Real-time log streaming
|
- Real-time log streaming
|
||||||
- Filter by log level (error, warning, info, debug)
|
- Filter by log level (error, warning, info, debug)
|
||||||
@@ -77,6 +84,7 @@ ts_web/
|
|||||||
├── ops-view-overview.ts # Overview statistics
|
├── ops-view-overview.ts # Overview statistics
|
||||||
├── ops-view-network.ts # Network monitoring
|
├── ops-view-network.ts # Network monitoring
|
||||||
├── ops-view-emails.ts # Email queue management
|
├── ops-view-emails.ts # Email queue management
|
||||||
|
├── ops-view-certificates.ts # Certificate overview & reprovisioning
|
||||||
├── ops-view-logs.ts # Log viewer
|
├── ops-view-logs.ts # Log viewer
|
||||||
├── ops-view-config.ts # Configuration display
|
├── ops-view-config.ts # Configuration display
|
||||||
├── ops-view-security.ts # Security dashboard
|
├── ops-view-security.ts # Security dashboard
|
||||||
@@ -132,6 +140,7 @@ removeFromSuppressionAction(email) // Remove from suppression list
|
|||||||
/emails/sent → Sent emails
|
/emails/sent → Sent emails
|
||||||
/emails/failed → Failed emails
|
/emails/failed → Failed emails
|
||||||
/emails/security → Security incidents
|
/emails/security → Security incidents
|
||||||
|
/certificates → Certificate management
|
||||||
/logs → Log viewer
|
/logs → Log viewer
|
||||||
/configuration → System configuration
|
/configuration → System configuration
|
||||||
/security → Security dashboard
|
/security → Security dashboard
|
||||||
|
|||||||
Reference in New Issue
Block a user