The site healthcheck built its request URL from the indexed site URL
(e.g. http://example.com) and never rewrote the scheme to match the
user-configured HealthCheckConfig.Protocol. As a result, sites
configured for HTTPS were probed over HTTP and always shown as
unreachable. TestHealthCheck compounded the issue by using
siteConfig.Scheme (default "http") instead of req.Config.Protocol.
Introduce rewriteCheckURLScheme which aligns only the URL scheme with
the configured protocol while preserving path, query, and port, and
call it from CheckSiteWithConfig. TestHealthCheck now passes the stored
site URL and relies on the same rewrite, so the "Test" button exercises
the same code path as the scheduled checker.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Introduced SafeWebSocketWriter to ensure thread-safe writes to WebSocket connections.
- Updated WebSocket handling in certificate issuance, revocation, Nginx log tailing, and system upgrades to use the new writer.
- Enhanced WebSocket client management in the site navigation module for improved message handling and connection stability.
- Added `InitTokenRouter` to define the `/token/short` endpoint for issuing short tokens.
- Created `IssueShortToken` function to handle short token generation and response.
- Updated WebSocket middleware to require short token for authentication, preventing CSWSH attacks.
- Modified user store and login handling to integrate short token functionality.
- Enhanced documentation to reflect changes in WebSocket security requirements.
- Introduced `WebSocketTrustedOrigins` setting in `app.example.ini` and corresponding documentation.
- Refactored WebSocket origin checks across multiple API endpoints to utilize the new middleware for improved security.
- Added tests for the new origin validation logic to ensure proper handling of trusted origins and node secret requests.
* feat(dns): add comment support for Cloudflare DNS records
- Add Comment field to Record and RecordInput structs in provider.go
- Update Cloudflare provider to read/write comments on DNS records
- Add comment to frontend API types (DNSRecord, RecordPayload)
- Display Comment column in DNSRecordTable for Cloudflare domains
- Add Comment input field in DNSRecordForm for creating/editing records
- Comments are now visible and editable in the DNS management interface
Closes: feature request for Cloudflare DNS record comments
Co-authored-by: Jacky <me@jackyu.cn>
* fix(dns): decouple comment column visibility and preserve comments in DDNS updates
- Add separate showComment prop to DNSRecordTable component
- DNSRecordManager now passes showComment prop to the table
- Comment column visibility is now independent from proxied column
- DDNS update now preserves existing record.Comment to prevent
silently clearing comments during IP address updates
Fixes Bugbot review issues:
- Comment column incorrectly coupled to proxied visibility
- DDNS updates silently clear Cloudflare record comments
Co-authored-by: Jacky <me@jackyu.cn>
* fix: resolve code duplication and missing comment field in DNS records
- Extract isCloudflare computed property to eliminate duplication between
showProxiedToggle and showCommentField in DNSRecordManager.vue
- Add Comment field to recordRequest struct in dto.go
- Map Comment field in toRecordInput function to properly pass comments
from frontend to the DNS provider layer
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* feat: Integrate DNS record management into site configuration
- Removed the 'External Notification Test' notification.
- Enhanced SiteAdd.vue to include DNS record integration, allowing users to select or create DNS records linked to the site.
- Added DNSRecordIntegration component for managing DNS records, including selection and creation of new records.
- Implemented DNS linking functionality in the RightPanel component, enabling users to link existing DNS records to their site configuration.
- Updated SiteEditor to provide DNS link status to child components.
- Extended the site model to include fields for linked DNS domain and record information.
- Added logic to handle DNS record recreation if a linked record is missing.
* fix: remove unnecessary type assertion for selectedDomainId and selectedRecordId
* feat: add computed properties for selectedDomainId and selectedRecordId to handle null values
* refactor: simplify setter syntax for computed properties of selectedDomainId and selectedRecordId
* fix: update computed properties to return undefined for null values in selectedDomainId and selectedRecordId
---------
Co-authored-by: Nemer Tamimi <nemer.tamimi@uopeople.edu>
* feat: dns management
* refactor(dns): streamline domain management functions and enhance validation
* feat(dns): add value suggestions for DNS record input with autocomplete functionality
* fix(dns): handle edge case in record listing pagination
* fix(dns): update credential property name for consistency and add cleanup on component unmount
* feat(dns): implement DDNS management #1194, #1140