Handle hostnames with upper-case letters
[webmin.git] / webalizer / mass.cgi
1 #!/usr/local/bin/perl
2 # Mass schedule or de-schedule a bunch of logs
3
4 require './webalizer-lib.pl';
5 &foreign_require("cron", "cron-lib.pl");
6 &ReadParse();
7 &error_setup($text{'mass_err'});
8 $access{'view'} && &error($text{'edit_ecannot'});
9
10 # Validate inputs
11 @d = split(/\0/, $in{'d'});
12 @d || &error($text{'mass_enone'});
13 @jobs = &cron::list_cron_jobs();
14 foreach $file (@d) {
15         &can_edit_log($file) || &error($text{'edit_efilecannot'});
16         ($job{$file}) = grep { $_->{'command'} eq "$cron_cmd $file" } @jobs;
17         }
18
19 $count = 0;
20 if ($in{'enable'}) {
21         # Add cron jobs for selected
22         foreach $file (@d) {
23                 $cfile = &config_file_name($file);
24                 $lconf = &get_log_config($file);
25                 if (!$lconf->{'sched'}) {
26                         &lock_file($cfile);
27                         $lconf->{'sched'} = 1;
28                         $job = $job{$file};
29                         if (!$job) {
30                                 $job = { 'user' => 'root',
31                                          'active' => 1,
32                                          'command' => "$cron_cmd $file" };
33                                 &lconf_to_cron($lconf, $job);
34                                 &lock_file(&cron::cron_file($job));
35                                 &cron::create_cron_job($job);
36                                 &unlock_file(&cron::cron_file($job));
37                                 }
38                         &save_log_config($file, $lconf);
39                         &unlock_file($cfile);
40                         $count++;
41                         }
42                 }
43         &webmin_log("enable", "logs", $count);
44         }
45 else {
46         # Cancel cron jobs for selected
47         foreach $file (@d) {
48                 $cfile = &config_file_name($file);
49                 $lconf = &get_log_config($file);
50                 if ($lconf->{'sched'}) {
51                         &lock_file($cfile);
52                         $lconf->{'sched'} = 0;
53                         $job = $job{$file};
54                         if ($job) {
55                                 &lock_file(&cron::cron_file($job));
56                                 &cron::delete_cron_job($job);
57                                 &unlock_file(&cron::cron_file($job));
58                                 }
59                         &save_log_config($file, $lconf);
60                         &unlock_file($cfile);
61                         $count++;
62                         }
63                 }
64         &webmin_log("disable", "logs", $count);
65         }
66
67 &redirect("");
68