]>
git.ipfire.org Git - ipfire-2.x.git/blob - html/cgi-bin/trafficadm.cgi
3 # This code is distributed under the terms of the GPL
5 # Copyright (c) 2005 Achim Weber
7 # $Id: trafficadm.cgi,v 1.21 2006/12/31 14:33:18 dotzball Exp $
12 # enable only the following on debugging purpose
14 use CGI
::Carp
'fatalsToBrowser';
16 require '/var/ipfire/general-functions.pl';
17 require "${General::swroot}/lang.pl";
18 require "${General::swroot}/header.pl";
19 require "${General::swroot}/net-traffic/net-traffic-admin.pl";
22 my $errormessage = '';
25 my @days = ( 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 );
26 my @warnLevels = ( 50,60,70,80,90,100 );
28 my @dummy = ($NETTRAFF::settingsfile
, ${Header
::colourred
});
31 &Header
::showhttpheaders
();
34 $cgiparams{'MONTHLY_VOLUME_ON'} = 'off';
35 $cgiparams{'MONTHLY_VOLUME'} = '';
36 $cgiparams{'STARTDAY'} = '1';
37 $cgiparams{'WARN_ON'} = 'off';
38 $cgiparams{'WARN'} = '80';
39 $cgiparams{'CALC_INTERVAL'} = '60';
40 $cgiparams{'SHOW_AT_HOME'} = 'off';
41 $cgiparams{'SEND_EMAIL_ON'} = 'off';
42 $cgiparams{'EMAIL_TO'} = '';
43 $cgiparams{'EMAIL_FROM'} = '';
44 $cgiparams{'EMAIL_USR'} = '';
45 $cgiparams{'EMAIL_PW'} = '';
46 $cgiparams{'EMAIL_SERVER'} = '';
47 $cgiparams{'VERSION_CHECK_ON'} = 'off';
50 &Header
::getcgihash
(\
%cgiparams);
52 if ($cgiparams{'ACTION'} eq $Lang::tr
{'save'})
59 else { # no error, all right, save new settings
60 &General
::writehash
($NETTRAFF::settingsfile
, \
%cgiparams);
62 `/usr/local/bin/monitorTraff --force < /dev/null > /dev/null 2>&1 &`;
64 } # end if ($cgiparams{'ACTION'} eq $Lang::tr{'save'})
67 # if user want to save settings and get a errormessage, we donĀ“t
68 # overwrite users input
71 &NETTRAFF
::readSettings
();
73 $cgiparams{'MONTHLY_VOLUME_ON'} = $NETTRAFF::settings
{'MONTHLY_VOLUME_ON'};
74 $cgiparams{'MONTHLY_VOLUME'} = $NETTRAFF::settings
{'MONTHLY_VOLUME'};
75 $cgiparams{'STARTDAY'} = $NETTRAFF::settings
{'STARTDAY'};
76 $cgiparams{'WARN_ON'} = $NETTRAFF::settings
{'WARN_ON'};
77 $cgiparams{'WARN'} = $NETTRAFF::settings
{'WARN'};
78 $cgiparams{'CALC_INTERVAL'} = $NETTRAFF::settings
{'CALC_INTERVAL'};
79 $cgiparams{'SHOW_AT_HOME'} = $NETTRAFF::settings
{'SHOW_AT_HOME'};
80 $cgiparams{'SEND_EMAIL_ON'} = $NETTRAFF::settings
{'SEND_EMAIL_ON'};
81 $cgiparams{'EMAIL_TO'} = $NETTRAFF::settings
{'EMAIL_TO'};
82 $cgiparams{'EMAIL_FROM'} = $NETTRAFF::settings
{'EMAIL_FROM'};
83 $cgiparams{'EMAIL_USR'} = $NETTRAFF::settings
{'EMAIL_USR'};
84 $cgiparams{'EMAIL_PW'} = $NETTRAFF::settings
{'EMAIL_PW'};
85 $cgiparams{'EMAIL_SERVER'} = $NETTRAFF::settings
{'EMAIL_SERVER'};
86 $cgiparams{'VERSION_CHECK_ON'} = $NETTRAFF::settings
{'VERSION_CHECK_ON'};
88 } # end unless ($saveerror)
91 if ($cgiparams{'ACTION'} eq $Lang::tr
{'send test mail'})
94 my $return = `/usr/local/bin/monitorTraff --testEmail`;
96 if($return =~ /Email was sent successfully!/)
98 $infomessage = "$Lang::tr{'test email was sent'}<br/>";
102 $errormessage = "$Lang::tr{'test email could not be sent'}:<br/>";
103 $errormessage .= "$return <br />";
107 } # end if ($cgiparams{'ACTION'} eq $Lang::tr{'send test mail'})
112 $selected{'CALC_INTERVAL'}{'5'} = '';
113 $selected{'CALC_INTERVAL'}{'10'} = '';
114 $selected{'CALC_INTERVAL'}{'15'} = '';
115 $selected{'CALC_INTERVAL'}{'30'} = '';
116 $selected{'CALC_INTERVAL'}{'60'} = '';
117 $selected{'CALC_INTERVAL'}{$cgiparams{'CALC_INTERVAL'}} = "selected='selected'";
120 $checked{'MONTHLY_VOLUME_ON'}{'off'} = '';
121 $checked{'MONTHLY_VOLUME_ON'}{'on'} = '';
122 $checked{'MONTHLY_VOLUME_ON'}{$cgiparams{'MONTHLY_VOLUME_ON'}} = "checked='checked'";
124 $checked{'WARN_ON'}{'off'} = '';
125 $checked{'WARN_ON'}{'on'} = '';
126 $checked{'WARN_ON'}{$cgiparams{'WARN_ON'}} = "checked='checked'";
128 $checked{'SHOW_AT_HOME'}{'off'} = '';
129 $checked{'SHOW_AT_HOME'}{'on'} = '';
130 $checked{'SHOW_AT_HOME'}{$cgiparams{'SHOW_AT_HOME'}} = "checked='checked'" ;
132 $checked{'SEND_EMAIL_ON'}{'off'} = '';
133 $checked{'SEND_EMAIL_ON'}{'on'} = '';
134 $checked{'SEND_EMAIL_ON'}{$cgiparams{'SEND_EMAIL_ON'}} = "checked='checked'" ;
136 $checked{'VERSION_CHECK_ON'}{'off'} = '';
137 $checked{'VERSION_CHECK_ON'}{'on'} = '';
138 $checked{'VERSION_CHECK_ON'}{$cgiparams{'VERSION_CHECK_ON'}} = "checked='checked'" ;
141 my $btnTestmailDisabled = "";
142 $btnTestmailDisabled = "disabled='disabled'" if($cgiparams{'SEND_EMAIL_ON'} ne 'on');
144 &Header
::openpage
($Lang::tr
{'traffic monitor'}, 1, '');
145 &Header
::openbigbox
('100%', 'left');
148 &Header
::openbox
('100%', 'left', $Lang::tr
{'error messages'});
149 print "<class name='base'><font color='${Header::colourred}'>$errormessage\n</font>";
150 print " </class>\n";
155 &Header
::openbox
('100%', 'left', "$Lang::tr{'traffic info messages'}:");
156 print "<class name='base'>$infomessage\n";
157 print " </class>\n";
161 &Header
::openbox
('100%', 'left', "$Lang::tr{'net-traffic configuration'}:");
164 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
167 <td align='left' class='base' width='1%'>
168 <input type="checkbox" name="SHOW_AT_HOME" $checked{'SHOW_AT_HOME'}{'on'} />
170 <td align='left' class='base' nowrap='nowrap' colspan="3">
171 $Lang::tr{'display traffic at home'}
175 <td align='left' class='base'>
176 <input type="checkbox" name="MONTHLY_VOLUME_ON" $checked{'MONTHLY_VOLUME_ON'}{'on'} />
178 <td align='left' class='base' nowrap='nowrap' colspan="2">
179 $Lang::tr{'monthly volume'} (MByte):
181 <td align='left' class='base' >
182 <input type='text' name='MONTHLY_VOLUME' value='$cgiparams{'MONTHLY_VOLUME'}' size='20' maxlength='17' />
186 <td align='left' class='base' colspan="2"></td>
187 <td align='left' class='base' nowrap='nowrap' >
188 $Lang::tr{'monthly volume start day'}:
190 <td align='left' class='base' >
191 <select name='STARTDAY'>
194 foreach my $day (@days)
197 if ($day == $cgiparams{'STARTDAY'}) {
198 print 'selected=\'selected\' '; }
199 print "value='$day'>$day</option>\n";
206 <td align='left' class='base' width='1%'></td>
207 <td align='left' class='base' width='1%'>
208 <input type="checkbox" name="WARN_ON" $checked{'WARN_ON'}{'on'} />
210 <td align='left' class='base' width='20%' nowrap='nowrap'>
211 $Lang::tr{'warn when traffic reaches'}:
213 <td align='left' class='base' width='78%'>
217 foreach my $level (@warnLevels)
220 if ($level == $cgiparams{'WARN'}) {
221 print 'selected=\'selected\' '; }
222 print "value='$level'>$level</option>\n";
229 <td align='left' class='base' colspan="2"></td>
230 <td align='left' class='base' nowrap='nowrap' >
231 $Lang::tr{'calc traffic all x minutes'}:
233 <td align='left' class='base' >
234 <select name='CALC_INTERVAL'>
235 <option value='5' $selected{'CALC_INTERVAL'}{'5'} > 5</option>
236 <option value='10' $selected{'CALC_INTERVAL'}{'10'}>10</option>
237 <option value='15' $selected{'CALC_INTERVAL'}{'15'}>15</option>
238 <option value='30' $selected{'CALC_INTERVAL'}{'30'}>30</option>
239 <option value='60' $selected{'CALC_INTERVAL'}{'60'}>60</option>
244 <td align='left' class='base'> </td>
245 <td align='left' class='base'>
246 <input type="checkbox" name="SEND_EMAIL_ON" $checked{'SEND_EMAIL_ON'}{'on'} />
248 <td align='left' class='base' colspan="2" nowrap='nowrap' >
249 $Lang::tr{'send email notification'}:
253 <td align='left' class='base' colspan="2"> </td>
254 <td align='left' class='base' nowrap='nowrap'>
255 $Lang::tr{'to email adr'}:
257 <td align='left' class='base' >
258 <input type='text' name='EMAIL_TO' value='$cgiparams{'EMAIL_TO'}' size='25' />
262 <td align='left' class='base' colspan="2"> </td>
263 <td align='left' class='base' nowrap='nowrap'>
264 $Lang::tr{'from email adr'}:
266 <td align='left' class='base' >
267 <input type='text' name='EMAIL_FROM' value='$cgiparams{'EMAIL_FROM'}' size='25' />
271 <td align='left' class='base' colspan="2"> </td>
272 <td align='left' class='base' nowrap='nowrap'>
273 $Lang::tr{'from email user'}:
275 <td align='left' class='base' >
276 <input type='text' name='EMAIL_USR' value='$cgiparams{'EMAIL_USR'}' size='25' />
277 <img src='/blob.gif' alt='*' />
281 <td align='left' class='base' colspan="2"> </td>
282 <td align='left' class='base' nowrap='nowrap'>
283 $Lang::tr{'from email pw'}:
285 <td align='left' class='base' >
286 <input type='password' name='EMAIL_PW' value='$cgiparams{'EMAIL_PW'}' size='25' />
287 <img src='/blob.gif' alt='*' />
291 <td align='left' class='base' colspan="2"> </td>
292 <td align='left' class='base' nowrap='nowrap'>
293 $Lang::tr{'from email server'}:
295 <td align='left' class='base' >
296 <input type='text' name='EMAIL_SERVER' value='$cgiparams{'EMAIL_SERVER'}' size='25' />
300 <td align='left' class='base' colspan="2"> </td>
301 <td align='left' class='base' colspan="2">
302 <input type='submit' name='ACTION' value='$Lang::tr{'send test mail'}' $btnTestmailDisabled />
309 <td align='left' class='base' nowrap='nowrap' width='2%'>
310 <img src='/blob.gif' alt ='*' align='top' />
311 <font class='base'>$Lang::tr{'this field may be blank'}</font>
313 <td align='center' class='base' width='48%'>
314 <input type='submit' name='ACTION' value='$Lang::tr{'save'}' />
317 # if user input cause an error
318 # and user want a reset, we re-read settings from settingsfile
319 if ($errormessage ne '') {
320 print "<input type='submit' name='ACTION' value='$Lang::tr{'reset'}' />";
323 print "<input type='reset' name='ACTION' value='$Lang::tr{'reset'}' />";
328 <td align='left' class='base' nowrap='nowrap' width='50%'> </td>
335 <td align='left' class='base' width='2%'>
338 <td align='left' class='base' width='98%'>
339 <form method='post' action='/cgi-bin/traffic.cgi'>
340 <input type='submit' name='ACTION' value='$Lang::tr{'traffic back'}' />
348 &Header
::closebigbox
();
349 &Header
::closepage
();
354 if ($cgiparams{'SHOW_AT_HOME'} ne 'on' ) {
355 $cgiparams{'SHOW_AT_HOME'} = 'off';
358 if ($cgiparams{'MONTHLY_VOLUME_ON'} ne 'on' ) {
359 $cgiparams{'MONTHLY_VOLUME_ON'} = 'off';
362 if($cgiparams{'MONTHLY_VOLUME_ON'} eq 'on')
364 if($cgiparams{'MONTHLY_VOLUME'} !~ /^\d+$/ || $cgiparams{'MONTHLY_VOLUME'} < 1) {
365 $errormessage .= "$Lang::tr{'monthly traffic bad'}<br/>";
368 if($cgiparams{'STARTDAY'} < 1 || 31 < $cgiparams{'STARTDAY'}) {
369 $errormessage .= "$Lang::tr{'monthly start day bad'}<br/>";
372 if ($cgiparams{'WARN_ON'} ne 'on' ) {
373 $cgiparams{'WARN_ON'} = 'off';
376 if($cgiparams{'WARN_ON'} eq 'on' && $cgiparams{'WARN'} !~ /^\d+$/) {
377 $errormessage .= "$Lang::tr{'traffic warn level bad'}<br/>";
380 if($cgiparams{'CALC_INTERVAL'} < 5 || 60 < $cgiparams{'CALC_INTERVAL'}) {
381 $errormessage .= "$Lang::tr{'traffic calc time bad'}<br/>";
384 if ($cgiparams{'SEND_EMAIL_ON'} ne 'on' ) {
385 $cgiparams{'SEND_EMAIL_ON'} = 'off';
388 if($cgiparams{'SEND_EMAIL_ON'} eq 'on' )
390 if($cgiparams{'EMAIL_TO'} eq '' || (! &General
::validemail
($cgiparams{'EMAIL_TO'})) ) {
391 $errormessage .= "$Lang::tr{'to warn email bad'}<br/>";
394 if($cgiparams{'EMAIL_FROM'} eq '' || (! &General
::validemail
($cgiparams{'EMAIL_FROM'}))) {
395 $errormessage .= "$Lang::tr{'from warn email bad'}<br/>";
398 if($cgiparams{'EMAIL_SERVER'} eq '') {
399 $errormessage .= "$Lang::tr{'email server can not be empty'}<br/>";
402 } # monthly volumne == on
404 if ($cgiparams{'VERSION_CHECK_ON'} ne 'on' ) {
405 $cgiparams{'VERSION_CHECK_ON'} = 'off';