Handle hostnames with upper-case letters
[webmin.git] / sarg / save_sched.cgi
1 #!/usr/local/bin/perl
2 # Setup, update or delete reporting cron job
3
4 require './sarg-lib.pl';
5 &foreign_require("cron", "cron-lib.pl");
6 @jobs = &cron::list_cron_jobs();
7 ($oldjob) = grep { $_->{'user'} eq 'root' &&
8                 $_->{'command'} eq $cron_cmd } @jobs;
9 &ReadParse();
10
11 # Validate inputs
12 &error_setup($text{'sched_err'});
13 if ($oldjob) {
14         $job = $oldjob;
15         }
16 else {
17         $job = { 'active' => 1,
18                  'user' => 'root',
19                  'command' => $cron_cmd };
20         }
21 if ($in{'sched'}) {
22         &cron::parse_times_input($job, \%in);
23         &cron::create_wrapper($cron_cmd, $module_name, "generate.pl");
24         }
25 if (!$in{'range_def'}) {
26         $in{'rfrom'} =~ /^\d+$/ || &error($text{'sched_erfrom'});
27         $in{'rto'} =~ /^\d+$/ || &error($text{'sched_erto'});
28         }
29
30 &lock_file(&cron::cron_file($job));
31 if ($in{'sched'} && !$oldjob) {
32         # Need to create
33         &cron::create_cron_job($job);
34         $mode = "create";
35         }
36 elsif (!$in{'sched'} && $oldjob) {
37         # Need to delete
38         &cron::delete_cron_job($job);
39         $mode = "delete";
40         }
41 elsif ($in{'sched'} && $oldjob) {
42         # Need to update
43         &cron::change_cron_job($job);
44         $mode = "update";
45         }
46 else {
47         $mode = "nothing";
48         }
49 &unlock_file(&cron::cron_file($job));
50
51 # Save config settings
52 &lock_file($module_config_file);
53 $config{'clear'} = $in{'clear'};
54 $config{'range'} = $in{'range_def'} ? undef : $in{'rfrom'}." ".$in{'rto'};
55 &save_module_config();
56 &unlock_file($module_config_file);
57 &webmin_log("sched", undef, $mode);
58
59 &redirect("");
60