php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /usr/libexec/webmin/acl/ |
files >> //usr/libexec/webmin/acl/backup_config.pl |
use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; require 'acl-lib.pl'; our ($config_directory, %gconfig); # backup_config_files() # Returns files and directories that can be backed up sub backup_config_files { my @rv; # Add primary user and group files my %miniserv; &get_miniserv_config(\%miniserv); push(@rv, $miniserv{'userfile'}); push(@rv, &acl_filename()); # Add all .acl files for users and groups foreach my $u (&list_users(), &list_groups()) { if (!$u->{'proto'}) { push(@rv, "$config_directory/$u->{'name'}.acl", glob("$config_directory/*/$u->{'name'}.acl")); } } # Add /etc/webmin/config ©_source_dest("$config_directory/config", "$config_directory/config.aclbackup"); push(@rv, "$config_directory/config.aclbackup"); # Add /etc/webmin/miniserv.conf ©_source_dest("$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 foreach my $u (&list_users(), &list_groups()) { if (!$u->{'proto'}) { 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 my %aclbackup; &read_file("$config_directory/config.aclbackup", \%aclbackup); unlink("$config_directory/config.aclbackup"); foreach my $k (keys %gconfig) { delete($gconfig{$k}) if ($k =~ /^(lang_|notabs_|theme_|ownmods_)/); } foreach my $k (keys %aclbackup) { $gconfig{$k} = $aclbackup{$k} if ($k =~ /^(lang_|notabs_|theme_|ownmods_)/); } &write_file("$config_directory/config", \%gconfig); # Splice miniserv.conf entries for users and password restrictions into # real config %aclbackup = ( ); &read_file("$config_directory/miniserv.conf.aclbackup", \%aclbackup); unlink("$config_directory/miniserv.conf.aclbackup"); my %miniserv; &get_miniserv_config(\%miniserv); foreach my $k (keys %miniserv) { delete($miniserv{$k}) if ($k =~ /^(preroot_|pass_)/); } foreach my $k (keys %aclbackup) { $miniserv{$k} = $aclbackup{$k} if ($k =~ /^(preroot_|pass_)/); } &put_miniserv_config(\%miniserv); &restart_miniserv(); return undef; } 1;y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`