]>
git.ipfire.org Git - people/stevee/ipfire-2.x.git/blob - html/cgi-bin/shutdown.cgi
5 # This code is distributed under the terms of the GPL
7 # (c) The SmoothWall Team
9 # $Id: shutdown.cgi,v 1.5.2.10 2006/01/02 16:21:00 eoberlander Exp $
14 # enable only the following on debugging purpose
16 #use CGI::Carp 'fatalsToBrowser';
18 require 'CONFIG_ROOT/general-functions.pl';
19 require "${General::swroot}/lang.pl";
20 require "${General::swroot}/header.pl";
25 my $default_time = '03:15';
27 &Header
::showhttpheaders
();
29 $cgiparams{'ACTION'} = '';
30 &Header
::getcgihash
(\
%cgiparams);
32 if ($cgiparams{'ACTION'} eq $Lang::tr
{'shutdown'}) {
34 &General
::log($Lang::tr
{'shutting down ipcop'});
35 #system '/usr/local/bin/ipcopdeath';
36 system '/usr/local/bin/ipcopreboot down';
37 } elsif ($cgiparams{'ACTION'} eq $Lang::tr
{'reboot'}) {
39 &General
::log($Lang::tr
{'rebooting ipcop'});
40 #system '/usr/local/bin/ipcoprebirth';
41 system '/usr/local/bin/ipcopreboot boot';
42 } elsif ($cgiparams{'ACTION'} eq $Lang::tr
{'save'}) {
46 map ($cgiparams{$_} eq 'on' ?
$days .= ",".$n++ : $n++ ,
47 ('MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY','SUNDAY') );
49 # if days is empty, it is a remove else it is a change
51 substr($days,0,1) = ''; #kill front comma
52 &General
::log("Scheduling reboot on $days at $cgiparams{'TIME'}");
55 ($hour,$min) = split (':', $cgiparams{'TIME'});
56 $days = "'*'" if ($days eq '1,2,3,4,5,6,7');
57 my $mode = ($cgiparams{'MODE'} eq 'halt') ?
'-h' : '-r';
58 system "/usr/local/bin/ipcopreboot cron+ $min $hour $days $mode"; #reboot checks values of $hour & $min
60 &General
::log("Remove scheduled reboot");
61 system '/usr/local/bin/ipcopreboot cron-';
64 if ($death == 0 && $rebirth == 0) {
66 &Header
::openpage
($Lang::tr
{'shutdown control'}, 1, '');
68 &Header
::openbigbox
('100%', 'left');
70 print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
72 &Header
::openbox
('100%', 'left', $Lang::tr
{'shutdown2'});
76 <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reboot'}' /></td>
77 <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'shutdown'}' /></td>
84 &Header
::openbox
('100%', 'left', $Lang::tr
{'reboot schedule'});
86 my $reboot_at = $default_time;
89 #decode the shutdown line stored in crontab
91 open(FILE
, "/usr/local/bin/ipcopreboot cron?|");
92 my $schedule = <FILE
>;
95 if ($schedule) { # something exist
96 $schedule =~ /(\d+) (\d+) \* \* ([1234567*,]+) .* (-[h|r])/;
97 $reboot_at = sprintf("%.02d",$2) . ':' . sprintf("%.02d",$1); # hour (03:45)
98 $days = $3; # 1,2,3... or *
100 $checked{'MODE'}{'halt'} = "checked='checked'";
102 $checked{'MODE'}{'reboot'} = "checked='checked'";
107 $checked{'MONDAY'} = "checked='checked'";
108 $checked{'TUESDAY'} = "checked='checked'";
109 $checked{'WEDNESDAY'} = "checked='checked'";
110 $checked{'THURSDAY'} = "checked='checked'";
111 $checked{'FRIDAY'} = "checked='checked'";
112 $checked{'SATURDAY'} = "checked='checked'";
113 $checked{'SUNDAY'} = "checked='checked'";
115 $checked{'MONDAY'} = "checked='checked'" if ($days =~ /1/);
116 $checked{'TUESDAY'} = "checked='checked'" if ($days =~ /2/);
117 $checked{'WEDNESDAY'} = "checked='checked'" if ($days =~ /3/);
118 $checked{'THURSDAY'} = "checked='checked'" if ($days =~ /4/);
119 $checked{'FRIDAY'} = "checked='checked'" if ($days =~ /5/);
120 $checked{'SATURDAY'} = "checked='checked'" if ($days =~ /6/);
121 $checked{'SUNDAY'} = "checked='checked'" if ($days =~ /7/);
127 <td class='boldbase' colspan='2'><b>$Lang::tr{'time'}</b></td>
128 <td class='boldbase' colspan='2'><b>$Lang::tr{'day'}</b></td>
129 <td class='boldbase'><b>$Lang::tr{'action'}</b></td>
134 print "<td align='left' width='15%' class='base' valign='top' rowspan='2'>", &select_hour_var
("TIME", $reboot_at);
138 <input type='checkbox' name='MONDAY' $checked{'MONDAY'}></td>
139 <td width='15%' class='base'>
140 $Lang::tr{'monday'}</td>
142 <input type='radio' name='MODE' value='reboot' $checked{'MODE'}{'reboot'} /></td>
143 <td width='70%' class='base'>$Lang::tr{'reboot'}</td></tr>
146 <input type='checkbox' name='TUESDAY' $checked{'TUESDAY'}></td>
147 <td width='15%' class='base'>
148 $Lang::tr{'tuesday'}</td>
150 <input type='radio' name='MODE' value='halt' $checked{'MODE'}{'halt'} /></td>
151 <td class='base'>$Lang::tr{'shutdown'}</td></tr>
155 <input type='checkbox' name='WEDNESDAY' $checked{'WEDNESDAY'}></td>
156 <td width='15%' class='base'>
157 $Lang::tr{'wednesday'}</td></tr>
161 <input type='checkbox' name='THURSDAY' $checked{'THURSDAY'}></td>
162 <td width='15%' class='base'>
163 $Lang::tr{'thursday'}</td></tr>
167 <input type='checkbox' name='FRIDAY' $checked{'FRIDAY'}></td>
168 <td width='15%' class='base'>
169 $Lang::tr{'friday'}</td></tr>
173 <input type='checkbox' name='SATURDAY' $checked{'SATURDAY'}></td>
174 <td width='15%' class='base'>
175 $Lang::tr{'saturday'}</td></tr>
179 <input type='checkbox' name='SUNDAY' $checked{'SUNDAY'}></td>
180 <td width='15%' class='base'>
181 $Lang::tr{'sunday'}</td></tr>
187 <td width='60%'> </td>
188 <td width='30%' align='center'>
189 <input type='submit' name='ACTION' value='$Lang::tr{'save'}' />
191 <td width='10%' align='right'>
192 <a href='${General::adminmanualurl}/system.html#shutdown' target='_blank'>
193 <img src='/images/web-support.png' title='$Lang::tr{'online help en'}' /></a></td>
204 my $refresh = "<meta http-equiv='refresh' content='5; URL=/cgi-bin/index.cgi' />";
206 $title = $Lang::tr
{'shutting down'};
207 $message = $Lang::tr
{'ipcop has now shutdown'};
209 $title = $Lang::tr
{'rebooting'};
210 $message = $Lang::tr
{'ipcop has now rebooted'};
212 &Header
::openpage
($title, 0, $refresh);
214 &Header
::openbigbox
('100%', 'center');
217 <table width='100%' bgcolor='#ffffff'>
218 <tr><td align='center'>
219 <br /><br /><img src='/ipcop_big.gif' /><br /><br /><br />
223 <font size='6'>$message</font>
229 &Header
::closebigbox
();
230 &Header
::closepage
();
234 # Create a named select box containing valid times from quarter to quarter.
235 sub select_hour_var
{
236 # Create a variable containing the SELECT with selected value variable name and current value selected
237 my $select_hour_var = shift;
238 my $selected_hour = shift;
240 my $select_hour = "<select name='$select_hour_var'>";
244 for (my $x=0; $x<(24*4); $x++) {
245 my $check = $selected_hour eq $str ?
"selected='selected'" : '';
246 $select_hour .= "<Option $check value='$str'>$str";
247 $str = sprintf("%.02d", $hh) . ":" . sprintf("%.02d", $mm);
249 if ($mm==60) {$mm=0; $hh++; }
251 $select_hour .= "</select>\n";
252 return ($select_hour);