Handle hostnames with upper-case letters
[webmin.git] / acl / backup_config.pl
1
2 do 'acl-lib.pl';
3
4 # backup_config_files()
5 # Returns files and directories that can be backed up
6 sub backup_config_files
7 {
8 my @rv;
9
10 # Add primary user and group files
11 my %miniserv;
12 &get_miniserv_config(\%miniserv);
13 push(@rv, $miniserv{'userfile'});
14 push(@rv, &acl_filename());
15
16 # Add all .acl files for users and groups
17 foreach my $u (&list_users(), &list_groups()) {
18         if (!$u->{'proto'}) {
19                 push(@rv, "$config_directory/$u->{'name'}.acl",
20                           glob("$config_directory/*/$u->{'name'}.acl"));
21                 }
22         }
23
24 # Add /etc/webmin/config
25 system("cp $config_directory/config $config_directory/config.aclbackup");
26 push(@rv, "$config_directory/config.aclbackup");
27
28 # Add /etc/webmin/miniserv.conf
29 system("cp $config_directory/miniserv.conf $config_directory/miniserv.conf.aclbackup");
30 push(@rv, "$config_directory/miniserv.conf.aclbackup");
31
32 return @rv;
33 }
34
35 # pre_backup(&files)
36 # Called before the files are actually read
37 sub pre_backup
38 {
39 return undef;
40 }
41
42 # post_backup(&files)
43 # Called after the files are actually read
44 sub post_backup
45 {
46 unlink("$config_directory/config.aclbackup");
47 unlink("$config_directory/miniserv.conf.aclbackup");
48 return undef;
49 }
50
51 # pre_restore(&files)
52 # Called before the files are restored from a backup
53 sub pre_restore
54 {
55 # Remove user and group .acl files
56 foreach my $u (&list_users(), &list_groups()) {
57         if (!$u->{'proto'}) {
58                 unlink("$config_directory/$u->{'name'}.acl",
59                        glob("$config_directory/*/$u->{'name'}.acl"));
60                 }
61         }
62 return undef;
63 }
64
65 # post_restore(&files)
66 # Called after the files are restored from a backup
67 sub post_restore
68 {
69 # Splice global config entries for users into real config
70 my %aclbackup;
71 &read_file("$config_directory/config.aclbackup", \%aclbackup);
72 unlink("$config_directory/config.aclbackup");
73 foreach my $k (keys %gconfig) {
74         delete($gconfig{$k}) if ($k =~ /^(lang_|notabs_|skill_|risk_|theme_|ownmods_)/);
75         }
76 foreach my $k (keys %aclbackup) {
77         $gconfig{$k} = $aclbackup{$k} if ($k =~ /^(lang_|notabs_|skill_|risk_|theme_|ownmods_)/);
78         }
79 &write_file("$config_directory/config", \%gconfig);
80
81 # Splice miniserv.conf entries for users into real config
82 %aclbackup = ( );
83 &read_file("$config_directory/miniserv.conf.aclbackup", \%aclbackup);
84 unlink("$config_directory/miniserv.conf.aclbackup");
85 my %miniserv;
86 &get_miniserv_config(\%miniserv);
87 foreach $k (keys %miniserv) {
88         delete($miniserv{$k}) if ($k =~ /^(preroot_)/);
89         }
90 foreach $k (keys %aclbackup) {
91         $miniserv{$k} = $aclbackup{$k} if ($k =~ /^(preroot_)/);
92         }
93 &put_miniserv_config(\%miniserv);
94
95 &restart_miniserv();
96 return undef;
97 }
98
99 1;
100