1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#!/usr/local/bin/perl
# save.cgi
# Save an existing cluster cron job, or create a new one
require './cluster-cron-lib.pl';
&error_setup($text{'save_err'});
&ReadParse();
@jobs = &list_cluster_jobs();
if ($in{'new'}) {
$job = { 'type' => 0,
'cluster_id' => time()."-".$$ };
}
else {
($oldjob) = grep { $_->{'cluster_id'} eq $in{'id'} } @jobs;
$job->{'cluster_id'} = $oldjob->{'cluster_id'};
$job->{'type'} = $oldjob->{'type'};
$job->{'file'} = $oldjob->{'file'};
$job->{'line'} = $oldjob->{'line'};
$job->{'nolog'} = $oldjob->{'nolog'};
}
# Check and parse inputs
if ($in{"cmd"} !~ /\S/) {
&error($cron::text{'save_ecmd'});
}
if (!$in{'user'}) {
&error($cron::text{'save_euser'});
}
&cron::parse_times_input($job, \%in);
$in{input} =~ s/\r//g; $in{input} =~ s/%/\\%/g;
$in{cmd} =~ s/%/\\%/g;
$job->{'active'} = $in{'active'};
$job->{'cluster_command'} = $in{'cmd'};
if ($in{input} =~ /\S/) {
@inlines = split(/\n/ , $in{input});
$job->{'cluster_input'} .= join('%' , @inlines);
}
$job->{'command'} = "$cluster_cron_cmd $job->{'cluster_id'}";
$job->{'cluster_user'} = $in{'user'};
$job->{'user'} = 'root';
$job->{'cluster_server'} = join(" ", split(/\0/, $in{'server'}));
# Make sure the wrapper script exists
if (!-r $cluster_cron_cmd) {
$perl_path = &get_perl_path();
&lock_file($cluster_cron_cmd);
open(CMD, ">$cluster_cron_cmd");
print CMD <<EOF;
#!$perl_path
open(CONF, "$config_directory/miniserv.conf");
while(<CONF>) {
\$root = \$1 if (/^root=(.*)/);
}
close(CONF);
\$ENV{'WEBMIN_CONFIG'} = "$ENV{'WEBMIN_CONFIG'}";
\$ENV{'WEBMIN_VAR'} = "$ENV{'WEBMIN_VAR'}";
chdir("\$root/$module_name");
exec("\$root/$module_name/cron.pl", \$ARGV[0]);
EOF
close(CMD);
chmod(0755, $cluster_cron_cmd);
&unlock_file($cluster_cron_cmd);
}
if (!$in{'new'}) {
# Editing an existing job
&modify_cluster_job($job);
}
else {
# Creating a new job
&create_cluster_job($job);
}
if ($in{'new'}) {
&webmin_log("create", "cron", $job->{'cluster_user'}, $job);
}
else {
&webmin_log("modify", "cron", $job->{'cluster_user'}, $job);
}
&redirect("");
|