mirror of
https://github.com/webmin/webmin.git
synced 2026-08-25 00:00:31 +01:00
This PR updates the Log File Rotation module for openSUSE Leap 16's split `/usr/etc` and `/etc` configuration model. - Select the local main configuration when present, otherwise use the vendor configuration. - Recursively merge vendor and local drop-ins using the same precedence as `logrotate-all`. - Display vendor configurations while keeping `/usr/etc` read-only. - Copy vendor files into matching `/etc` overrides before editing or deleting them. - Preserve empty overrides so deleted vendor rotations remain disabled. - Use the openSUSE wrapper for scheduled rotation and the effective configuration set for forced rotation. - Keep behavior unchanged on distributions that do not enable the vendor overlay. Includes regression coverage for selection, precedence, copy-on-write, deletion, scheduling, backups, and protection against direct vendor writes. Closes [#2682](https://github.com/webmin/webmin/issues/2682).
52 lines
1.1 KiB
Perl
Executable File
52 lines
1.1 KiB
Perl
Executable File
|
|
do 'logrotate-lib.pl';
|
|
|
|
# backup_config_files()
|
|
# Returns files and directories that can be backed up
|
|
sub backup_config_files
|
|
{
|
|
# Keep backup behavior unchanged on systems without the vendor overlay.
|
|
if (!$config{'vendor_logrotate_conf'} && !$config{'vendor_add_file'}) {
|
|
local $conf = &get_config();
|
|
return &unique(map { $_->{'file'} } @$conf);
|
|
}
|
|
|
|
# Back up only writable files. Use the complete effective file list so an
|
|
# empty local file that intentionally shadows a vendor file is preserved.
|
|
local ($conf, $lnum, $files) = &get_config();
|
|
return &unique(grep { !&is_vendor_main_config($_) &&
|
|
!&is_vendor_config_file($_) }
|
|
@$files);
|
|
}
|
|
|
|
# pre_backup(&files)
|
|
# Called before the files are actually read
|
|
sub pre_backup
|
|
{
|
|
return undef;
|
|
}
|
|
|
|
# post_backup(&files)
|
|
# Called after the files are actually read
|
|
sub post_backup
|
|
{
|
|
return undef;
|
|
}
|
|
|
|
# pre_restore(&files)
|
|
# Called before the files are restored from a backup
|
|
sub pre_restore
|
|
{
|
|
return undef;
|
|
}
|
|
|
|
# post_restore(&files)
|
|
# Called after the files are restored from a backup
|
|
sub post_restore
|
|
{
|
|
return undef;
|
|
}
|
|
|
|
1;
|
|
|