mirror of
https://github.com/webmin/webmin.git
synced 2026-08-23 07:20:28 +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).
38 lines
957 B
Perl
Executable File
38 lines
957 B
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Force log rotate
|
|
|
|
require './logrotate-lib.pl';
|
|
|
|
&ui_print_header(undef, $text{'force_title'}, "");
|
|
|
|
# Save this CGI from being killed by the rotation of Webmin's own logs
|
|
$SIG{'TERM'} = 'IGNORE';
|
|
|
|
print $text{'force_doing'},"\n";
|
|
&clean_environment();
|
|
|
|
# Force the same effective main and drop-in configs selected by the distro
|
|
# wrapper, while avoiding duplicate files already reached through includes.
|
|
my $main = &get_main_config_file();
|
|
my (undef, undef, $files) = &get_config($main);
|
|
my @configs = ($main, &get_add_file_configs($files));
|
|
my $configs = join(" ", map { "e_path($_) } @configs);
|
|
$out = &backquote_logged("$config{'logrotate'} -f $configs 2>&1");
|
|
&reset_environment();
|
|
if ($out) {
|
|
print "<pre>$out</pre>";
|
|
}
|
|
else {
|
|
print "<br>";
|
|
}
|
|
if ($? && $out) {
|
|
print $text{'force_failed'},"<br>\n";
|
|
}
|
|
else {
|
|
print $text{'force_done'},"<br>\n";
|
|
}
|
|
|
|
&webmin_log("force");
|
|
&ui_print_footer("", $text{'index_return'});
|
|
|