Files
webmin/logrotate/backup_config.pl
Ilia Ross 466f499e65 Fix openSUSE logrotate vendor overlay handling
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).
2026-08-03 02:36:05 +02:00

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;