Add import/export and update system

Implement CSV/JSON import and export for domains, notification groups and tags (with masking for sensitive channel data), including size/format validation, in-memory CSV building, and logging. Add tag transfer and bulk transfer actions (admin-only). Introduce a new update system: Add UpdateController and UpdateService, migration 025_add_update_system_v1.1.3.sql, and installer changes to include the new migration and version handling; provide endpoints to check, apply, rollback and configure updates. Update helpers and UI bits: add getUpdateBadgeInfo in LayoutHelper, update notification icons/redirects, and add getMaxUploadSize in ViewHelper. Misc: add NotificationGroup::findByName, tweak .gitignore backups path, and update related views and routes.
This commit is contained in:
Hosteroid
2026-02-11 17:43:23 +02:00
parent 0c759cdd1d
commit 3688c8b71b
32 changed files with 4268 additions and 350 deletions

View File

@@ -362,7 +362,7 @@ INSERT INTO settings (setting_key, setting_value, `type`, `description`) VALUES
('app_name', 'Domain Monitor', 'string', 'Application name'),
('app_url', 'http://localhost:8000', 'string', 'Application URL'),
('app_timezone', 'UTC', 'string', 'Application timezone'),
('app_version', '1.1.2', 'string', 'Application version number'),
('app_version', '1.1.3', 'string', 'Application version number'),
-- Email settings
('mail_host', 'smtp.mailtrap.io', 'string', 'SMTP server host'),
@@ -395,7 +395,11 @@ INSERT INTO settings (setting_key, setting_value, `type`, `description`) VALUES
('two_factor_email_code_expiry_minutes', '10', 'string', 'Email code expiry time in minutes'),
-- User isolation settings
('user_isolation_mode', 'shared', 'string', 'User data visibility mode: shared (all users see all data) or isolated (users see only their own data)')
('user_isolation_mode', 'shared', 'string', 'User data visibility mode: shared (all users see all data) or isolated (users see only their own data)'),
-- Update system settings
('update_channel', 'stable', 'string', 'Update channel: stable (releases only) or latest (releases + hotfixes)'),
('update_badge_enabled', '1', 'string', 'Show update available badge in top menu when an update is available (1=yes, 0=no)')
ON DUPLICATE KEY UPDATE setting_key=setting_key;

View File

@@ -0,0 +1,19 @@
-- Migration: Add application update system settings
-- Version: 1.1.3
-- This migration adds settings for the GitHub-based update system:
-- update_channel (stable/latest), installed_commit_sha for hotfix tracking
-- 1. Add update channel setting (stable = releases only, latest = releases + hotfixes)
INSERT INTO settings (setting_key, setting_value, created_at, updated_at)
VALUES ('update_channel', 'stable', NOW(), NOW())
ON DUPLICATE KEY UPDATE setting_key = setting_key;
-- 2. Add update badge in menu setting (1 = show when update available, 0 = hide)
INSERT INTO settings (setting_key, setting_value, created_at, updated_at)
VALUES ('update_badge_enabled', '1', NOW(), NOW())
ON DUPLICATE KEY UPDATE setting_key = setting_key;
-- 3. Update application version to 1.1.3
UPDATE settings
SET setting_value = '1.1.3'
WHERE setting_key = 'app_version';