Add v1.1.2 release notes to CHANGELOG.md. Documents new features (Google Chat webhook payloads, domain status change notifications, failed-login and expiration bell alerts, admin user profile, dashboard widgets, quick actions, WHOIS rate-limit/backoff, TLD registry editing, redemption/pending-delete detection, configurable status triggers, sidebar branding, 404 logging and copy error report), UI/UX changes, bug fixes, security hardening (CSRF & POST enforcement), and the migration script 024_add_status_notifications_v1.1.2.sql. Also updates task checklist entries to mark Google Chat notifications, domain grouping/tagging, 2FA, advanced filtering, and bulk operations completed.
25 KiB
25 KiB
Changelog
All notable changes to Domain Monitor will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.1.2] - 2026-02-09
Added
- Google Chat Webhook Support - Selectable payload formats: Generic (n8n/Zapier/Make), Google Chat (rich card), and Simple Text
- Domain Status Change Notifications - Configurable alerts for domain lifecycle events: available, registered, expired, redemption_period, pending_delete
- Failed Login Notifications - In-app alerts for failed login attempts with geolocation, device info, and reason
- Domain Expiration Bell Notifications - In-app notifications for expiring domains, respects user isolation mode
- Admin User Profile Page (
/users/{id}) - Detailed view with Overview, Domains, Tags, and Notification Groups tabs - Dashboard Insights Widgets - Registrar distribution, tag usage, and notification coverage for logged-in users
- Quick Actions Dropdown - Top-nav
+button with Add Domain, Create Group, Create Tag, and WHOIS Lookup - WHOIS Rate Limit Handling - Exponential backoff with retry logic, grouped by TLD to avoid repeated throttling
- Admin TLD Registry Editing - Edit WHOIS and RDAP servers directly from the TLD registry UI
- Redemption Period & Pending Delete Detection - New domain statuses parsed from EPP status codes (
redemptionPeriod,pendingDelete) - Configurable Status Triggers - Settings UI to choose which domain status changes trigger notifications
- Sidebar Branding - SVG logo with clickable "Domain Monitor" title and "Track your domains" subtitle
- 404 Error Logging - Router logs 404 errors with request method, IP, user-agent, and referer details
- Copy Error Report - Clipboard copy with toast feedback in admin error detail view
Changed
- Dashboard Redesigned - Compact admin system status bar, balanced widget grid, removed Quick Actions widget
- Mobile UI Overhauled - Sidebar overlay with swipe-to-close, body scroll lock, responsive layout tweaks
- Error Log Deduplication Improved - Matches on type + file + line + message; resolution operates on all matching errors
- Webhook Logging Enhanced - Masked URLs, response body truncation, payload previews, structured error handling
- Notification Dropdown Enriched - Country flags, device icons for login alerts, clickable domain links
- User Create Form Redesigned - Centered card layout, responsive grid, password show/hide toggles, live validation
- WHOIS Date Parsing - Added DD/MM/YYYY format support for European registries (.pt, .es, .fr)
- Domain Status ENUM Expanded - Added
redemption_periodandpending_deletevalues - Status Detection Improved - Better handling for .nl and .eu domains missing expiration dates
- Login Success Messages - Now include the user's full name
- Centralized Logging - Logger service replaces all remaining
error_log()calls
Fixed
- Notification Group Delete - Changed from GET to POST with CSRF token (was vulnerable to CSRF)
- Bulk Domain Create - Wrapped in try/catch to handle duplicate domain conflicts gracefully
- User Edit Form Action - Fixed route mismatch (
/users/update→/users/{id}/update) - Tag Isolation Access - Enforced permission checks in TagController for isolated mode
- RDAP Server Route - Fixed route name mismatch between definition and controller method
- Top-Nav Dropdowns - Fixed broken dropdown toggle logic after Quick Actions addition
- PHP 8.x Compatibility - Fixed null parameter warnings in date functions
- Sidebar Quick Stats - Fixed variable collision when viewing user profiles
Security
- CSRF Protection - Added to profile delete, notification delete/clear-all, user delete, user toggle-status
- POST Method Enforced - All destructive actions changed from GET to POST (profile, notifications, users, groups)
- Failed Login Alerts - Target user notified with IP address and user-agent details
- Tag Access Control - Isolated mode users blocked from viewing other users' tags via direct URL
Migrations
024_add_status_notifications_v1.1.2.sql- Expands domain status ENUM, adds notification status triggers setting, updates app version
[1.1.1] - 2025-11-18
Added
- Pushover Notification Channel - Send domain expiration alerts via Pushover (iOS, Android, Desktop)
- Priority-based notifications (Emergency, High, Normal, Low) based on days until expiration
- Emergency alerts (expired or expiring in ≤1 day) with auto-retry every 5 minutes for 1 hour
- 23 custom notification sounds to choose from
- Device targeting - send to specific devices or all devices
- Rich notifications with title, message, and clickable URL to domain details
- Optional custom sound and device configuration
- Database migration
022_add_pushover_channel_type.sqlto add Pushover support
Fixed
- Security: PHP 8.x URI Injection Vulnerability - Fixed deprecated
strpos()null parameter warning- Added early request validation in
public/index.phpto block malformed URIs - Enhanced
core/Auth.phpto handle null values fromparse_url()gracefully - Malformed requests are now logged and return 400 Bad Request
- Prevents attackers from causing PHP warnings via malformed URI probes
- Added early request validation in
- PHP 8.x Compatibility: strtotime() Null Parameter - Fixed deprecated warnings for null expiration dates
- Added null checks before calling
strtotime()in all domain view templates - Displays "Unknown" for domains without expiration dates (e.g., .nl domains)
- Updated 9 view files: groups/edit, domains/index, domains/view, domains/edit, dashboard/index, tags/view, search/results
- Also fixed
NotificationService::formatExpirationMessage()to handle null dates
- Added null checks before calling
- Domain Status Detection for .nl Domains - Fixed incorrect "available" status for registered .nl domains
.nlWHOIS/RDAP doesn't always provide expiration dates or explicit status flags- Improved
WhoisService::getDomainStatus()to detect registered domains via nameservers and valid registrar - Cron job now preserves existing expiration dates when WHOIS doesn't return one
- Prevents false positives for domain availability
- Domain Status Detection for .eu Domains - Fixed incorrect status and registrar parsing for .eu domains
- Added specific
.euregistrar format parsing (Name: Registrar Name) - Fixed RDAP vCard parsing to strip "Name:" prefix from registrar field
- Fixed WHOIS parsing to handle "Name: Company" format in registrar sections
- Enhanced status detection logic to recognize registered domains without explicit status flags
- Consistent behavior between manual refresh and automated cron checks
- Added specific
- Logging Consistency - Replaced all remaining
error_log()calls with custom Logger service- Updated
WhoisService.php,NotificationService.php,AuthController.php,UserController.php - Centralized structured logging throughout the application
- Better debugging and audit trail capabilities
- Updated
Changed
- Status Detection - Unified
DomainHelper::determineStatus()to useWhoisService::getDomainStatus()for consistency - Documentation - Updated README.md to reflect all available notification channels including Pushover
[1.1.0] - 2025-10-09
Added
- User Notifications System - In-app notification center with filtering and pagination
- Welcome Notifications - Automatically sent to new users on registration or fresh install
- System Upgrade Notifications - Admins notified when system is upgraded with migration details
- Notification Types:
- System: Welcome, Upgrade notifications
- Domain: Expiring, Expired, Updated
- Security: New login detection
- WHOIS: Lookup failures
- Notification Features:
- Unread notification count in top navigation
- Dropdown preview of recent notifications
- Full notification page with filtering (status, type, date range)
- Pagination and sorting
- Mark as read / Mark all as read
- Delete individual / Clear all notifications
- Database-Backed Sessions - Full session management stored in database
- Active Session Management - View, monitor, and control all logged-in devices
- Geolocation Tracking - IP-based location detection (country, city, region, ISP)
- Session Details Display:
- Country flags with flag-icons library
- City and country name
- ISP/Network provider
- Device type detection (Desktop/Mobile/Tablet)
- Browser detection (Chrome/Firefox/Safari/Edge/Opera)
- Session age and last activity timestamps
- Remember me indicator (cookie badge)
- Remote Session Control:
- Terminate individual sessions with delete button
- Logout all other sessions with one click
- Immediate logout validation (deleted sessions can't access anything)
- Enhanced Profile Page:
- Sidebar navigation layout
- Four sections: Profile Information, Security, Active Sessions, Danger Zone
- URL hash navigation (#profile, #security, #sessions, #danger)
- Clean design matching application theme
- Remember Token Security:
- Remember tokens linked to specific sessions
- Deleting session also invalidates remember token
- Prevents auto-login after remote logout
- Session Validator Middleware - Validates sessions on every request
- Auto-Detected Cron Paths - Settings page shows actual installation paths (thanks @jadeops)
- Automatic Session Cleanup - Multiple cleanup triggers (no cron job needed)
- User registration with email verification
- Password reset via email
- Remember me functionality (30-day cookies)
- User profile management
- Change password
- Email verification with token expiry (24h)
- Password reset tokens (1h expiry)
- Registration enable/disable toggle
- User CRUD management (admin-only)
- Role-based access control (admin/user)
- Centralized app version in database
- Web-based installer (replaces CLI migrate.php)
- Web-based updater for new migrations
- Auto-detection of installation status
- Migration tracking system
- Consolidated database schema for v1.1.0 fresh installs
- Smart migration system (consolidated for new, incremental for upgrades)
- Two-Factor Authentication (2FA) System:
- TOTP (Time-based One-Time Password) implementation
- Email backup codes for 2FA recovery
- 2FA verification attempts tracking with rate limiting
- 2FA policy settings (optional/required/disabled)
- Complete 2FA setup, verification, and management flow
- Backup codes generation and verification system
- CAPTCHA Security System:
- Support for reCAPTCHA v2, reCAPTCHA v3, and Cloudflare Turnstile
- Configurable CAPTCHA settings in admin panel
- Score-based verification for reCAPTCHA v3
- Integration with login and registration forms
- CAPTCHA provider selection and configuration
- Domain Tags System:
- Domain tagging for organization and categorization
- Comma-separated tags field in domains table
- Tag-based domain filtering and organization
- Indexed tag searches for performance
- Advanced Error Logging System:
- Database-backed error logging and tracking
- Error deduplication and occurrence counting
- Request context capture (method, URI, data)
- User context (IP, user agent, session data)
- System context (PHP version, memory usage)
- Error resolution tracking and management
- Admin error log interface for debugging
- Enhanced Logger Service:
- Structured logging with context arrays
- Multiple log levels (debug, info, warning, error, critical)
- Date-based log file rotation
- Context-aware logging throughout the application
- JSON-formatted log entries with timestamps
- User Avatar System:
- Avatar upload and deletion functionality
- Gravatar integration with fallback to user initials
- Dynamic web root detection for file uploads
- Avatar display in profile, navigation, and user listings
- File validation and security measures
- WHOIS Parsing Improvements:
- Enhanced WHOIS data parsing and processing
- Better referral server handling and following
- Improved domain availability detection
- Status parsing cleanup and consistency
- WHOIS server display improvements
Changed
- Profile page completely redesigned with sidebar layout
- Session system migrated from file-based to database-backed
- Top navigation dropdown links updated with hash navigation
- Settings → System tab now shows auto-detected cron paths
- Help & Support menu links to GitHub repository
- Auth views refactored with base layout
- System section (Settings/Users) restricted to admins
- TLD Registry read-only for regular users
- Sidebar shows role-based links
- Profile integrated with dashboard layout
- Installation now via web UI instead of CLI
- Auto-redirect to installer on first run
- Domain management enhanced with tagging system
- Error handling improved with comprehensive logging
- WHOIS parsing enhanced with better data extraction
- User interface updated with avatar display throughout
Security
- Database Session Storage - True session control with remote termination
- Session Validation - Every request validates session exists in database
- Geolocation Logging - Track suspicious login locations
- Remember Token Linking - Tokens tied to sessions, deleted together
- Immediate Logout - Deleted sessions invalidated within seconds
- Bcrypt password hashing
- Secure 32-byte tokens
- Time-limited tokens
- One-time use reset tokens
- HttpOnly secure cookies
- Email enumeration protection
- Session-based verification resend
- Admin-only route protection
- Two-Factor Authentication - TOTP and email backup codes for enhanced security
- CAPTCHA Protection - Anti-bot protection for login and registration
- Advanced Error Logging - Comprehensive error tracking and debugging
- File Upload Security - Avatar upload validation and secure file handling
Technical
- MVC Architecture Refactoring - Complete separation of concerns
LayoutHelper- Global layout data (notifications, stats, settings)DomainHelper- Domain formatting and business logicSessionHelper- Session display formattingNotificationService- Notification creation and management- All business logic removed from views (~265 lines cleaned)
- Database session handler implementing SessionHandlerInterface
- IP geolocation via ip-api.com (free, 45 req/min)
- Session validator middleware for real-time validation
- Automatic session cleanup (no cron needed for sessions)
- Flag-icons library integration for country flags
- User-agent parsing for device and browser detection
- Remember token cascade deletion on session termination
- Notification system with 7 notification types
- Welcome notifications on user creation and fresh install
- Upgrade notifications for admins with version tracking
- TwoFactorService - Complete 2FA implementation with TOTP and backup codes
- CaptchaService - Multi-provider CAPTCHA verification system
- ErrorHandler - Centralized error handling with database logging
- Logger - Enhanced logging service with structured context
- AvatarHelper - User avatar management with Gravatar integration
- Tag Model - Domain tagging system with user isolation
- ErrorLog Model - Error tracking and deduplication system
Contributors
- Special thanks to @jadeops for auto-detected cron path improvement & XSS protection enhancement (PR #1)
[1.0.0] - 2024-10-08
Added
- Initial release of Domain Monitor
- Modern PHP 8.1+ MVC architecture
- Domain management system with CRUD operations
- Automatic WHOIS lookup for domain information
- Multi-channel notification system:
- Email notifications via PHPMailer
- Telegram bot integration
- Discord webhook support
- Slack webhook support
- Notification groups feature
- Assign domains to notification groups
- Dashboard with real-time statistics
- Domain status tracking (active, expiring_soon, expired, error)
- Notification logging system
- Customizable notification intervals
- Cron job for automated domain checks
- Test notification script
- Responsive, modern UI design
- Database migration system
- Comprehensive documentation
- Installation guide
- Basic login/logout authentication
- Security features (prepared statements, session management)
- TLD Registry System with IANA integration
- Import and manage TLD data (RDAP servers, WHOIS servers, registry URLs)
- Progressive import workflow with real-time progress tracking
- Support for 1,400+ TLDs with automatic updates
- Import logs and history tracking
- Advanced domain verification using TLD registry data
- RDAP protocol support for modern domain queries
- Automatic WHOIS server discovery per TLD
- Monitoring status change notifications (activated/deactivated alerts)
- Notification group assignment change alerts
- Enhanced domain detail view with channel status indicators
- Comprehensive notification threshold configuration
- Debug logging for notification thresholds
Changed
- Unified design system across all views
- Consistent header styles (bordered instead of gradients)
- Standardized button sizes and padding
- Consistent form input styling
- Unified empty state designs
- Removed emojis from UI elements
- Improved navigation flow (edit page returns to detail view)
- Enhanced cron job logging with threshold display
- Streamlined installation process
- Encryption key auto-generation during migration
- No separate script needed for encryption key setup
Fixed
- Notification channel type display error in domain view
- Navigation redirect after domain update
- Cancel button redirect in domain edit page
- Design inconsistencies in notification group views
Security
- Random secure password generation on installation
- One-time password display during migration
- Removed hardcoded default credentials
- 16-character cryptographically secure admin passwords
Features
- ✅ Add, edit, delete, and view domains
- ✅ Automatic expiration date detection via WHOIS
- ✅ Support for multiple notification channels per group
- ✅ Flexible notification scheduling (60, 30, 21, 14, 7, 5, 3, 2, 1 days before)
- ✅ Email notifications with HTML templates
- ✅ Rich Discord embeds with color coding
- ✅ Telegram messages with formatting
- ✅ Slack blocks for structured messages
- ✅ Notification deduplication (prevent spam)
- ✅ Manual domain refresh
- ✅ Active/inactive domain toggle
- ✅ Comprehensive logging
- ✅ Statistics dashboard
- ✅ Recent notifications view
- ✅ Domain details with WHOIS data
- ✅ Nameserver display
- ✅ Notification history per domain
Technical
- PHP 8.1+ with modern features (match expressions, typed properties)
- MySQL/MariaDB database
- PSR-4 autoloading
- Environment-based configuration
- MVC pattern implementation
- Service layer architecture
- Repository pattern for data access
- Interface-based notification channels
- JSON configuration storage
- Prepared statements for SQL injection prevention
- CSRF token support ready
- Responsive CSS with CSS variables
- No JavaScript framework dependencies (vanilla JS where needed)
Documentation
- README.md with comprehensive guide
- Inline code documentation
- Configuration examples
- Troubleshooting guide
Roadmap - Future Enhancements
- User authentication system (completed - v1.1.0)
- Session management with geolocation (completed - v1.1.0)
- TLD Registry System (completed - v1.0.0)
- Remote session termination (completed - v1.1.0)
- In-app user notifications (completed - v1.1.0)
- Multi-user support with advanced permissions and roles
- API for external integrations
- Domain grouping/tagging (completed - v1.1.0)
- Custom notification templates
- SMS notifications (Twilio)
- Google Chat notifications (completed - v1.1.2)
- WhatsApp notifications
- Export functionality (CSV, PDF)
- Import domains from CSV
- Domain transfer tracking
- DNS record monitoring
- SSL certificate monitoring
- Downtime monitoring
- 2FA for login (completed - v1.1.0)
- Mobile app
- Docker support
- Redis caching
- Rate limiting
- Webhook support for third-party integrations
- Dark mode UI toggle
- Multi-language support
- Advanced filtering and search (completed - v1.1.0)
- Bulk operations (completed - v1.1.0)
- Scheduled reports
- Integration with domain registrars
Version History
1.1.2 (2026-02-09)
- Google Chat Webhook Support - Selectable payload formats (Generic, Google Chat, Simple Text)
- Domain Status Change Notifications - Configurable alerts for available, registered, expired, redemption_period, pending_delete
- Failed Login Notifications - In-app alerts with geolocation, device info, and failure reason
- Domain Expiration Bell Notifications - In-app alerts respecting user isolation mode
- Admin User Profile Page -
/users/{id}with Overview, Domains, Tags, Notification Groups tabs - Dashboard Insights - Registrar distribution, tag usage, notification coverage widgets
- Quick Actions Dropdown - Top-nav shortcut for Add Domain, Create Group, Create Tag, WHOIS Lookup
- WHOIS Rate Limit Handling - Exponential backoff with TLD-grouped retry logic
- Admin TLD Registry Editing - Edit WHOIS/RDAP servers from UI
- Redemption Period & Pending Delete - New domain lifecycle statuses from EPP codes
- Sidebar Branding - Logo, title, and subtitle in sidebar navigation
- Mobile UI Overhaul - Sidebar overlay, swipe-to-close, responsive layout improvements
- CSRF Protection - POST method enforced on all destructive actions
- Error Log Deduplication - Improved matching on type + file + line + message
- WHOIS Date Parsing - DD/MM/YYYY format support for European registries
- 404 Error Logging - Router logs with full request context
- Migration:
024_add_status_notifications_v1.1.2.sql
1.1.0 (2025-10-09)
- User Notifications System - In-app notification center with 7 notification types, filtering, pagination
- Advanced Session Management - Database-backed sessions with geolocation (country, city, ISP)
- Remote Session Control - Terminate any device instantly with immediate logout validation
- Enhanced Profile Page - Sidebar navigation with 4 tabs, hash-based routing (#profile, #security, #sessions)
- Two-Factor Authentication - Complete TOTP implementation with email backup codes and rate limiting
- CAPTCHA Security System - Support for reCAPTCHA v2/v3 and Cloudflare Turnstile with admin configuration
- Domain Tags System - Organize domains with custom tags for better categorization and filtering
- Advanced Error Logging - Database-backed error tracking with deduplication, context capture, and admin interface
- User Avatar System - Avatar upload with Gravatar integration and fallback to user initials
- Enhanced Logger Service - Structured logging with context arrays and multiple log levels
- WHOIS Parsing Improvements - Enhanced domain data parsing, referral handling, and availability detection
- MVC Architecture Refactoring - 3 new Helpers (Layout, Domain, Session), ~265 lines cleaned from views
- Geolocation Tracking - IP-based location detection using ip-api.com, country flags with flag-icons
- Device Detection - Browser & device type parsing (Chrome/Firefox/Safari, Desktop/Mobile/Tablet)
- Auto-Detected Cron Paths - Settings show actual installation paths (thanks @jadeops)
- Welcome Notifications - Sent to new users on registration or fresh install
- Upgrade Notifications - Admins notified on system updates with version & migration count
- Web-Based Installer - Replaces CLI, auto-generates encryption key, one-time password display
- Web-Based Updater -
/install/updatefor running new migrations with smart detection - User Registration - Full signup flow with email verification, password reset, resend verification
- User Management - CRUD for users with filtering, sorting, pagination (admin-only)
- Remember Me - 30-day secure tokens linked to sessions, cascade deletion on logout
- Session Validator - Middleware validates sessions on every request for instant remote logout
- Consistent UI/UX - Unified filtering, sorting, pagination across Domains, Users, Notifications, TLD Registry
- Smart Migrations - Consolidated schema for fresh installs, incremental for upgrades
- XSS Protection - htmlspecialchars() applied across all user-facing data (thanks @jadeops)
1.0.0 (2024-10-08)
- Initial public release
- Created by Hosteroid - Premium Hosting Solutions
🙏 Special Thanks
Contributors
- @jadeops - Auto-detected cron path improvement & XSS protection enhancement (PR #1)