]>
git.ipfire.org Git - ipfire-2.x.git/blob - html/cgi-bin/qos.cgi
5 # This code is distributed under the terms of the GPL
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" ;
24 my $errormessage = "" ;
28 my $subclassentry = "" ;
30 my $portruleentry = "" ;
38 my @subclassline = ();
40 my @portruleline = ();
43 my $classfile = "/var/ipfire/qos/classes" ;
44 my $subclassfile = "/var/ipfire/qos/subclasses" ;
45 my $level7file = "/var/ipfire/qos/level7config" ;
46 my $portfile = "/var/ipfire/qos/portconfig" ;
47 & General
:: readhash
( "${General::swroot}/ethernet/settings" , \
%netsettings );
49 & Header
:: showhttpheaders
();
51 $qossettings { 'ENABLED' } = 'off' ;
52 $qossettings { 'EDIT' } = 'no' ;
53 $qossettings { 'OUT_SPD' } = '' ;
54 $qossettings { 'INC_SPD' } = '' ;
55 $qossettings { 'DEF_OUT_SPD' } = '' ;
56 $qossettings { 'DEF_INC_SPD' } = '' ;
57 $qossettings { 'DEFCLASS_INC' } = '' ;
58 $qossettings { 'DEFCLASS_OUT' } = '' ;
59 $qossettings { 'ACK' } = '' ;
60 $qossettings { 'MTU' } = '1492' ;
61 $qossettings { 'SFQ_PERTUB' } = '10' ;
62 $qossettings { 'QLENGTH' } = '30' ;
63 $qossettings { 'RED_DEV' } = `cat /var/ipfire/red/iface` ;
64 $qossettings { 'IMQ_DEV' } = 'imq0' ;
65 $qossettings { 'VALID' } = 'yes' ;
66 ### Values that have to be initialized
67 $qossettings { 'ACTION' } = '' ;
68 $qossettings { 'ACTIONDEF' } = '' ;
69 $qossettings { 'ACTIONBW' } = '' ;
70 $qossettings { 'PRIO' } = '' ;
71 $qossettings { 'SPD' } = '' ;
72 $qossettings { 'CLASS' } = '' ;
73 $qossettings { 'SCLASS' } = '' ;
74 $qossettings { 'QPORT' } = '' ;
75 $qossettings { 'DPORT' } = '' ;
76 $qossettings { 'QIP' } = '' ;
77 $qossettings { 'DIP' } = '' ;
78 $qossettings { 'PPROT' } = '' ;
79 $qossettings { 'L7PROT' } = '' ;
80 $qossettings { 'DEVICE' } = '' ;
81 $qossettings { 'MINBWDTH' } = '' ;
82 $qossettings { 'MAXBWDTH' } = '' ;
83 $qossettings { 'BURST' } = '' ;
84 $qossettings { 'CBURST' } = '' ;
85 $qossettings { 'DOCLASS' } = '' ;
86 $qossettings { 'DOSCLASS' } = '' ;
87 $qossettings { 'DOLEVEL7' } = '' ;
88 $qossettings { 'DOPORT' } = '' ;
89 $qossettings { 'CLASS' } = '' ;
90 $qossettings { 'CLASSPRFX' } = '' ;
91 $qossettings { 'DEV' } = '' ;
94 & General
:: readhash
( "${General::swroot}/qos/settings" , \
%qossettings );
95 & Header
:: getcgihash
( \
%qossettings );
97 & Header
:: openpage
( 'QoS' , 1 , '' );
98 & Header
:: openbigbox
( '100%' , 'left' , '' , $errormessage );
100 ############################################################################################################################
101 ############################################################################################################################
103 if ( $qossettings { 'DOCLASS' } eq $Lang :: tr
{ 'save' })
108 if ( $qossettings { 'VALID' } eq 'yes' ) {
109 open ( FILE
, ">> $classfile " ) or die "Unable to write $classfile " ;
111 $qossettings {'DEVICE'}; $qossettings {'CLASS'}; $qossettings {'PRIO'}; $qossettings {'MINBWDTH'}; $qossettings {'MAXBWDTH'}; $qossettings {'BURST'}; $qossettings {'CBURST'};
116 $qossettings { 'ACTION' } = 'Parentklasse hinzufuegen' ;
119 elsif ( $qossettings { 'DOCLASS' } eq 'Bearbeiten' )
121 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
124 open ( FILE
, "> $classfile " ) or die "Unable to write $classfile " ;
125 foreach $classentry ( sort @classes )
127 @classline = split ( /\;/ , $classentry );
128 if ( $classline [ 1 ] ne $qossettings { 'CLASS' } ) {
129 print FILE
$classentry ;
131 $qossettings { 'DEVICE' } = $classline [ 0 ];
132 $qossettings { 'PRIO' } = $classline [ 2 ];
133 $qossettings { 'MINBWDTH' } = $classline [ 3 ];
134 $qossettings { 'MAXBWDTH' } = $classline [ 4 ];
135 $qossettings { 'BURST' } = $classline [ 5 ];
136 $qossettings { 'CBURST' } = $classline [ 6 ];
137 $qossettings { 'EDIT' } = 'yes' ;
142 & Header
:: closebigbox
();
143 & Header
:: closepage
();
146 elsif ( $qossettings { 'DOCLASS' } eq 'Loeschen' )
148 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
151 open ( FILE
, "> $classfile " ) or die "Unable to write $classfile " ;
152 foreach $classentry ( sort @tmp )
154 @tmpline = split ( /\;/ , $classentry );
155 if ( $tmpline [ 1 ] ne $qossettings { 'CLASS' } )
157 print FILE
$classentry ;
161 open ( FILE
, "< $subclassfile " ) or die "Unable to read $classfile " ;
164 open ( FILE
, "> $subclassfile " ) or die "Unable to write $classfile " ;
165 foreach $subclassentry ( sort @tmp )
167 @tmpline = split ( /\;/ , $subclassentry );
168 if ( $tmpline [ 1 ] ne $qossettings { 'CLASS' } )
170 print FILE
$subclassentry ;
174 $message = "Klasse $qossettings {'CLASS'} wurde mit eventuell vorhandenen Unterklassen geloescht." ;
177 ############################################################################################################################
178 ############################################################################################################################
180 if ( $qossettings { 'DOSCLASS' } eq $Lang :: tr
{ 'save' })
182 if ( $qossettings { 'SCLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
183 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
184 } elsif ( $qossettings { 'SCLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
185 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
189 if ( $qossettings { 'VALID' } eq 'yes' ) {
190 open ( FILE
, ">> $subclassfile " ) or die "Unable to write $subclassfile " ;
192 $qossettings {'DEVICE'}; $qossettings {'CLASS'}; $qossettings {'SCLASS'}; $qossettings {'PRIO'}; $qossettings {'MINBWDTH'}; $qossettings {'MAXBWDTH'}; $qossettings {'BURST'}; $qossettings {'CBURST'};
197 $qossettings { 'ACTION' } = 'Unterklasse hinzufuegen' ;
199 } elsif ( $qossettings { 'DOSCLASS' } eq 'Loeschen' )
201 open ( FILE
, "< $subclassfile " ) or die "Unable to read $classfile " ;
204 open ( FILE
, "> $subclassfile " ) or die "Unable to write $classfile " ;
205 foreach $subclassentry ( sort @tmp )
207 @tmpline = split ( /\;/ , $subclassentry );
208 if ( $tmpline [ 2 ] ne $qossettings { 'CLASS' } )
210 print FILE
$subclassentry ;
214 $message = "Unterklasse $qossettings {'CLASS'} wurde geloescht." ;
217 ############################################################################################################################
218 ############################################################################################################################
220 if ( $qossettings { 'DOLEVEL7' } eq $Lang :: tr
{ 'save' })
222 if ( $qossettings { 'QIP' } ne '' ) {
223 unless ( & General
:: validip
( $qossettings { 'QIP' }) ) {
224 $qossettings { 'VALID' } = 'no' ;
225 $message = "Die Quell-IP-Adresse ist ungueltig." ;
228 if ( $qossettings { 'DIP' } ne '' ) {
229 unless ( & General
:: validip
( $qossettings { 'DIP' }) ) {
230 $qossettings { 'VALID' } = 'no' ;
231 $message = "Die Ziel-IP-Adresse ist ungueltig." ;
234 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
235 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
236 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
237 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
238 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
239 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
240 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
241 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
243 if ( $qossettings { 'VALID' } eq 'yes' ) {
244 open ( FILE
, ">> $level7file " ) or die "Unable to write $level7file " ;
246 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'L7PROT'}; $qossettings {'QIP'}; $qossettings {'DIP'};
251 $qossettings { 'ACTION' } = 'Level7-Regel hinzufuegen' ;
254 elsif ( $qossettings { 'DOLEVEL7' } eq 'Loeschen' )
256 open ( FILE
, "< $level7file " ) or die "Unable to read $level7file " ;
259 open ( FILE
, "> $level7file " ) or die "Unable to read $level7file " ;
260 foreach $l7ruleentry ( sort @l7rules )
262 @l7ruleline = split ( /\;/ , $l7ruleentry );
263 if ( ( $l7ruleline [ 0 ] ne $qossettings { 'CLASS' }) && ( $l7ruleline [ 2 ] ne $qossettings { 'L7PROT' }))
265 print FILE
$l7ruleentry ;
269 $message = "Level7-Regel ( $qossettings {'CLASS'} - $qossettings {'L7PROT'}) wurde geloescht." ;
272 ############################################################################################################################
273 ############################################################################################################################
275 if ( $qossettings { 'DOPORT' } eq $Lang :: tr
{ 'save' })
277 if ( $qossettings { 'QIP' } ne '' ) {
278 unless ( & General
:: validip
( $qossettings { 'QIP' }) ) {
279 $qossettings { 'VALID' } = 'no' ;
280 $message = "Die Quell-IP-Adresse ist ungueltig." ;
283 if ( $qossettings { 'DIP' } ne '' ) {
284 unless ( & General
:: validip
( $qossettings { 'DIP' }) ) {
285 $qossettings { 'VALID' } = 'no' ;
286 $message = "Die Ziel-IP-Adresse ist ungueltig." ;
289 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
290 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
291 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
292 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
293 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
294 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
295 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
296 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
298 if ( $qossettings { 'VALID' } eq 'yes' ) {
299 open ( FILE
, ">> $portfile " ) or die "Unable to write $portfile " ;
301 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'PPROT'}; $qossettings {'QIP'}; $qossettings {'QPORT'}; $qossettings {'DIP'}; $qossettings {'DPORT'};
306 $qossettings { 'ACTION' } = 'Port-Regel hinzufuegen' ;
308 } elsif ( $qossettings { 'DOPORT' } eq 'Loeschen' )
310 open ( FILE
, "< $portfile " ) or die "Unable to read $portfile " ;
313 open ( FILE
, "> $portfile " ) or die "Unable to read $portfile " ;
314 foreach $portruleentry ( sort @portrules )
316 @portruleline = split ( /\;/ , $portruleentry );
317 unless ( ( $portruleline [ 0 ] eq $qossettings { 'CLASS' }) && ( $portruleline [ 2 ] eq $qossettings { 'PPROT' }) && ( $portruleline [ 3 ] eq $qossettings { 'QIP' }) && ( $portruleline [ 4 ] eq $qossettings { 'QPORT' }) && ( $portruleline [ 5 ] eq $qossettings { 'DIP' }) && ( $portruleline [ 6 ] eq $qossettings { 'DPORT' }))
319 print FILE
$portruleentry ;
323 $message = "Port-Regel ( $qossettings {'CLASS'} - $qossettings {'PPROT'}) wurde geloescht." ;
326 ############################################################################################################################
327 ############################################################################################################################
329 if ( $qossettings { 'ACTION' } eq 'Start' )
331 system ( "sleep 1 && /usr/bin/perl /var/ipfire/qos/bin/makeqosscripts.pl > /var/ipfire/qos/bin/qos.sh &" );
332 system ( "/bin/touch /var/ipfire/qos/enable" );
333 system ( "sleep 2 && /usr/local/bin/qosctrl start >/dev/null 2>&1" );
334 system ( "logger -t ipfire 'QoS started'" );
335 $qossettings { 'ENABLED' } = 'on' ;
336 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
338 elsif ( $qossettings { 'ACTION' } eq 'Stop' )
340 system ( "/usr/local/bin/qosctrl stop >/dev/null 2>&1" );
341 unlink "/var/ipfire/qos/bin/qos.sh" ;
342 unlink "/var/ipfire/qos/enable" ;
343 system ( "logger -t ipfire 'QoS stopped'" );
344 $qossettings { 'ENABLED' } = 'off' ;
345 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
347 elsif ( $qossettings { 'ACTION' } eq 'Neustart' )
349 if ( $qossettings { 'ENABLED' } eq 'on' ){
350 system ( "/usr/local/bin/qosctrl stop >/dev/null 2>&1" );
351 system ( "sleep 1 && /usr/bin/perl /var/ipfire/qos/bin/makeqosscripts.pl > /var/ipfire/qos/bin/qos.sh &" );
352 system ( "sleep 5 && /usr/local/bin/qosctrl start >/dev/null 2>&1" );
353 system ( "logger -t ipfire 'QoS restarted'" );
356 elsif ( $qossettings { 'ACTION' } eq $Lang :: tr
{ 'save' })
358 if ( $qossettings { 'DEF_INC_SPD' } eq '' ) {
359 $qossettings { 'DEF_INC_SPD' } = int ( $qossettings { 'INC_SPD' } * 0.9 );
361 if ( $qossettings { 'DEF_OUT_SPD' } eq '' ) {
362 $qossettings { 'DEF_OUT_SPD' } = int ( $qossettings { 'OUT_SPD' } * 0.9 );
364 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
366 elsif ( $qossettings { 'ACTION' } eq 'Statusinformationen' )
368 & Header
:: openbox
( '100%' , 'left' , 'QoS Status' );
369 if ( $qossettings { 'ENABLED' } eq 'on' ){
371 $output = `/usr/local/bin/qosctrl status` ;
372 $output = & Header
:: cleanhtml
( $output , "y" );
373 print "<pre> $output </pre> \n " ;
374 } else { print "QoS ist nicht aktiviert!" ; }
376 & Header
:: closebigbox
();
377 & Header
:: closepage
();
380 elsif ( $qossettings { 'ACTION' } eq 'Grafische Auswertung' )
382 & Header
:: openbox
( '100%' , 'left' , 'QoS Graphen' );
384 <table width='100%'><tr><td colspan='2' align='center'><font color='red'>Diese Seite braucht je nach Geschwindigkeit des Computers laenger zum Laden.</font>
387 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
390 foreach $classentry ( sort @classes )
392 @classline = split ( /\;/ , $classentry );
393 $qossettings { 'DEV' }= $classline [ 0 ];
394 $qossettings { 'CLASS' }= $classline [ 1 ];
395 & gengraph
( $qossettings { 'DEV' }, $qossettings { 'CLASS' });
397 <tr><td colspan='2' align='center'><font color='darkblue'><b> $qossettings {'CLASS'} ( $qossettings {'DEV'})</b></font>
398 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-packets.png'>
399 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-borrowed.png'>
400 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-bytes.png'>
409 & Header
:: closebigbox
();
410 & Header
:: closepage
();
413 elsif ( $qossettings { 'ACTION' } eq 'Parentklasse hinzufuegen' )
416 & Header
:: closebigbox
();
417 & Header
:: closepage
();
420 elsif ( $qossettings { 'ACTION' } eq 'Unterklasse hinzufuegen' )
423 & Header
:: closebigbox
();
424 & Header
:: closepage
();
427 elsif ( $qossettings { 'ACTION' } eq 'Level7-Regel hinzufuegen' )
430 & Header
:: closebigbox
();
431 & Header
:: closepage
();
434 elsif ( $qossettings { 'ACTION' } eq 'Port-Regel hinzufuegen' )
437 & Header
:: closebigbox
();
438 & Header
:: closepage
();
441 elsif ( $qossettings { 'ACTION' } eq 'Erweiterte Einstellungen' )
444 & Header
:: closebigbox
();
445 & Header
:: closepage
();
448 if ( $qossettings { 'ACTIONBW' } eq 'Andern' )
451 & Header
:: closebigbox
();
452 & Header
:: closepage
();
455 if ( $qossettings { 'ACTIONDEF' } eq 'Andern' )
458 & Header
:: closebigbox
();
459 & Header
:: closepage
();
463 & General
:: readhash
( "${General::swroot}/qos/settings" , \
%qossettings );
465 my $status = $Lang :: tr
{ 'stopped' };
466 my $statuscolor = '#993333' ;
467 if ( $qossettings { 'ENABLED' } eq 'on' ) {
468 $status = $Lang :: tr
{ 'running' };
469 $statuscolor = '#339933' ;
472 if ( $netsettings { 'RED_TYPE' } ne 'PPPOE' ) {
473 $qossettings { 'RED_DEV' } = $netsettings { 'RED_DEV' };
477 & Header
:: openbox
( '100%' , 'left' , $Lang :: tr
{ 'error messages' });
478 print "<class name='base'> $errormessage \n " ;
479 print " </class> \n " ;
483 ############################################################################################################################
484 ############################################################################################################################
486 & Header
:: openbox
( '100%' , 'center' , 'Quality of Service' );
488 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
492 if ( $message ne "" ) {
493 print "<tr><td colspan='2' align='center'><font color='red'> $message </font>" ;
496 <tr><td width='50%' align='left'><b>Quality of Service:</b>
497 <td width='50%' align='center' bgcolor=' $statuscolor '><font color='white'> $status </font>
498 <tr><td width='100%' align='center' colspan='2'>
499 <input type='submit' name='ACTION' value='Start' />
500 <input type='submit' name='ACTION' value='Stop' />
501 <input type='submit' name='ACTION' value=' $Lang ::tr{'restart'}' />
504 if (( $qossettings { 'OUT_SPD' } ne '' ) && ( $qossettings { 'INC_SPD' } ne '' )) {
506 <tr><td colspan='3'>
507 <tr><td width='40%' align='right'>Downloadgeschwindigkeit: <td width='40%' align='left'> $qossettings {'INC_SPD'} kbps
508 <td width='20%' rowspan='2' align='center' valign='middle'><input type='submit' name='ACTIONBW' value='Andern'>
509 <tr><td width='40%' align='right'>Uploadgeschwindigkeit: <td width='40%' align='left'> $qossettings {'OUT_SPD'} kbps
513 if (( $qossettings { 'DEFCLASS_OUT' } ne '' ) && ( $qossettings { 'DEFCLASS_INC' } ne '' )&& ( $qossettings { 'ACK' } ne '' )) {
515 <tr><td colspan='3'><hr>
516 <tr><td width='40%' align='right'>Downloadstandardklasse: <td width='40%' align='left'> $qossettings {'DEFCLASS_INC'}
517 <td width='20%' rowspan='3' align='center' valign='middle'><input type='submit' name='ACTIONDEF' value='Andern'>
518 <tr><td width='40%' align='right'>Uploadstandardklasse: <td width='40%' align='left'> $qossettings {'DEFCLASS_OUT'}
519 <tr><td width='40%' align='right'>ACKs: <td width='40%' align='left'> $qossettings {'ACK'}
520 <tr><td colspan='3' width='100%'><hr>
521 <tr><td colspan='3' width='100%' align='center'>
522 <table boder='0' cellpadding='0' cellspacing='0'>
523 <tr><td><input type='submit' name='ACTION' value='Parentklasse hinzufuegen'>
524 <td><input type='submit' name='ACTION' value='Erweiterte Einstellungen'>
525 <tr><td><input type='submit' name='ACTION' value='Statusinformationen'>
526 <td><input type='submit' name='ACTION' value='Grafische Auswertung'>
535 if ( ( $qossettings { 'OUT_SPD' } eq '' ) || ( $qossettings { 'INC_SPD' } eq '' ) ) {
538 & Header
:: closebigbox
();
539 & Header
:: closepage
();
543 if ( ( $qossettings { 'DEFCLASS_INC' } eq '' ) || ( $qossettings { 'DEFCLASS_OUT' } eq '' ) || ( $qossettings { 'ACK' } eq '' ) ) {
545 & Header
:: closebigbox
();
546 & Header
:: closepage
();
554 & Header
:: closebigbox
();
555 & Header
:: closepage
();
557 ############################################################################################################################
558 ############################################################################################################################
560 sub changedefclasses
{
561 & Header
:: openbox
( '100%' , 'center' , 'Standardklassen:' );
563 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
565 <tr><td width='100%' colspan='3'>Legen sie hier die Standardklassen fest durch die nicht-gefilterte Pakete gehen.
566 <tr><td width='33%' align='right'>Download:<td width='33%' align='left'><select name='DEFCLASS_INC'>
569 for ( $c = 200 ; $c <= 220 ; $c ++ )
571 if ( $qossettings { 'DEFCLASS_INC' } ne $c )
572 { print "<option value=' $c '> $c </option> \n " ; }
573 else { print "<option selected value=' $c '> $c </option> \n " ; }
576 </select><td width='33%' align='center'>
577 <tr><td width='33%' align='right'>Upload:<td width='33%' align='left'><select name='DEFCLASS_OUT'>
580 for ( $c = 100 ; $c <= 120 ; $c ++ )
582 if ( $qossettings { 'DEFCLASS_OUT' } ne $c )
583 { print "<option value=' $c '> $c </option> \n " ; }
584 else { print "<option selected value=' $c '> $c </option> \n " ; }
587 </select><td width='33%' align='center'>
591 <tr><td width='100%' colspan='3'>Legen sie hier die ACK-Klasse fest <br> und klicken Sie danach auf <i>Speichern</i>.
592 <tr><td width='33%' align='right'>ACKs:<td width='33%' align='left'><select name='ACK'>
595 for ( $c = 100 ; $c <= 120 ; $c ++ )
597 if ( $qossettings { 'ACK' } ne $c )
598 { print "<option value=' $c '> $c </option> \n " ; }
599 else { print "<option selected value=' $c '> $c </option> \n " ; }
602 </select><td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} />
610 sub changebandwidth
{
611 & Header
:: openbox
( '100%' , 'center' , 'Bandbreiteneinstellungen' );
612 if ( $qossettings { 'ENABLED' } eq 'on' ) {
613 print "Sie koennen die Bandbreiteneinstellungen nicht bearbeiten, wenn QoS eingeschaltet ist. Schalten sie es zuerst dazu aus.<p>" ;
614 print "<a href='/cgi-bin/qos.cgi'>Zurueck</a>" ;
617 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
618 <input type='hidden' name='DEF_OUT_SPD' value=''><input type='hidden' name='DEF_INC_SPD' value=''>
620 <tr><td width='100%' colspan='3'>Geben Sie bitte hier ihre Download- bzw. Upload-Geschwindigkeit ein <br> und klicken Sie danach auf <i>Speichern</i>.
621 <tr><td width='33%' align='right'>Download-Geschwindigkeit:
622 <td width='33%' align='left'><input type='text' name='INC_SPD' maxlength='8' value= $qossettings {'INC_SPD'}> kbps
623 <td width='33%' align='center'>
624 <tr><td width='33%' align='right'>Upload-Geschwindigkeit:
625 <td width='33%' align='left'><input type='text' name='OUT_SPD' maxlength='8' value= $qossettings {'OUT_SPD'}> kbps
626 <td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} /> <input type='reset' name='ACTION' value= $Lang ::tr{'reset'} />
636 & Header
:: openbox
( '100%' , 'center' , 'Parentklasse' );
638 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
642 if ( $message ne "" ) {
643 print "<tr><td colspan='3' align='center'> $message " ;
645 if ( $qossettings { 'EDIT' } eq 'yes' ) {
646 print "<input type='hidden' name='CLASS' value= $qossettings {'CLASS'}>" ;
647 print "<input type='hidden' name='DEVICE' value= $qossettings {'DEVICE'}>" ;
650 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
651 <tr><td width='33%' align='right'>Interface:
652 <td width='33%' align='left'>
655 if ( $qossettings { 'EDIT' } eq 'yes' ) {
656 print "<select name='DEVICE' disabled>" ;
658 print "<select name='DEVICE'>" ;
660 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
661 $qossettings { 'RED_DEV_SEL' } = 'selected' ;
662 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
663 $qossettings { 'IMQ_DEV_SEL' } = 'selected' ;
666 <option value= $qossettings {'RED_DEV'} $qossettings {'RED_DEV_SEL'}> $qossettings {'RED_DEV'}</option>
667 <option value= $qossettings {'IMQ_DEV'} $qossettings {'IMQ_DEV_SEL'}> $qossettings {'IMQ_DEV'}</option></select>
668 <td width='33%' align='center'>
669 <tr><td width='33%' align='right'>Klasse:<td width='33%' align='left'>
672 if ( $qossettings { 'EDIT' } eq 'yes' ) {
673 print "<select name='CLASS' disabled>" ;
675 print "<select name='CLASS'>" ;
677 for ( $c = 100 ; $c <= 120 ; $c ++ )
679 if ( $qossettings { 'CLASS' } ne $c )
680 { print "<option value=' $c '> $c </option> \n " ; }
681 else { print "<option selected value=' $c '> $c </option> \n " ; }
683 for ( $c = 200 ; $c <= 220 ; $c ++ )
685 if ( $qossettings { 'CLASS' } ne $c )
686 { print "<option value=' $c '> $c </option> \n " ; }
687 else { print "<option selected value=' $c '> $c </option> \n " ; }
691 <td width='33%' align='center'>
692 <tr><td width='33%' align='right'>Prioritaet:<td width='33%' align='left'><select name='PRIO'>
695 for ( $c = 1 ; $c <= 7 ; $c ++ )
697 if ( $qossettings { 'PRIO' } ne $c )
698 { print "<option value=' $c '> $c </option> \n " ; }
699 else { print "<option selected value=' $c '> $c </option> \n " ; }
702 <td width='33%' align='center'>
703 <tr><td width='33%' align='right'>Garantierte Bandbreite:
704 <td width='33%' align='left'><input type='text' name='MINBWDTH' maxlength='8' required='1' value= $qossettings {'MINBWDTH'} >
705 <td width='33%' align='center'>
706 <tr><td width='33%' align='right'>Maximale Bandbreite:
707 <td width='33%' align='left'><input type='text' name='MAXBWDTH' maxlength='8' required='1' value= $qossettings {'MAXBWDTH'}>
708 <td width='33%' align='center'>
709 <tr><td width='33%' align='right'>Burst:
710 <td width='33%' align='left'><input type='text' name='BURST' maxlength='8' value= $qossettings {'BURST'}>
711 <td width='33%' align='center'>
712 <tr><td width='33%' align='right'>Ceilburst:
713 <td width='33%' align='left'><input type='text' name='CBURST' maxlength='8' value= $qossettings {'CBURST'}>
714 <td width='33%' align='center'><input type='submit' name='DOCLASS' value= $Lang ::tr{'save'} /> <input type='reset' value= $Lang ::tr{'reset'} />
722 & Header
:: openbox
( '100%' , 'center' , 'Unterklasse' );
724 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
728 if ( $message ne "" ) {
729 print "<tr><td colspan='3' align='center'> $message " ;
732 <tr><td colspan='3' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
733 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
734 <tr><td width='33%' align='right'>Unterklasse:<td width='33%' align='left'><select name='SCLASS'>
737 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
738 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
739 for ( $c = 1000 ; $c <= 1020 ; $c ++ )
741 if ( $qossettings { 'SCLASS' } ne $c )
742 { print "<option value=' $c '> $c </option> \n " ; }
743 else { print "<option selected value=' $c '> $c </option> \n " ; }
745 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
746 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
747 for ( $c = 2000 ; $c <= 2020 ; $c ++ )
749 if ( $qossettings { 'SCLASS' } ne $c )
750 { print "<option value=' $c '> $c </option> \n " ; }
751 else { print "<option selected value=' $c '> $c </option> \n " ; }
756 <td width='33%' align='center'>
757 <tr><td width='33%' align='right'>Prioritaet:<td width='33%' align='left'><select name='PRIO'>
760 for ( $c = 1 ; $c <= 7 ; $c ++ )
762 if ( $qossettings { 'PRIO' } ne $c )
763 { print "<option value=' $c '> $c </option> \n " ; }
764 else { print "<option selected value=' $c '> $c </option> \n " ; }
767 <td width='33%' align='center'>
768 <tr><td width='33%' align='right'>Garantierte Bandbreite:
769 <td width='33%' align='left'><input type='text' name='MINBWDTH' maxlength='8' required='1' value= $qossettings {'MINBWDTH'} >
770 <td width='33%' align='center'>
771 <tr><td width='33%' align='right'>Maximale Bandbreite:
772 <td width='33%' align='left'><input type='text' name='MAXBWDTH' maxlength='8' required='1' value= $qossettings {'MAXBWDTH'}>
773 <td width='33%' align='center'>
774 <tr><td width='33%' align='right'>Burst:
775 <td width='33%' align='left'><input type='text' name='BURST' maxlength='8' value= $qossettings {'BURST'}>
776 <td width='33%' align='center'>
777 <tr><td width='33%' align='right'>Ceilburst:
778 <td width='33%' align='left'><input type='text' name='CBURST' maxlength='8' value= $qossettings {'CBURST'}>
779 <td width='33%' align='center'><input type='hidden' name='CLASS' value= $qossettings {'CLASS'}><input type='submit' name='DOSCLASS' value= $Lang ::tr{'save'} /> <input type='reset' value= $Lang ::tr{'reset'} />
787 & Header
:: openbox
( '100%' , 'center' , 'Level7-Regel' );
789 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
793 if ( $message ne "" ) {
794 print "<tr><td colspan='3' align='center'><font color='red'> $message </font>" ;
797 <tr><td colspan='3' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
798 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
799 <tr><td width='33%' align='right'>Protokoll:
800 <td width='33%' align='left'><select name='L7PROT'>
803 opendir ( DIR
, "/etc/l7-protocols/protocols" );
804 foreach $direntry ( sort readdir ( DIR
) )
806 next if $direntry eq "." ;
807 next if $direntry eq ".." ;
808 next if - d
"/etc/l7-protocols/protocols/ $direntry " ;
809 @proto = split ( /\./ , $direntry );
810 if ( $proto [ 0 ] eq $qossettings { 'L7PROT' } ) {
811 print "<option value=' $proto [0]' selected> $proto [0]</option> \n " ;
813 print "<option value=' $proto [0]'> $proto [0]</option> \n " ;
818 </select><td width='33%' align='center'>
819 <tr><td width='33%' align='right'>Quell-IP-Adresse:
820 <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value= $qossettings {'QIP'}>
821 <td width='33%' align='center'>
822 <tr><td width='33%' align='right'>Ziel-IP-Adresse:
823 <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value= $qossettings {'DIP'}>
824 <td width='33%' align='center'><input type='hidden' name='CLASS' value= $qossettings {'CLASS'}><input type='submit' name='DOLEVEL7' value= $Lang ::tr{'save'} />
832 & Header
:: openbox
( '100%' , 'center' , 'Port-Regel hinzufuegen' );
834 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
836 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
837 <tr><td width='33%' align='right'>Protokoll:
838 <td width='33%' align='left'><select name='PPROT'>
841 open ( FILE
, "< /etc/protocols" );
844 foreach $direntry ( sort @proto )
846 @tmpline = split ( /\ / , $direntry );
847 next if $tmpline [ 0 ] =~ "#" ;
848 if ( $tmpline [ 0 ] eq $qossettings { 'PPROT' } ) {
849 print "<option value=' $tmpline [0]' selected> $tmpline [0]</option> \n " ;
851 print "<option value=' $tmpline [0]'> $tmpline [0]</option> \n " ;
855 </select><td width='33%' align='center'>
856 <tr><td width='33%' align='right'>Quell-Port:
857 <td width='33%' align='left'><input type='text' name='QPORT' maxlength='5' value= $qossettings {'QPORT'}>
858 <td width='33%' align='center'>
859 <tr><td width='33%' align='right'>Ziel-Port:
860 <td width='33%' align='left'><input type='text' name='DPORT' maxlength='5' value= $qossettings {'DPORT'}>
861 <td width='33%' align='center'>
862 <tr><td width='33%' align='right'>Quell-IP-Adresse:
863 <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value= $qossettings {'QIP'}>
864 <td width='33%' align='center'>
865 <tr><td width='33%' align='right'>Ziel-IP-Adresse:
866 <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value= $qossettings {'DIP'}>
867 <td width='33%' align='center'><input type='hidden' name='CLASS' value=' $qossettings {'CLASS'}'><input type='submit' name='DOPORT' value= $Lang ::tr{'save'} />
875 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
879 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
880 @subclasses = < FILE
>;
882 & Header
:: openbox
( '100%' , 'center' , 'Klassen' );
884 <table border='0' width='100%' cellspacing='0'>
885 <tr><td bgcolor='lightgrey' width='10%'>Interface
886 <td bgcolor='lightgrey' width='10%'>Klasse
887 <td bgcolor='lightgrey' width='10%'>Prioritaet
888 <td bgcolor='lightgrey' width='10%'>Garantierte Bandbreite
889 <td bgcolor='lightgrey' width='10%'>Maximale Bandbreite
890 <td bgcolor='lightgrey' width='10%'>Burst
891 <td bgcolor='lightgrey' width='10%'>Ceil Burst
892 <td bgcolor='lightgrey' width='30%'>Aktionen
895 foreach $classentry ( sort @classes )
897 @classline = split ( /\;/ , $classentry );
898 if ( $classline [ 0 ] eq $qossettings { 'RED_DEV' } )
901 <tr><td align='center' bgcolor='#EAEAEA'> $classline [0]
902 <td align='center' bgcolor='#EAEAEA'> $classline [1]
903 <td align='center' bgcolor='#EAEAEA'> $classline [2]
904 <td align='center' bgcolor='#EAEAEA'> $classline [3]
905 <td align='center' bgcolor='#EAEAEA'> $classline [4]
906 <td align='center' bgcolor='#EAEAEA'> $classline [5]
907 <td align='center' bgcolor='#EAEAEA'> $classline [6]
908 <td align='right' bgcolor='#EAEAEA'>
909 <table border='0'><tr>
910 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
911 <input type='hidden' name='CLASS' value=' $classline [1]'>
912 <input type='hidden' name='DOCLASS' value='Bearbeiten'>
913 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
915 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
916 <input type='hidden' name='CLASS' value=' $classline [1]'>
917 <input type='hidden' name='ACTION' value='Unterklasse hinzufuegen'>
918 <input type='image' alt='Unterklasse hinzufuegen' src='/images/addblue.gif'>
920 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
921 <input type='hidden' name='CLASS' value=' $classline [1]'>
922 <input type='hidden' name='ACTION' value='Level7-Regel hinzufuegen'>
923 <input type='image' alt='Level7-Regel hinzufuegen' src='/images/addgreen.gif'>
925 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
926 <input type='hidden' name='CLASS' value=' $classline [1]'>
927 <input type='hidden' name='ACTION' value='Port-Regel hinzufuegen'>
928 <input type='image' alt='Port-Regel hinzufuegen' src='/images/add.gif'>
930 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
931 <input type='hidden' name='CLASS' value=' $classline [1]'>
932 <input type='hidden' name='DOCLASS' value='Loeschen'>
933 <input type='image' alt='Loeschen' src='/images/delete.gif'>
938 foreach $subclassentry ( sort @subclasses )
940 @subclassline = split ( /\;/ , $subclassentry );
941 if ( $subclassline [ 1 ] eq $classline [ 1 ] ) {
943 <tr><td align='center' bgcolor='#FFFFFF'>Subklasse:
944 <td align='center' bgcolor='#FAFAFA'> $subclassline [2]
945 <td align='center' bgcolor='#FAFAFA'> $subclassline [3]
946 <td align='center' bgcolor='#FAFAFA'> $subclassline [4]
947 <td align='center' bgcolor='#FAFAFA'> $subclassline [5]
948 <td align='center' bgcolor='#FAFAFA'> $subclassline [6]
949 <td align='center' bgcolor='#FAFAFA'> $subclassline [7]
950 <td align='right' bgcolor='#FAFAFA'>
951 <table border='0'><tr>
952 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
953 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
954 <input type='hidden' name='DOSCLASS' value='Bearbeiten'>
955 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
957 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
958 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
959 <input type='hidden' name='ACTION' value='Level7-Regel hinzufuegen'>
960 <input type='image' alt='Level7-Regel hinzufuegen' src='/images/addgreen.gif'>
962 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
963 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
964 <input type='hidden' name='ACTION' value='Port-Regel hinzufuegen'>
965 <input type='image' alt='Port-Regel hinzufuegen' src='/images/add.gif'>
967 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
968 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
969 <input type='hidden' name='DOSCLASS' value='Loeschen'>
970 <input type='image' alt='Loeschen' src='/images/delete.gif'>
979 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
980 foreach $classentry ( sort @classes )
982 @classline = split ( /\;/ , $classentry );
983 if ( $classline [ 0 ] eq $qossettings { 'IMQ_DEV' } )
986 <tr><td align='center' bgcolor='#EAEAEA'> $classline [0]
987 <td align='center' bgcolor='#EAEAEA'> $classline [1]
988 <td align='center' bgcolor='#EAEAEA'> $classline [2]
989 <td align='center' bgcolor='#EAEAEA'> $classline [3]
990 <td align='center' bgcolor='#EAEAEA'> $classline [4]
991 <td align='center' bgcolor='#EAEAEA'> $classline [5]
992 <td align='center' bgcolor='#EAEAEA'> $classline [6]
993 <td align='right' bgcolor='#EAEAEA'>
994 <table border='0'><tr>
995 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
996 <input type='hidden' name='CLASS' value=' $classline [1]'>
997 <input type='hidden' name='DOCLASS' value='Bearbeiten'>
998 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1000 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1001 <input type='hidden' name='CLASS' value=' $classline [1]'>
1002 <input type='hidden' name='ACTION' value='Unterklasse hinzufuegen'>
1003 <input type='image' alt='Unterklasse hinzufuegen' src='/images/addblue.gif'>
1005 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1006 <input type='hidden' name='CLASS' value=' $classline [1]'>
1007 <input type='hidden' name='ACTION' value='Level7-Regel hinzufuegen'>
1008 <input type='image' alt='Level7-Regel hinzufuegen' src='/images/addgreen.gif'>
1010 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1011 <input type='hidden' name='CLASS' value=' $classline [1]'>
1012 <input type='hidden' name='ACTION' value='Port-Regel hinzufuegen'>
1013 <input type='image' alt='Port-Regel hinzufuegen' src='/images/add.gif'>
1015 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1016 <input type='hidden' name='CLASS' value=' $classline [1]'>
1017 <input type='hidden' name='DOCLASS' value='Loeschen'>
1018 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1023 foreach $subclassentry ( sort @subclasses )
1025 @subclassline = split ( /\;/ , $subclassentry );
1026 if ( $subclassline [ 1 ] eq $classline [ 1 ] ) {
1028 <tr><td align='center' bgcolor='#FFFFFF'>Subklasse:
1029 <td align='center' bgcolor='#FAFAFA'> $subclassline [2]
1030 <td align='center' bgcolor='#FAFAFA'> $subclassline [3]
1031 <td align='center' bgcolor='#FAFAFA'> $subclassline [4]
1032 <td align='center' bgcolor='#FAFAFA'> $subclassline [5]
1033 <td align='center' bgcolor='#FAFAFA'> $subclassline [6]
1034 <td align='center' bgcolor='#FAFAFA'> $subclassline [7]
1035 <td align='right' bgcolor='#FAFAFA'>
1036 <table border='0'><tr>
1037 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1038 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1039 <input type='hidden' name='DOSCLASS' value='Bearbeiten'>
1040 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1042 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1043 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1044 <input type='hidden' name='ACTION' value='Level7-Regel hinzufuegen'>
1045 <input type='image' alt='Level7-Regel hinzufuegen' src='/images/addgreen.gif'>
1047 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1048 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1049 <input type='hidden' name='ACTION' value='Port-Regel hinzufuegen'>
1050 <input type='image' alt='Port-Regel hinzufuegen' src='/images/add.gif'>
1052 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1053 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1054 <input type='hidden' name='DOSCLASS' value='Loeschen'>
1055 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1065 <tr><td colspan='8' align='right' valign='middle'><b>Legende:</b> <img src='/images/edit.gif'> Klasse bearbeiten | <img src='/images/addblue.gif'> Unterklasse hinzufuegen | <img src='/images/addgreen.gif'> Level7-Regel hinzufuegen | <img src='/images/add.gif'> Port-Regel hinzufuegen | <img src='/images/delete.gif'> Klasse loeschen
1069 & Header
:: closebox
();
1074 open ( FILE
, "< $level7file " ) or die "Unable to read $level7file " ;
1078 & Header
:: openbox
( '100%' , 'center' , 'Level7-Regeln' );
1080 <table border='0' width='100%' cellspacing='0'>
1081 <tr><td bgcolor='lightgrey' width='14%'>Interface
1082 <td bgcolor='lightgrey' width='14%'>Klasse
1083 <td bgcolor='lightgrey' width='14%'>Protokoll
1084 <td bgcolor='lightgrey' width='14%'>Quell-IP-Adresse
1085 <td bgcolor='lightgrey' width='14%'>Ziel-IP-Adresse
1086 <td bgcolor='lightgrey' width='30%'>Aktionen
1089 foreach $l7ruleentry ( sort @l7rules )
1091 @l7ruleline = split ( /\;/ , $l7ruleentry );
1092 if ( $l7ruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
1095 <tr><td align='center' bgcolor='#EAEAEA'> $l7ruleline [1]
1096 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [0]
1097 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [2]
1098 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [3]
1099 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [4]
1100 <td align='right' bgcolor='#EAEAEA'>
1101 <table border='0'><tr>
1102 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1103 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1104 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1105 <input type='hidden' name='DOLEVEL7' value='Bearbeiten'>
1106 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1108 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1109 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1110 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1111 <input type='hidden' name='DOLEVEL7' value='Loeschen'>
1112 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1119 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1120 foreach $l7ruleentry ( sort @l7rules )
1122 @l7ruleline = split ( /\;/ , $l7ruleentry );
1123 if ( $l7ruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1126 <tr><td align='center' bgcolor='#EAEAEA'> $l7ruleline [1]
1127 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [0]
1128 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [2]
1129 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [3]
1130 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [4]
1131 <td align='right' bgcolor='#EAEAEA'>
1132 <table border='0'><tr>
1133 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1134 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1135 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1136 <input type='hidden' name='DOLEVEL7' value='Bearbeiten'>
1137 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1139 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1140 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1141 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1142 <input type='hidden' name='DOLEVEL7' value='Loeschen'>
1143 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1151 <tr><td colspan='8' align='right' valign='middle'><b>Legende:</b> <img src='/images/edit.gif'> Regel bearbeiten | <img src='/images/delete.gif'> Regel loeschen
1155 & Header
:: closebox
();
1160 open ( FILE
, "< $portfile " ) or die "Unable to read $portfile " ;
1161 @portrules = < FILE
>;
1164 & Header
:: openbox
( '100%' , 'center' , 'Port-Regeln' );
1166 <table border='0' width='100%' cellspacing='0'>
1167 <tr><td bgcolor='lightgrey' width='10%'>Interface
1168 <td bgcolor='lightgrey' width='10%'>Klasse
1169 <td bgcolor='lightgrey' width='10%'>Protokoll
1170 <td bgcolor='lightgrey' width='10%'>Quell-IP-Adresse
1171 <td bgcolor='lightgrey' width='10%'>Quell-Port
1172 <td bgcolor='lightgrey' width='10%'>Ziel-IP-Adresse
1173 <td bgcolor='lightgrey' width='10%'>Ziel-Port
1174 <td bgcolor='lightgrey' width='30%'>Aktionen
1177 foreach $portruleentry ( sort @portrules )
1179 @portruleline = split ( /\;/ , $portruleentry );
1180 if ( $portruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
1183 <tr><td align='center' bgcolor='#EAEAEA'> $portruleline [1]
1184 <td align='center' bgcolor='#EAEAEA'> $portruleline [0]
1185 <td align='center' bgcolor='#EAEAEA'> $portruleline [2]
1186 <td align='center' bgcolor='#EAEAEA'> $portruleline [3]
1187 <td align='center' bgcolor='#EAEAEA'> $portruleline [4]
1188 <td align='center' bgcolor='#EAEAEA'> $portruleline [5]
1189 <td align='center' bgcolor='#EAEAEA'> $portruleline [6]
1190 <td align='right' bgcolor='#EAEAEA'>
1191 <table border='0'><tr>
1192 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1193 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1194 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1195 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1196 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1197 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1198 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1199 <input type='hidden' name='DOPORT' value='Bearbeiten'>
1200 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1202 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1203 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1204 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1205 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1206 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1207 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1208 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1209 <input type='hidden' name='DOPORT' value='Loeschen'>
1210 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1217 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1218 foreach $portruleentry ( sort @portrules )
1220 @portruleline = split ( /\;/ , $portruleentry );
1221 if ( $portruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1224 <tr><td align='center' bgcolor='#EAEAEA'> $portruleline [1]
1225 <td align='center' bgcolor='#EAEAEA'> $portruleline [0]
1226 <td align='center' bgcolor='#EAEAEA'> $portruleline [2]
1227 <td align='center' bgcolor='#EAEAEA'> $portruleline [3]
1228 <td align='center' bgcolor='#EAEAEA'> $portruleline [4]
1229 <td align='center' bgcolor='#EAEAEA'> $portruleline [5]
1230 <td align='center' bgcolor='#EAEAEA'> $portruleline [6]
1231 <td align='right' bgcolor='#EAEAEA'>
1232 <table border='0'><tr>
1233 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1234 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1235 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1236 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1237 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1238 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1239 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1240 <input type='hidden' name='DOPORT' value='Bearbeiten'>
1241 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1243 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1244 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1245 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1246 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1247 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1248 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1249 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1250 <input type='hidden' name='DOPORT' value='Loeschen'>
1251 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1259 <tr><td colspan='8' align='right' valign='middle'><b>Legende:</b> <img src='/images/edit.gif'> Regel bearbeiten | <img src='/images/delete.gif'> Regel loeschen
1263 & Header
:: closebox
();
1269 & Header
:: openbox
( '100%' , 'center' , 'Expertenoptionen:' );
1271 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1273 <tr><td width='100%' colspan='3'>Diese Einstellungen sollten sie nur veraendern, wenn sie wirklich wissen, was sie tun.
1274 <tr><td width='33%' align='right'>Download-Rate 90\%:<td width='33%' align='left'>
1275 <input type='text' name='DEF_INC_SPD' maxlength='8' required='4' value= $qossettings {'DEF_INC_SPD'}>
1276 <td width='33%' align='center'>
1277 <tr><td width='33%' align='right'>Upload-Rate 90\%:<td width='33%' align='left'>
1278 <input type='text' name='DEF_OUT_SPD' maxlength='8' required='4' value= $qossettings {'DEF_OUT_SPD'}>
1279 <td width='33%' align='center'>
1283 <tr><td width='33%' align='right'>MTU:<td width='33%' align='left'>
1284 <input type='text' name='MTU' maxlength='8' required='4' value= $qossettings {'MTU'}>
1285 <td width='33%' align='center'>Diese Einstellung aendert die MTU nicht global sondern nur fuer das QoS.
1286 <tr><td width='33%' align='right'>Queue Laenge:<td width='33%' align='left'>
1287 <input type='text' name='QLENGTH' maxlength='8' required='2' value= $qossettings {'QLENGTH'}>
1288 <td width='33%' align='center'>
1289 <tr><td width='33%' align='right'>SFQ Perturb:<td width='33%' align='left'>
1290 <input type='text' name='SFQ_PERTUB' maxlength='8' required='1' value= $qossettings {'SFQ_PERTUB'}>
1291 <td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} />
1296 & Header
:: closebox
();
1300 if ( $qossettings { 'VALID' } eq 'yes' ) {
1301 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1302 $qossettings { 'SPD' } = $qossettings { 'OUT_SPD' };
1303 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1304 $qossettings { 'SPD' } = $qossettings { 'INC_SPD' };
1306 unless ( ( $qossettings { 'MINBDWTH' } >= 0 ) && ( $qossettings { 'MINBDWTH' } <= $qossettings { 'SPD' } ) ) {
1307 $qossettings { 'VALID' } = 'no' ;
1308 $message = "Mindestbandbreite ist ungueltig." ;
1310 $qossettings { 'SPD' } = '' ;
1315 if ( $qossettings { 'VALID' } eq 'yes' ) {
1316 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1317 $qossettings { 'SPD' } = $qossettings { 'OUT_SPD' };
1318 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1319 $qossettings { 'SPD' } = $qossettings { 'INC_SPD' };
1321 unless ( ( $qossettings { 'MAXBDWTH' } >= 0 ) && ( $qossettings { 'MAXBDWTH' } >= $qossettings { 'MINBDWTH' }) &&( $qossettings { 'MAXBDWTH' } <= $qossettings { 'SPD' } ) ) {
1322 $qossettings { 'VALID' } = 'no' ;
1323 $message = "Mamimalbandbreite ist ungueltig." ;
1325 $qossettings { 'SPD' } = '' ;
1330 if ( $qossettings { 'VALID' } eq 'yes' ) {
1331 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1332 if ( $qossettings { 'CLASS' } lt 100 || $qossettings { 'CLASS' } ge 121 ) {
1333 $qossettings { 'VALID' } = 'no' ;
1334 $message = "Die Klassennummer passt nicht zum angegebenen Interface." ;
1336 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1337 if ( $qossettings { 'CLASS' } lt 200 || $qossettings { 'CLASS' } ge 221 ) {
1338 $qossettings { 'VALID' } = 'no' ;
1339 $message = "Die Klassennummer passt nicht zum angegebenen Interface." ;
1342 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
1345 foreach $classentry ( sort @tmp )
1347 @tmpline = split ( /\;/ , $classentry );
1348 if ( $tmpline [ 1 ] eq $qossettings { 'CLASS' } )
1350 $qossettings { 'VALID' } = 'no' ;
1351 $message = "Die aktuelle Klasse wird bereits verwendet." ;
1359 if ( $qossettings { 'VALID' } eq 'yes' ) {
1360 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
1363 foreach $subclassentry ( sort @tmp )
1365 @tmpline = split ( /\;/ , $subclassentry );
1366 if ( $tmpline [ 2 ] eq $qossettings { 'SCLASS' } )
1368 $qossettings { 'VALID' } = 'no' ;
1369 $message = "Die aktuelle Klasse wird bereits verwendet." ;
1377 $qossettings { 'DEV' } = shift ;
1378 $qossettings { 'CLASS' } = shift ;
1380 if ( $qossettings { 'DEV' } eq $qossettings { 'RED_DEV' } ) {
1381 $qossettings { 'CLASSPRFX' } = '1' ;
1383 $qossettings { 'CLASSPRFX' } = '2' ;
1386 RRDs
:: graph
( "/home/httpd/html/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-packets.png" ,
1387 "--start" , "-3240" , "-aPNG" , "-i" , "-z" ,
1388 "--alt-y-grid" , "-w 800" , "-h 150" , "-r" ,
1389 "--color" , "SHADEA#EAE9EE" ,
1390 "--color" , "SHADEB#EAE9EE" ,
1391 "--color" , "BACK#FFFFFF" ,
1392 "-t $qossettings {'CLASS'} ( $qossettings {'DEV'})" ,
1393 "DEF:pkts=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:pkts:AVERAGE" ,
1394 "DEF:dropped=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:dropped:AVERAGE" ,
1395 "DEF:overlimits=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:overlimits:AVERAGE" ,
1396 "AREA:pkts#00FFFF:packets" ,
1397 "GPRINT:pkts:LAST:total packets \\ : %8 .3lf %s packets \\ j" ,
1398 "LINE3:dropped#FF0000:dropped" ,
1399 "GPRINT:dropped:LAST:dropped packets \\ : %8 .3lf %s packets \\ j" ,
1400 "LINE3:overlimits#0000FF:overlimits" ,
1401 "GPRINT:overlimits:LAST:overlimits \\ : %8 .3lf %s packets \\ j" ,
1403 $ERROR = RRDs
:: error
;
1406 RRDs
:: graph
( "/home/httpd/html/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-borrowed.png" ,
1407 "--start" , "-3240" , "-aPNG" , "-i" , "-z" ,
1408 "--alt-y-grid" , "-w 800" , "-h 150" , "-r" ,
1409 "--color" , "SHADEA#EAE9EE" ,
1410 "--color" , "SHADEB#EAE9EE" ,
1411 "--color" , "BACK#FFFFFF" ,
1412 "-t $qossettings {'CLASS'} ( $qossettings {'DEV'})" ,
1413 "DEF:lended=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:lended:AVERAGE" ,
1414 "DEF:borrowed=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:borrowed:AVERAGE" ,
1415 "DEF:giants=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:giants:AVERAGE" ,
1416 "AREA:lended#99ff99:lended" ,
1417 "GPRINT:lended:LAST:lended \\ : %8 .3lf %s packets \\ j" ,
1418 "LINE3:borrowed#f70566:borrowed" ,
1419 "GPRINT:borrowed:LAST:borrowed \\ : %8 .3lf %s packets \\ j" ,
1420 "LINE3:giants#05ad05:giants" ,
1421 "GPRINT:giants:LAST:giants \\ : %8 .3lf %s packets \\ j" ,
1423 $ERROR = RRDs
:: error
;
1426 RRDs
:: graph
( "/home/httpd/html/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-bytes.png" ,
1427 "--start" , "-3240" , "-aPNG" , "-i" , "-z" ,
1428 "--alt-y-grid" , "-w 800" , "-h 150" , "-r" ,
1429 "--color" , "SHADEA#EAE9EE" ,
1430 "--color" , "SHADEB#EAE9EE" ,
1431 "--color" , "BACK#FFFFFF" ,
1432 "-t $qossettings {'CLASS'} ( $qossettings {'DEV'})" ,
1433 "DEF:bits=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:bits:AVERAGE" ,
1434 "DEF:bytes=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:bytes:AVERAGE" ,
1435 "CDEF:kbytes=bytes,1024,/" ,
1436 "CDEF:kbits=bits,1024,/,8,/" ,
1437 "AREA:kbytes#FFBE7D:kbytes" ,
1438 "GPRINT:kbytes:LAST:rate \\ : %8 .3lf kbytes \\ j" ,
1439 "GPRINT:kbits:LAST:rate \\ : %8 .2lf kbits \\ r" ,
1441 $ERROR = RRDs
:: error
;