mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
100 lines
2.5 KiB
Perl
Executable File
100 lines
2.5 KiB
Perl
Executable File
|
|
do 'acl-lib.pl';
|
|
|
|
# backup_config_files()
|
|
# Returns files and directories that can be backed up
|
|
sub backup_config_files
|
|
{
|
|
local @rv;
|
|
|
|
# Add primary user and group files
|
|
local %miniserv;
|
|
&get_miniserv_config(\%miniserv);
|
|
push(@rv, $miniserv{'userfile'});
|
|
push(@rv, &acl_filename());
|
|
|
|
# Add all .acl files for users and groups
|
|
local $u;
|
|
foreach $u (&list_users(), &list_groups()) {
|
|
push(@rv, "$config_directory/$u->{'name'}.acl",
|
|
glob("$config_directory/*/$u->{'name'}.acl"));
|
|
}
|
|
|
|
# Add /etc/webmin/config
|
|
system("cp $config_directory/config $config_directory/config.aclbackup");
|
|
push(@rv, "$config_directory/config.aclbackup");
|
|
|
|
# Add /etc/webmin/miniserv.conf
|
|
system("cp $config_directory/miniserv.conf $config_directory/miniserv.conf.aclbackup");
|
|
push(@rv, "$config_directory/miniserv.conf.aclbackup");
|
|
|
|
return @rv;
|
|
}
|
|
|
|
# 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
|
|
{
|
|
unlink("$config_directory/config.aclbackup");
|
|
unlink("$config_directory/miniserv.conf.aclbackup");
|
|
return undef;
|
|
}
|
|
|
|
# pre_restore(&files)
|
|
# Called before the files are restored from a backup
|
|
sub pre_restore
|
|
{
|
|
# Remove user and group .acl files
|
|
local $u;
|
|
foreach $u (&list_users(), &list_groups()) {
|
|
unlink("$config_directory/$u->{'name'}.acl",
|
|
glob("$config_directory/*/$u->{'name'}.acl"));
|
|
}
|
|
return undef;
|
|
}
|
|
|
|
# post_restore(&files)
|
|
# Called after the files are restored from a backup
|
|
sub post_restore
|
|
{
|
|
# Splice global config entries for users into real config
|
|
local %aclbackup;
|
|
&read_file("$config_directory/config.aclbackup", \%aclbackup);
|
|
unlink("$config_directory/config.aclbackup");
|
|
local $k;
|
|
foreach $k (keys %gconfig) {
|
|
delete($gconfig{$k}) if ($k =~ /^(lang_|notabs_|skill_|risk_|theme_|ownmods_)/);
|
|
}
|
|
foreach $k (keys %aclbackup) {
|
|
$gconfig{$k} = $aclbackup{$k} if ($k =~ /^(lang_|notabs_|skill_|risk_|theme_|ownmods_)/);
|
|
}
|
|
&write_file("$config_directory/config", \%gconfig);
|
|
|
|
# Splice miniserv.conf entries for users into real config
|
|
%aclbackup = ( );
|
|
&read_file("$config_directory/miniserv.conf.aclbackup", \%aclbackup);
|
|
unlink("$config_directory/miniserv.conf.aclbackup");
|
|
local %miniserv;
|
|
&get_miniserv_config(\%miniserv);
|
|
foreach $k (keys %miniserv) {
|
|
delete($miniserv{$k}) if ($k =~ /^(preroot_)/);
|
|
}
|
|
foreach $k (keys %aclbackup) {
|
|
$miniserv{$k} = $aclbackup{$k} if ($k =~ /^(preroot_)/);
|
|
}
|
|
&put_miniserv_config(\%miniserv);
|
|
|
|
&restart_miniserv();
|
|
return undef;
|
|
}
|
|
|
|
1;
|
|
|