#!/usr/bin/perl # # SmoothWall CGIs # # This code is distributed under the terms of the GPL # # (c) The SmoothWall Team # use strict; # enable only the following on debugging purpose #use warnings; #use CGI::Carp 'fatalsToBrowser'; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; my %cgiparams=(); my $death = 0; my $rebirth = 0; my $default_time = '03:15'; &Header::showhttpheaders(); $cgiparams{'ACTION'} = ''; &Header::getcgihash(\%cgiparams); if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'}) { $death = 1; &General::log($Lang::tr{'shutting down ipfire'}); #system '/usr/local/bin/ipfiredeath'; system '/usr/local/bin/ipfirereboot down'; } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) { $rebirth = 1; &General::log($Lang::tr{'rebooting ipfire'}); #system '/usr/local/bin/ipfirerebirth'; system '/usr/local/bin/ipfirereboot boot'; } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'save'}) { my $days=''; my $n = 1; # build list of days map ($cgiparams{$_} eq 'on' ? $days .= ",".$n++ : $n++ , ('MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY','SUNDAY') ); # if days is empty, it is a remove else it is a change if (length ($days)){ substr($days,0,1) = ''; #kill front comma &General::log("Scheduling reboot on $days at $cgiparams{'TIME'}"); my $min; my $hour; ($hour,$min) = split (':', $cgiparams{'TIME'}); $days = "'*'" if ($days eq '1,2,3,4,5,6,7'); my $mode = ($cgiparams{'MODE'} eq 'halt') ? '-h' : '-r'; system "/usr/local/bin/ipfirereboot cron+ $min $hour $days $mode"; #reboot checks values of $hour & $min } else { &General::log("Remove scheduled reboot"); system '/usr/local/bin/ipfirereboot cron-'; } } if ($death == 0 && $rebirth == 0) { &Header::openpage($Lang::tr{'shutdown control'}, 1, ''); &Header::openbigbox('100%', 'left'); print "
\n"; } else { my $message=''; my $title=''; my $refresh = ""; if ($death) { $title = $Lang::tr{'shutting down'}; $message = $Lang::tr{'ipfire has now shutdown'}; } else { $title = $Lang::tr{'rebooting'}; $message = $Lang::tr{'ipfire has now rebooted'}; } &Header::openpage($title, 0, $refresh); &Header::openbigbox('100%', 'center'); print <
|