]>
git.ipfire.org Git - people/pmueller/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 = "" ;
31 my $tosruleentry = "" ;
40 my @subclassline = ();
42 my @portruleline = ();
47 my $classfile = "/var/ipfire/qos/classes" ;
48 my $subclassfile = "/var/ipfire/qos/subclasses" ;
49 my $level7file = "/var/ipfire/qos/level7config" ;
50 my $portfile = "/var/ipfire/qos/portconfig" ;
51 my $tosfile = "/var/ipfire/qos/tosconfig" ;
52 & General
:: readhash
( "${General::swroot}/ethernet/settings" , \
%netsettings );
54 & Header
:: showhttpheaders
();
56 $qossettings { 'ENABLED' } = 'off' ;
57 $qossettings { 'EDIT' } = 'no' ;
58 $qossettings { 'OUT_SPD' } = '' ;
59 $qossettings { 'INC_SPD' } = '' ;
60 $qossettings { 'DEF_OUT_SPD' } = '' ;
61 $qossettings { 'DEF_INC_SPD' } = '' ;
62 $qossettings { 'DEFCLASS_INC' } = '' ;
63 $qossettings { 'DEFCLASS_OUT' } = '' ;
64 $qossettings { 'ACK' } = '' ;
65 $qossettings { 'MTU' } = '1492' ;
66 $qossettings { 'SFQ_PERTUB' } = '10' ;
67 $qossettings { 'QLENGTH' } = '30' ;
68 $qossettings { 'RED_DEV' } = `cat /var/ipfire/red/iface` ;
69 $qossettings { 'IMQ_DEV' } = 'imq0' ;
70 $qossettings { 'VALID' } = 'yes' ;
71 ### Values that have to be initialized
72 $qossettings { 'ACTION' } = '' ;
73 $qossettings { 'ACTIONDEF' } = '' ;
74 $qossettings { 'ACTIONBW' } = '' ;
75 $qossettings { 'RED_DEV_SEL' } = '' ;
76 $qossettings { 'IMQ_DEV_SEL' } = '' ;
77 $qossettings { 'PRIO' } = '' ;
78 $qossettings { 'SPD' } = '' ;
79 $qossettings { 'CLASS' } = '' ;
80 $qossettings { 'SCLASS' } = '' ;
81 $qossettings { 'QPORT' } = '' ;
82 $qossettings { 'DPORT' } = '' ;
83 $qossettings { 'QIP' } = '' ;
84 $qossettings { 'DIP' } = '' ;
85 $qossettings { 'PPROT' } = '' ;
86 $qossettings { 'L7PROT' } = '' ;
87 $qossettings { 'DEVICE' } = '' ;
88 $qossettings { 'MINBWDTH' } = '' ;
89 $qossettings { 'MAXBWDTH' } = '' ;
90 $qossettings { 'BURST' } = '' ;
91 $qossettings { 'CBURST' } = '' ;
92 $qossettings { 'DOCLASS' } = '' ;
93 $qossettings { 'DOSCLASS' } = '' ;
94 $qossettings { 'DOLEVEL7' } = '' ;
95 $qossettings { 'DOPORT' } = '' ;
96 $qossettings { 'CLASS' } = '' ;
97 $qossettings { 'CLASSPRFX' } = '' ;
98 $qossettings { 'DEV' } = '' ;
99 $qossettings { 'TOS' } = '' ;
102 & General
:: readhash
( "${General::swroot}/qos/settings" , \
%qossettings );
103 & Header
:: getcgihash
( \
%qossettings );
105 & Header
:: openpage
( 'QoS' , 1 , '' );
106 & Header
:: openbigbox
( '100%' , 'left' , '' , $errormessage );
108 ############################################################################################################################
109 ############################################################################################################################
111 if ( $qossettings { 'DOCLASS' } eq $Lang :: tr
{ 'save' })
116 if ( $qossettings { 'VALID' } eq 'yes' ) {
117 open ( FILE
, ">> $classfile " ) or die "Unable to write $classfile " ;
119 $qossettings {'DEVICE'}; $qossettings {'CLASS'}; $qossettings {'PRIO'}; $qossettings {'MINBWDTH'}; $qossettings {'MAXBWDTH'}; $qossettings {'BURST'}; $qossettings {'CBURST'}; $qossettings {'TOS'};
124 $qossettings { 'ACTION' } = 'Parentklasse hinzufuegen' ;
127 elsif ( $qossettings { 'DOCLASS' } eq 'Bearbeiten' )
129 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
132 open ( FILE
, "> $classfile " ) or die "Unable to write $classfile " ;
133 foreach $classentry ( sort @classes )
135 @classline = split ( /\;/ , $classentry );
136 if ( $classline [ 1 ] ne $qossettings { 'CLASS' } ) {
137 print FILE
$classentry ;
139 $qossettings { 'DEVICE' } = $classline [ 0 ];
140 $qossettings { 'PRIO' } = $classline [ 2 ];
141 $qossettings { 'MINBWDTH' } = $classline [ 3 ];
142 $qossettings { 'MAXBWDTH' } = $classline [ 4 ];
143 $qossettings { 'BURST' } = $classline [ 5 ];
144 $qossettings { 'CBURST' } = $classline [ 6 ];
145 $qossettings { 'EDIT' } = 'yes' ;
150 & Header
:: closebigbox
();
151 & Header
:: closepage
();
154 elsif ( $qossettings { 'DOCLASS' } eq 'Loeschen' )
156 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
159 open ( FILE
, "> $classfile " ) or die "Unable to write $classfile " ;
160 foreach $classentry ( sort @tmp )
162 @tmpline = split ( /\;/ , $classentry );
163 if ( $tmpline [ 1 ] ne $qossettings { 'CLASS' } )
165 print FILE
$classentry ;
169 open ( FILE
, "< $subclassfile " ) or die "Unable to read $classfile " ;
172 open ( FILE
, "> $subclassfile " ) or die "Unable to write $classfile " ;
173 foreach $subclassentry ( sort @tmp )
175 @tmpline = split ( /\;/ , $subclassentry );
176 if ( $tmpline [ 1 ] ne $qossettings { 'CLASS' } )
178 print FILE
$subclassentry ;
182 $message = "Klasse $qossettings {'CLASS'} wurde mit eventuell vorhandenen Unterklassen geloescht." ;
185 ############################################################################################################################
186 ############################################################################################################################
188 if ( $qossettings { 'DOSCLASS' } eq $Lang :: tr
{ 'save' })
192 if ( $qossettings { 'VALID' } eq 'yes' ) {
193 open ( FILE
, ">> $subclassfile " ) or die "Unable to write $subclassfile " ;
195 $qossettings {'DEVICE'}; $qossettings {'CLASS'}; $qossettings {'SCLASS'}; $qossettings {'PRIO'}; $qossettings {'MINBWDTH'}; $qossettings {'MAXBWDTH'}; $qossettings {'BURST'}; $qossettings {'CBURST'}; $qossettings {'TOS'};
200 $qossettings { 'ACTION' } = 'Unterklasse hinzufuegen' ;
202 } elsif ( $qossettings { 'DOSCLASS' } eq 'Loeschen' )
204 open ( FILE
, "< $subclassfile " ) or die "Unable to read $classfile " ;
207 open ( FILE
, "> $subclassfile " ) or die "Unable to write $classfile " ;
208 foreach $subclassentry ( sort @tmp )
210 @tmpline = split ( /\;/ , $subclassentry );
211 if ( $tmpline [ 2 ] ne $qossettings { 'CLASS' } )
213 print FILE
$subclassentry ;
217 $message = "Unterklasse $qossettings {'CLASS'} wurde geloescht." ;
220 ############################################################################################################################
221 ############################################################################################################################
223 if ( $qossettings { 'DOLEVEL7' } eq $Lang :: tr
{ 'save' })
225 if ( $qossettings { 'QIP' } ne '' ) {
226 unless ( & General
:: validip
( $qossettings { 'QIP' }) ) {
227 $qossettings { 'VALID' } = 'no' ;
228 $message = "Die Quell-IP-Adresse ist ungueltig." ;
231 if ( $qossettings { 'DIP' } ne '' ) {
232 unless ( & General
:: validip
( $qossettings { 'DIP' }) ) {
233 $qossettings { 'VALID' } = 'no' ;
234 $message = "Die Ziel-IP-Adresse ist ungueltig." ;
237 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
238 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
239 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
240 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
241 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
242 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
243 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
244 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
246 if ( $qossettings { 'VALID' } eq 'yes' ) {
247 open ( FILE
, ">> $level7file " ) or die "Unable to write $level7file " ;
249 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'L7PROT'}; $qossettings {'QIP'}; $qossettings {'DIP'};
254 $qossettings { 'ACTION' } = 'Level7-Regel hinzufuegen' ;
257 elsif ( $qossettings { 'DOLEVEL7' } eq 'Loeschen' )
259 open ( FILE
, "< $level7file " ) or die "Unable to read $level7file " ;
262 open ( FILE
, "> $level7file " ) or die "Unable to read $level7file " ;
263 foreach $l7ruleentry ( sort @l7rules )
265 @l7ruleline = split ( /\;/ , $l7ruleentry );
266 if ( ( $l7ruleline [ 0 ] ne $qossettings { 'CLASS' }) && ( $l7ruleline [ 2 ] ne $qossettings { 'L7PROT' }))
268 print FILE
$l7ruleentry ;
272 $message = "Level7-Regel ( $qossettings {'CLASS'} - $qossettings {'L7PROT'}) wurde geloescht." ;
275 ############################################################################################################################
276 ############################################################################################################################
278 if ( $qossettings { 'DOPORT' } eq $Lang :: tr
{ 'save' })
280 if ( $qossettings { 'QIP' } ne '' ) {
281 unless ( & General
:: validip
( $qossettings { 'QIP' }) ) {
282 $qossettings { 'VALID' } = 'no' ;
283 $message = "Die Quell-IP-Adresse ist ungueltig." ;
286 if ( $qossettings { 'DIP' } ne '' ) {
287 unless ( & General
:: validip
( $qossettings { 'DIP' }) ) {
288 $qossettings { 'VALID' } = 'no' ;
289 $message = "Die Ziel-IP-Adresse ist ungueltig." ;
292 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
293 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
294 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
295 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
296 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
297 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
298 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
299 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
301 if ( $qossettings { 'VALID' } eq 'yes' ) {
302 open ( FILE
, ">> $portfile " ) or die "Unable to write $portfile " ;
304 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'PPROT'}; $qossettings {'QIP'}; $qossettings {'QPORT'}; $qossettings {'DIP'}; $qossettings {'DPORT'};
309 $qossettings { 'ACTION' } = 'Port-Regel hinzufuegen' ;
311 } elsif ( $qossettings { 'DOPORT' } eq 'Loeschen' )
313 open ( FILE
, "< $portfile " ) or die "Unable to read $portfile " ;
316 open ( FILE
, "> $portfile " ) or die "Unable to read $portfile " ;
317 foreach $portruleentry ( sort @portrules )
319 @portruleline = split ( /\;/ , $portruleentry );
320 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' }))
322 print FILE
$portruleentry ;
326 $message = "Port-Regel ( $qossettings {'CLASS'} - $qossettings {'PPROT'}) wurde geloescht." ;
329 ############################################################################################################################
330 ############################################################################################################################
332 if ( $qossettings { 'DOTOS' } eq $Lang :: tr
{ 'save' })
334 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
335 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
336 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
337 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
338 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
339 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
340 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
341 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
343 open ( FILE
, ">> $tosfile " ) or die "Unable to write $tosfile " ;
345 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'TOS'};
350 elsif ( $qossettings { 'DOTOS' } eq 'Loeschen' )
352 open ( FILE
, "< $tosfile " ) or die "Unable to read $tosfile " ;
355 open ( FILE
, "> $tosfile " ) or die "Unable to read $tosfile " ;
356 foreach $tosruleentry ( sort @tosrules )
358 @tosruleline = split ( /\;/ , $tosruleentry );
359 unless ( ( $tosruleline [ 0 ] eq $qossettings { 'CLASS' }) && ( $tosruleline [ 2 ] eq $qossettings { 'TOS' }))
361 print FILE
$tosruleentry ;
365 $message = "TOS-Regel ( $qossettings {'CLASS'} - $qossettings {'TOS'}) wurde geloescht." ;
366 } elsif ( $qossettings { 'DOTOS' } eq 'Bearbeiten' )
368 open ( FILE
, "< $tosfile " ) or die "Unable to read $tosfile " ;
371 open ( FILE
, "> $tosfile " ) or die "Unable to write $tosfile " ;
372 foreach $tosruleentry ( sort @tosrules )
374 @tosruleline = split ( /\;/ , $tosruleentry );
375 if (( $tosruleline [ 0 ] eq $qossettings { 'CLASS' } ) && ( $tosruleline [ 2 ] eq $qossettings { 'TOS' } )) {
376 $qossettings { 'DEVICE' } = $tosruleline [ 1 ];
377 $qossettings { 'CLASS' } = $tosruleline [ 0 ];
378 $qossettings { 'TOS' } = $tosruleline [ 2 ];
379 $qossettings { 'EDIT' } = 'yes' ;
381 print FILE
$tosruleentry ;
386 & Header
:: closebigbox
();
387 & Header
:: closepage
();
391 ############################################################################################################################
392 ############################################################################################################################
394 if ( $qossettings { 'ACTION' } eq 'Start' )
396 system ( "/usr/local/bin/qosctrl generate >/dev/null 2>&1" );
397 system ( "/bin/touch /var/ipfire/qos/enable" );
398 system ( "/usr/local/bin/qosctrl start >/dev/null 2>&1" );
399 system ( "logger -t ipfire 'QoS started'" );
400 $qossettings { 'ENABLED' } = 'on' ;
401 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
403 elsif ( $qossettings { 'ACTION' } eq 'Stop' )
405 system ( "/usr/local/bin/qosctrl stop >/dev/null 2>&1" );
406 unlink "/var/ipfire/qos/bin/qos.sh" ;
407 unlink "/var/ipfire/qos/enable" ;
408 system ( "logger -t ipfire 'QoS stopped'" );
409 $qossettings { 'ENABLED' } = 'off' ;
410 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
412 elsif ( $qossettings { 'ACTION' } eq 'Neustart' )
414 if ( $qossettings { 'ENABLED' } eq 'on' ){
415 system ( "/usr/local/bin/qosctrl stop >/dev/null 2>&1" );
416 system ( "/usr/local/bin/qosctrl generate >/dev/null 2>&1" );
417 system ( "/usr/local/bin/qosctrl start >/dev/null 2>&1" );
418 system ( "logger -t ipfire 'QoS restarted'" );
421 elsif ( $qossettings { 'ACTION' } eq $Lang :: tr
{ 'save' })
423 if ( $qossettings { 'DEF_INC_SPD' } eq '' ) {
424 $qossettings { 'DEF_INC_SPD' } = int ( $qossettings { 'INC_SPD' } * 0.9 );
426 if ( $qossettings { 'DEF_OUT_SPD' } eq '' ) {
427 $qossettings { 'DEF_OUT_SPD' } = int ( $qossettings { 'OUT_SPD' } * 0.9 );
429 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
431 elsif ( $qossettings { 'ACTION' } eq 'Statusinformationen' )
433 & Header
:: openbox
( '100%' , 'left' , 'QoS Status' );
434 if ( $qossettings { 'ENABLED' } eq 'on' ){
436 $output = `/usr/local/bin/qosctrl status` ;
437 $output = & Header
:: cleanhtml
( $output , "y" );
438 print "<pre> $output </pre> \n " ;
439 } else { print "QoS ist nicht aktiviert!" ; }
441 & Header
:: closebigbox
();
442 & Header
:: closepage
();
445 elsif ( $qossettings { 'ACTION' } eq 'Grafische Auswertung' )
447 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
450 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
451 @subclasses = < FILE
>;
453 & Header
:: openbox
( '100%' , 'left' , 'QoS Graphen' );
455 <table width='100%'> <tr><td align='center'><font color='red'>Diese Seite braucht je nach Geschwindigkeit des Computers laenger zum Laden.</font>
456 <tr><td align='center'><b>Klasse:</b>
459 foreach $classentry ( sort @classes )
461 @classline = split ( /\;/ , $classentry );
462 $qossettings { 'CLASS' }= $classline [ 1 ];
464 <input type="button" onClick="swapVisibility(' $qossettings {'CLASS'}')" value=' $qossettings {'CLASS'}'>
473 foreach $classentry ( sort @classes )
475 @classline = split ( /\;/ , $classentry );
476 $qossettings { 'DEV' }= $classline [ 0 ];
477 $qossettings { 'CLASS' }= $classline [ 1 ];
478 & gengraph
( $qossettings { 'DEV' }, $qossettings { 'CLASS' });
479 print "<div id=' $qossettings {'CLASS'}' style='display: none'>" ;
480 & Header
:: openbox
( '100%' , 'center' , " $qossettings {'CLASS'} ( $qossettings {'DEV'})" );
483 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-packets.png'>
484 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-borrowed.png'>
485 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-bytes.png'>
488 foreach $subclassentry ( sort @subclasses )
490 @subclassline = split ( /\;/ , $subclassentry );
491 if ( $subclassline [ 1 ] eq $classline [ 1 ]) {
492 $qossettings { 'DEV' }= $subclassline [ 0 ];
493 $qossettings { 'SCLASS' }= $subclassline [ 2 ];
494 & gengraph
( $qossettings { 'DEV' }, $qossettings { 'SCLASS' });
496 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'SCLASS'}_ $qossettings {'DEV'}-packets.png'>
497 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'SCLASS'}_ $qossettings {'DEV'}-borrowed.png'>
498 <tr><td colspan='2' align='center'><img src='/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'SCLASS'}_ $qossettings {'DEV'}-bytes.png'>
503 print " \t\t </table>" ;
512 & Header
:: closebigbox
();
513 & Header
:: closepage
();
516 elsif ( $qossettings { 'ACTION' } eq 'Parentklasse hinzufuegen' )
519 & Header
:: closebigbox
();
520 & Header
:: closepage
();
523 elsif ( $qossettings { 'ACTION' } eq 'Unterklasse hinzufuegen' )
526 & Header
:: closebigbox
();
527 & Header
:: closepage
();
530 elsif ( $qossettings { 'ACTION' } eq 'Regel hinzufuegen' )
532 & Header
:: openbox
( '100%' , 'center' , 'Regel hinzufuegen' );
535 <tr><td align='center'>Waehlen sie <u>eine</u> der untenstehenden Regeln aus.
536 <tr><td align='center'>
537 <input type="button" onClick="swapVisibility('l7rule')" value='Level7-Regel'>
538 <input type="button" onClick="swapVisibility('portrule')" value='Port-Regel'>
539 <input type="button" onClick="swapVisibility('tosrule')" value='TOS-Regel'>
545 <div id='l7rule' style='display: none'>
551 <div id='portrule' style='display: none'>
557 <div id='tosrule' style='display: none'>
565 & Header
:: closebigbox
();
566 & Header
:: closepage
();
569 elsif ( $qossettings { 'ACTION' } eq 'Erweiterte Einstellungen' )
572 & Header
:: closebigbox
();
573 & Header
:: closepage
();
576 if ( $qossettings { 'ACTIONBW' } eq 'Andern' )
579 & Header
:: closebigbox
();
580 & Header
:: closepage
();
583 if ( $qossettings { 'ACTIONDEF' } eq 'Andern' )
586 & Header
:: closebigbox
();
587 & Header
:: closepage
();
591 & General
:: readhash
( "${General::swroot}/qos/settings" , \
%qossettings );
593 my $status = $Lang :: tr
{ 'stopped' };
594 my $statuscolor = '#993333' ;
595 if ( $qossettings { 'ENABLED' } eq 'on' ) {
596 $status = $Lang :: tr
{ 'running' };
597 $statuscolor = '#339933' ;
600 if ( $netsettings { 'RED_TYPE' } ne 'PPPOE' ) {
601 $qossettings { 'RED_DEV' } = $netsettings { 'RED_DEV' };
605 & Header
:: openbox
( '100%' , 'left' , $Lang :: tr
{ 'error messages' });
606 print "<class name='base'> $errormessage \n " ;
607 print " </class> \n " ;
611 ############################################################################################################################
612 ############################################################################################################################
614 & Header
:: openbox
( '100%' , 'center' , 'Quality of Service' );
616 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
620 if ( $message ne "" ) {
621 print "<tr><td colspan='2' align='center'><font color='red'> $message </font>" ;
624 <tr><td width='50%' align='left'><b>Quality of Service:</b>
625 <td width='50%' align='center' bgcolor=' $statuscolor '><font color='white'> $status </font>
626 <tr><td width='100%' align='center' colspan='2'>
627 <input type='submit' name='ACTION' value='Start' />
628 <input type='submit' name='ACTION' value='Stop' />
629 <input type='submit' name='ACTION' value=' $Lang ::tr{'restart'}' />
632 if (( $qossettings { 'OUT_SPD' } ne '' ) && ( $qossettings { 'INC_SPD' } ne '' )) {
634 <tr><td colspan='3'>
635 <tr><td width='40%' align='right'>Downloadgeschwindigkeit: <td width='40%' align='left'> $qossettings {'INC_SPD'} kbps
636 <td width='20%' rowspan='2' align='center' valign='middle'><input type='submit' name='ACTIONBW' value='Andern'>
637 <tr><td width='40%' align='right'>Uploadgeschwindigkeit: <td width='40%' align='left'> $qossettings {'OUT_SPD'} kbps
641 if (( $qossettings { 'DEFCLASS_OUT' } ne '' ) && ( $qossettings { 'DEFCLASS_INC' } ne '' )&& ( $qossettings { 'ACK' } ne '' )) {
643 <tr><td colspan='3'><hr>
644 <tr><td width='40%' align='right'>Downloadstandardklasse: <td width='40%' align='left'> $qossettings {'DEFCLASS_INC'}
645 <td width='20%' rowspan='3' align='center' valign='middle'><input type='submit' name='ACTIONDEF' value='Andern'>
646 <tr><td width='40%' align='right'>Uploadstandardklasse: <td width='40%' align='left'> $qossettings {'DEFCLASS_OUT'}
647 <tr><td width='40%' align='right'>ACKs: <td width='40%' align='left'> $qossettings {'ACK'}
648 <tr><td colspan='3' width='100%'><hr>
649 <tr><td colspan='3' width='100%' align='center'>
650 <table boder='0' cellpadding='0' cellspacing='0'>
651 <tr><td><input type='submit' name='ACTION' value='Parentklasse hinzufuegen'>
652 <td><input type='submit' name='ACTION' value='Erweiterte Einstellungen'>
653 <tr><td><input type='submit' name='ACTION' value='Statusinformationen'>
654 <td><input type='submit' name='ACTION' value='Grafische Auswertung'>
663 if ( ( $qossettings { 'OUT_SPD' } eq '' ) || ( $qossettings { 'INC_SPD' } eq '' ) ) {
666 & Header
:: closebigbox
();
667 & Header
:: closepage
();
671 if ( ( $qossettings { 'DEFCLASS_INC' } eq '' ) || ( $qossettings { 'DEFCLASS_OUT' } eq '' ) || ( $qossettings { 'ACK' } eq '' ) ) {
673 & Header
:: closebigbox
();
674 & Header
:: closepage
();
683 & Header
:: closebigbox
();
684 & Header
:: closepage
();
686 ############################################################################################################################
687 ############################################################################################################################
689 sub changedefclasses
{
690 & Header
:: openbox
( '100%' , 'center' , 'Standardklassen:' );
692 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
694 <tr><td width='100%' colspan='3'>Legen sie hier die Standardklassen fest durch die nicht-gefilterte Pakete gehen.
695 <tr><td width='33%' align='right'>Download:<td width='33%' align='left'><select name='DEFCLASS_INC'>
698 for ( $c = 200 ; $c <= 220 ; $c ++ )
700 if ( $qossettings { 'DEFCLASS_INC' } ne $c )
701 { print "<option value=' $c '> $c </option> \n " ; }
702 else { print "<option selected value=' $c '> $c </option> \n " ; }
705 </select><td width='33%' align='center'>
706 <tr><td width='33%' align='right'>Upload:<td width='33%' align='left'><select name='DEFCLASS_OUT'>
709 for ( $c = 100 ; $c <= 120 ; $c ++ )
711 if ( $qossettings { 'DEFCLASS_OUT' } ne $c )
712 { print "<option value=' $c '> $c </option> \n " ; }
713 else { print "<option selected value=' $c '> $c </option> \n " ; }
716 </select><td width='33%' align='center'>
720 <tr><td width='100%' colspan='3'>Legen sie hier die ACK-Klasse fest <br> und klicken Sie danach auf <i>Speichern</i>.
721 <tr><td width='33%' align='right'>ACKs:<td width='33%' align='left'><select name='ACK'>
724 for ( $c = 100 ; $c <= 120 ; $c ++ )
726 if ( $qossettings { 'ACK' } ne $c )
727 { print "<option value=' $c '> $c </option> \n " ; }
728 else { print "<option selected value=' $c '> $c </option> \n " ; }
731 </select><td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} />
739 sub changebandwidth
{
740 & Header
:: openbox
( '100%' , 'center' , 'Bandbreiteneinstellungen' );
741 if ( $qossettings { 'ENABLED' } eq 'on' ) {
742 print "Sie koennen die Bandbreiteneinstellungen nicht bearbeiten, wenn QoS eingeschaltet ist. Schalten sie es zuerst dazu aus.<p>" ;
743 print "<a href='/cgi-bin/qos.cgi'>Zurueck</a>" ;
746 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
747 <input type='hidden' name='DEF_OUT_SPD' value=''><input type='hidden' name='DEF_INC_SPD' value=''>
749 <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>.
750 <tr><td width='33%' align='right'>Download-Geschwindigkeit:
751 <td width='33%' align='left'><input type='text' name='INC_SPD' maxlength='8' value= $qossettings {'INC_SPD'}> kbps
752 <td width='33%' align='center'>
753 <tr><td width='33%' align='right'>Upload-Geschwindigkeit:
754 <td width='33%' align='left'><input type='text' name='OUT_SPD' maxlength='8' value= $qossettings {'OUT_SPD'}> kbps
755 <td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} /> <input type='reset' name='ACTION' value= $Lang ::tr{'reset'} />
765 & Header
:: openbox
( '100%' , 'center' , 'Parentklasse' );
767 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
771 if ( $message ne "" ) {
772 print "<tr><td colspan='3' align='center'> $message " ;
774 if ( $qossettings { 'EDIT' } eq 'yes' ) {
775 print "<input type='hidden' name='CLASS' value= $qossettings {'CLASS'}>" ;
776 print "<input type='hidden' name='DEVICE' value= $qossettings {'DEVICE'}>" ;
779 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
780 <tr><td width='33%' align='right'>Interface:
781 <td width='33%' align='left'>
784 if ( $qossettings { 'EDIT' } eq 'yes' ) {
785 print "<select name='DEVICE' disabled>" ;
787 print "<select name='DEVICE'>" ;
789 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
790 $qossettings { 'RED_DEV_SEL' } = 'selected' ;
791 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
792 $qossettings { 'IMQ_DEV_SEL' } = 'selected' ;
795 <option value= $qossettings {'RED_DEV'} $qossettings {'RED_DEV_SEL'}> $qossettings {'RED_DEV'}</option>
796 <option value= $qossettings {'IMQ_DEV'} $qossettings {'IMQ_DEV_SEL'}> $qossettings {'IMQ_DEV'}</option></select>
797 <td width='33%' align='center'>
798 <tr><td width='33%' align='right'>Klasse:<td width='33%' align='left'>
801 if ( $qossettings { 'EDIT' } eq 'yes' ) {
802 print "<select name='CLASS' disabled>" ;
804 print "<select name='CLASS'>" ;
806 for ( $c = 100 ; $c <= 120 ; $c ++ )
808 if ( $qossettings { 'CLASS' } ne $c )
809 { print "<option value=' $c '> $c </option> \n " ; }
810 else { print "<option selected value=' $c '> $c </option> \n " ; }
812 for ( $c = 200 ; $c <= 220 ; $c ++ )
814 if ( $qossettings { 'CLASS' } ne $c )
815 { print "<option value=' $c '> $c </option> \n " ; }
816 else { print "<option selected value=' $c '> $c </option> \n " ; }
820 <td width='33%' align='center'>
821 <tr><td width='33%' align='right'>Prioritaet:<td width='33%' align='left'><select name='PRIO'>
824 for ( $c = 1 ; $c <= 7 ; $c ++ )
826 if ( $qossettings { 'PRIO' } ne $c )
827 { print "<option value=' $c '> $c </option> \n " ; }
828 else { print "<option selected value=' $c '> $c </option> \n " ; }
831 <td width='33%' align='center'>
832 <tr><td width='33%' align='right'>Garantierte Bandbreite:
833 <td width='33%' align='left'><input type='text' name='MINBWDTH' maxlength='8' required='1' value= $qossettings {'MINBWDTH'} >
834 <td width='33%' align='center'>
835 <tr><td width='33%' align='right'>Maximale Bandbreite:
836 <td width='33%' align='left'><input type='text' name='MAXBWDTH' maxlength='8' required='1' value= $qossettings {'MAXBWDTH'}>
837 <td width='33%' align='center'>
838 <tr><td width='33%' align='right'>Burst:
839 <td width='33%' align='left'><input type='text' name='BURST' maxlength='8' value= $qossettings {'BURST'}>
840 <td width='33%' align='center'>
841 <tr><td width='33%' align='right'>Ceilburst:
842 <td width='33%' align='left'><input type='text' name='CBURST' maxlength='8' value= $qossettings {'CBURST'}>
843 <td width='33%' align='center'>
844 <tr><td width='33%' align='right'>TOS-Bit:
845 <td width='33%' align='left'><select name='TOS'>
846 <option value='0'>Ausgeschaltet (0)</option>
847 <option value='8'>Minimale Verzoegerung (8)</option>
848 <option value='4'>Maximaler Durchsatz (4)</option>
849 <option value='2'>Maximale Zuverlaessigkeit (2)</option>
850 <option value='1'>Minimale Kosten (1)</option></select>
851 <td width='33%' align='center'><input type='submit' name='DOCLASS' value= $Lang ::tr{'save'} /> <input type='reset' value= $Lang ::tr{'reset'} />
859 & Header
:: openbox
( '100%' , 'center' , 'Unterklasse' );
861 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
865 if ( $message ne "" ) {
866 print "<tr><td colspan='3' align='center'> $message " ;
869 <tr><td colspan='3' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
870 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
871 <tr><td width='33%' align='right'>Unterklasse:<td width='33%' align='left'><select name='SCLASS'>
874 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
875 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
876 for ( $c = 1000 ; $c <= 1020 ; $c ++ )
878 if ( $qossettings { 'SCLASS' } ne $c )
879 { print "<option value=' $c '> $c </option> \n " ; }
880 else { print "<option selected value=' $c '> $c </option> \n " ; }
882 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
883 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
884 for ( $c = 2000 ; $c <= 2020 ; $c ++ )
886 if ( $qossettings { 'SCLASS' } ne $c )
887 { print "<option value=' $c '> $c </option> \n " ; }
888 else { print "<option selected value=' $c '> $c </option> \n " ; }
893 <td width='33%' align='center'>
894 <tr><td width='33%' align='right'>Prioritaet:<td width='33%' align='left'><select name='PRIO'>
897 for ( $c = 1 ; $c <= 7 ; $c ++ )
899 if ( $qossettings { 'PRIO' } ne $c )
900 { print "<option value=' $c '> $c </option> \n " ; }
901 else { print "<option selected value=' $c '> $c </option> \n " ; }
904 <td width='33%' align='center'>
905 <tr><td width='33%' align='right'>Garantierte Bandbreite:
906 <td width='33%' align='left'><input type='text' name='MINBWDTH' maxlength='8' required='1' value= $qossettings {'MINBWDTH'} >
907 <td width='33%' align='center'>
908 <tr><td width='33%' align='right'>Maximale Bandbreite:
909 <td width='33%' align='left'><input type='text' name='MAXBWDTH' maxlength='8' required='1' value= $qossettings {'MAXBWDTH'}>
910 <td width='33%' align='center'>
911 <tr><td width='33%' align='right'>Burst:
912 <td width='33%' align='left'><input type='text' name='BURST' maxlength='8' value= $qossettings {'BURST'}>
913 <td width='33%' align='center'>
914 <tr><td width='33%' align='right'>Ceilburst:
915 <td width='33%' align='left'><input type='text' name='CBURST' maxlength='8' value= $qossettings {'CBURST'}>
916 <td width='33%' align='center'>
917 <tr><td width='33%' align='right'>TOS-Bit:
918 <td width='33%' align='left'><select name='TOS'>
919 <option value='0'>Ausgeschaltet (0)</option>
920 <option value='8'>Minimale Verzoegerung (8)</option>
921 <option value='4'>Maximaler Durchsatz (4)</option>
922 <option value='2'>Maximale Zuverlaessigkeit (2)</option>
923 <option value='1'>Minimale Kosten (1)</option></select>
924 <td width='33%' align='center'><input type='hidden' name='CLASS' value= $qossettings {'CLASS'}>
925 <input type='hidden' name='DEVICE' value= $qossettings {'DEVICE'}>
926 <input type='submit' name='DOSCLASS' value= $Lang ::tr{'save'} /> <input type='reset' value= $Lang ::tr{'reset'} />
934 & Header
:: openbox
( '100%' , 'center' , 'Level7-Regel' );
936 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
940 if ( $message ne "" ) {
941 print "<tr><td colspan='3' align='center'><font color='red'> $message </font>" ;
944 <tr><td colspan='3' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
945 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
946 <tr><td width='33%' align='right'>Protokoll:
947 <td width='33%' align='left'><select name='L7PROT'>
950 opendir ( DIR
, "/etc/l7-protocols/protocols" );
951 foreach $direntry ( sort readdir ( DIR
) )
953 next if $direntry eq "." ;
954 next if $direntry eq ".." ;
955 next if - d
"/etc/l7-protocols/protocols/ $direntry " ;
956 @proto = split ( /\./ , $direntry );
957 if ( $proto [ 0 ] eq $qossettings { 'L7PROT' } ) {
958 print "<option value=' $proto [0]' selected> $proto [0]</option> \n " ;
960 print "<option value=' $proto [0]'> $proto [0]</option> \n " ;
965 </select><td width='33%' align='center'>
966 <tr><td width='33%' align='right'>Quell-IP-Adresse:
967 <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value= $qossettings {'QIP'}>
968 <td width='33%' align='center'>
969 <tr><td width='33%' align='right'>Ziel-IP-Adresse:
970 <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value= $qossettings {'DIP'}>
971 <td width='33%' align='center'><input type='hidden' name='CLASS' value= $qossettings {'CLASS'}><input type='submit' name='DOLEVEL7' value= $Lang ::tr{'save'} />
979 & Header
:: openbox
( '100%' , 'center' , 'Port-Regel hinzufuegen' );
981 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
983 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
984 <tr><td width='33%' align='right'>Protokoll:
985 <td width='33%' align='left'><select name='PPROT'>
988 open ( FILE
, "< /etc/protocols" );
991 foreach $direntry ( sort @proto )
993 @tmpline = split ( /\ / , $direntry );
994 next if $tmpline [ 0 ] =~ "#" ;
995 if ( $tmpline [ 0 ] eq $qossettings { 'PPROT' } ) {
996 print "<option value=' $tmpline [0]' selected> $tmpline [0]</option> \n " ;
998 print "<option value=' $tmpline [0]'> $tmpline [0]</option> \n " ;
1002 </select><td width='33%' align='center'>
1003 <tr><td width='33%' align='right'>Quell-Port:
1004 <td width='33%' align='left'><input type='text' name='QPORT' maxlength='5' value= $qossettings {'QPORT'}>
1005 <td width='33%' align='center'>
1006 <tr><td width='33%' align='right'>Ziel-Port:
1007 <td width='33%' align='left'><input type='text' name='DPORT' maxlength='5' value= $qossettings {'DPORT'}>
1008 <td width='33%' align='center'>
1009 <tr><td width='33%' align='right'>Quell-IP-Adresse:
1010 <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value= $qossettings {'QIP'}>
1011 <td width='33%' align='center'>
1012 <tr><td width='33%' align='right'>Ziel-IP-Adresse:
1013 <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value= $qossettings {'DIP'}>
1014 <td width='33%' align='center'><input type='hidden' name='CLASS' value=' $qossettings {'CLASS'}'><input type='submit' name='DOPORT' value= $Lang ::tr{'save'} />
1018 & Header
:: closebox
();
1022 & Header
:: openbox
( '100%' , 'center' , 'TOS-Regel' );
1023 if ( $qossettings { 'TOS' }) {
1024 $checked [ $qossettings { 'TOS' }] = "checked" ;
1027 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1031 if ( $message ne "" ) {
1032 print "<tr><td colspan='3' align='center'><font color='red'> $message </font>" ;
1035 <tr><td colspan='2' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
1036 <tr><td width='100%' colspan='2'>Aktivieren oder deaktivieren sie die TOS-Bits <br> und klicken Sie danach auf <i>Speichern</i>.
1037 <tr><td width='50%' align='left'>Minimale Verzoegerung (8) <td width='50%'><input type="radio" name="TOS" value="8" $checked [8]>
1038 <tr><td width='50%' align='left'>Maximaler Durchsatz (4) <td width='50%'><input type="radio" name="TOS" value="4" $checked [4]>
1039 <tr><td width='50%' align='left'>Maximale Zuverlaessigkeit (2) <td width='50%'><input type="radio" name="TOS" value="2" $checked [2]>
1040 <tr><td width='50%' align='left'>Minimale Kosten (1) <td width='50%'><input type="radio" name="TOS" value="1" $checked [1]>
1041 <tr><td width='100%' align='right' colspan='2'><input type='hidden' name='CLASS' value= $qossettings {'CLASS'}><input type='submit' name='DOTOS' value= $Lang ::tr{'save'} />
1045 & Header
:: closebox
();
1049 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
1053 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
1054 @subclasses = < FILE
>;
1056 & Header
:: openbox
( '100%' , 'center' , 'Klassen' );
1058 <table border='0' width='100%' cellspacing='0'>
1059 <tr><td bgcolor='lightgrey' width='10%'>Interface
1060 <td bgcolor='lightgrey' width='10%'>Klasse
1061 <td bgcolor='lightgrey' width='10%'>Prioritaet
1062 <td bgcolor='lightgrey' width='10%'>Garantierte Bandbreite
1063 <td bgcolor='lightgrey' width='10%'>Maximale Bandbreite
1064 <td bgcolor='lightgrey' width='10%'>Burst
1065 <td bgcolor='lightgrey' width='10%'>Ceil Burst
1066 <td bgcolor='lightgrey' width='10%'>TOS
1067 <td bgcolor='lightgrey' width='20%'>Aktionen
1070 foreach $classentry ( sort @classes )
1072 @classline = split ( /\;/ , $classentry );
1073 if ( $classline [ 0 ] eq $qossettings { 'RED_DEV' } )
1076 <tr><td align='center' bgcolor='#EAEAEA'> $classline [0]
1077 <td align='center' bgcolor='#EAEAEA'> $classline [1]
1078 <td align='center' bgcolor='#EAEAEA'> $classline [2]
1079 <td align='center' bgcolor='#EAEAEA'> $classline [3]
1080 <td align='center' bgcolor='#EAEAEA'> $classline [4]
1081 <td align='center' bgcolor='#EAEAEA'> $classline [5]
1082 <td align='center' bgcolor='#EAEAEA'> $classline [6]
1083 <td align='center' bgcolor='#EAEAEA'> $classline [7]
1084 <td align='right' bgcolor='#EAEAEA'>
1085 <table border='0'><tr>
1086 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1087 <input type='hidden' name='CLASS' value=' $classline [1]'>
1088 <input type='hidden' name='ACTION' value='Unterklasse hinzufuegen'>
1089 <input type='image' alt='Unterklasse hinzufuegen' src='/images/addblue.gif'>
1091 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1092 <input type='hidden' name='CLASS' value=' $classline [1]'>
1093 <input type='hidden' name='ACTION' value='Regel hinzufuegen'>
1094 <input type='image' alt='Regel hinzufuegen' src='/images/addgreen.gif'>
1096 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1097 <input type='hidden' name='CLASS' value=' $classline [1]'>
1098 <input type='hidden' name='DOCLASS' value='Bearbeiten'>
1099 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1101 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1102 <input type='hidden' name='CLASS' value=' $classline [1]'>
1103 <input type='hidden' name='DOCLASS' value='Loeschen'>
1104 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1109 foreach $subclassentry ( sort @subclasses )
1111 @subclassline = split ( /\;/ , $subclassentry );
1112 if ( $subclassline [ 1 ] eq $classline [ 1 ] ) {
1114 <tr><td align='center' bgcolor='#FFFFFF'>Subklasse:
1115 <td align='center' bgcolor='#FAFAFA'> $subclassline [2]
1116 <td align='center' bgcolor='#FAFAFA'> $subclassline [3]
1117 <td align='center' bgcolor='#FAFAFA'> $subclassline [4]
1118 <td align='center' bgcolor='#FAFAFA'> $subclassline [5]
1119 <td align='center' bgcolor='#FAFAFA'> $subclassline [6]
1120 <td align='center' bgcolor='#FAFAFA'> $subclassline [7]
1121 <td align='center' bgcolor='#FAFAFA'> $subclassline [8]
1122 <td align='right' bgcolor='#FAFAFA'>
1123 <table border='0'><tr>
1124 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1125 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1126 <input type='hidden' name='ACTION' value='Regel hinzufuegen'>
1127 <input type='image' alt='Regel hinzufuegen' src='/images/addgreen.gif'>
1129 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1130 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1131 <input type='hidden' name='DOSCLASS' value='Bearbeiten'>
1132 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1134 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1135 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1136 <input type='hidden' name='DOSCLASS' value='Loeschen'>
1137 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1146 print " \t <tr><td colspan='9' bgcolor='lightgrey' height='2'>" ;
1147 foreach $classentry ( sort @classes )
1149 @classline = split ( /\;/ , $classentry );
1150 if ( $classline [ 0 ] eq $qossettings { 'IMQ_DEV' } )
1153 <tr><td align='center' bgcolor='#EAEAEA'> $classline [0]
1154 <td align='center' bgcolor='#EAEAEA'> $classline [1]
1155 <td align='center' bgcolor='#EAEAEA'> $classline [2]
1156 <td align='center' bgcolor='#EAEAEA'> $classline [3]
1157 <td align='center' bgcolor='#EAEAEA'> $classline [4]
1158 <td align='center' bgcolor='#EAEAEA'> $classline [5]
1159 <td align='center' bgcolor='#EAEAEA'> $classline [6]
1160 <td align='center' bgcolor='#EAEAEA'> $classline [7]
1161 <td align='right' bgcolor='#EAEAEA'>
1162 <table border='0'><tr>
1163 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1164 <input type='hidden' name='CLASS' value=' $classline [1]'>
1165 <input type='hidden' name='ACTION' value='Unterklasse hinzufuegen'>
1166 <input type='image' alt='Unterklasse hinzufuegen' src='/images/addblue.gif'>
1168 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1169 <input type='hidden' name='CLASS' value=' $classline [1]'>
1170 <input type='hidden' name='ACTION' value='Regel hinzufuegen'>
1171 <input type='image' alt='Regel hinzufuegen' src='/images/addgreen.gif'>
1173 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1174 <input type='hidden' name='CLASS' value=' $classline [1]'>
1175 <input type='hidden' name='DOCLASS' value='Bearbeiten'>
1176 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1178 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1179 <input type='hidden' name='CLASS' value=' $classline [1]'>
1180 <input type='hidden' name='DOCLASS' value='Loeschen'>
1181 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1186 foreach $subclassentry ( sort @subclasses )
1188 @subclassline = split ( /\;/ , $subclassentry );
1189 if ( $subclassline [ 1 ] eq $classline [ 1 ] ) {
1191 <tr><td align='center' bgcolor='#FFFFFF'>Subklasse:
1192 <td align='center' bgcolor='#FAFAFA'> $subclassline [2]
1193 <td align='center' bgcolor='#FAFAFA'> $subclassline [3]
1194 <td align='center' bgcolor='#FAFAFA'> $subclassline [4]
1195 <td align='center' bgcolor='#FAFAFA'> $subclassline [5]
1196 <td align='center' bgcolor='#FAFAFA'> $subclassline [6]
1197 <td align='center' bgcolor='#FAFAFA'> $subclassline [7]
1198 <td align='center' bgcolor='#FAFAFA'> $subclassline [8]
1199 <td align='right' bgcolor='#FAFAFA'>
1200 <table border='0'><tr>
1201 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1202 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1203 <input type='hidden' name='ACTION' value='Regel hinzufuegen'>
1204 <input type='image' alt='Regel hinzufuegen' src='/images/addgreen.gif'>
1206 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1207 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1208 <input type='hidden' name='DOSCLASS' value='Bearbeiten'>
1209 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1211 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1212 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1213 <input type='hidden' name='DOSCLASS' value='Loeschen'>
1214 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1224 <tr><td colspan='9' align='right' valign='middle'><b>Legende:</b> <img src='/images/addblue.gif'> Unterklasse hinzufuegen | <img src='/images/addgreen.gif'> Regel hinzufuegen | <img src='/images/edit.gif'> Klasse bearbeiten | <img src='/images/delete.gif'> Klasse loeschen
1225 <tr><td colspan='9' align='right' valign='middle'><b>TOS-Bits:</b> <b>0</b> - Deaktiviert | <b>8</b> - Minimale Verzoegerung | <b>4</b> - Maximaler Durchsatz | <b>2</b> - Maximale Zuverlaessigkeit | <b>1</b> - Minimale Kosten
1229 & Header
:: closebox
();
1234 open ( FILE
, "< $level7file " ) or die "Unable to read $level7file " ;
1238 & Header
:: openbox
( '100%' , 'center' , 'Level7-Regeln' );
1240 <table border='0' width='100%' cellspacing='0'>
1241 <tr><td bgcolor='lightgrey' width='14%'>Interface
1242 <td bgcolor='lightgrey' width='14%'>Klasse
1243 <td bgcolor='lightgrey' width='14%'>Protokoll
1244 <td bgcolor='lightgrey' width='14%'>Quell-IP-Adresse
1245 <td bgcolor='lightgrey' width='14%'>Ziel-IP-Adresse
1246 <td bgcolor='lightgrey' width='30%'>Aktionen
1249 foreach $l7ruleentry ( sort @l7rules )
1251 @l7ruleline = split ( /\;/ , $l7ruleentry );
1252 if ( $l7ruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
1255 <tr><td align='center' bgcolor='#EAEAEA'> $l7ruleline [1]
1256 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [0]
1257 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [2]
1258 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [3]
1259 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [4]
1260 <td align='right' bgcolor='#EAEAEA'>
1261 <table border='0'><tr>
1262 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1263 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1264 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1265 <input type='hidden' name='DOLEVEL7' value='Bearbeiten'>
1266 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1268 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1269 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1270 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1271 <input type='hidden' name='DOLEVEL7' value='Loeschen'>
1272 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1279 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1280 foreach $l7ruleentry ( sort @l7rules )
1282 @l7ruleline = split ( /\;/ , $l7ruleentry );
1283 if ( $l7ruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1286 <tr><td align='center' bgcolor='#EAEAEA'> $l7ruleline [1]
1287 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [0]
1288 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [2]
1289 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [3]
1290 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [4]
1291 <td align='right' bgcolor='#EAEAEA'>
1292 <table border='0'><tr>
1293 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1294 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1295 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1296 <input type='hidden' name='DOLEVEL7' value='Bearbeiten'>
1297 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1299 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1300 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1301 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1302 <input type='hidden' name='DOLEVEL7' value='Loeschen'>
1303 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1311 <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
1315 & Header
:: closebox
();
1320 open ( FILE
, "< $portfile " ) or die "Unable to read $portfile " ;
1321 @portrules = < FILE
>;
1324 & Header
:: openbox
( '100%' , 'center' , 'Port-Regeln' );
1326 <table border='0' width='100%' cellspacing='0'>
1327 <tr><td bgcolor='lightgrey' width='10%'>Interface
1328 <td bgcolor='lightgrey' width='10%'>Klasse
1329 <td bgcolor='lightgrey' width='10%'>Protokoll
1330 <td bgcolor='lightgrey' width='10%'>Quell-IP-Adresse
1331 <td bgcolor='lightgrey' width='10%'>Quell-Port
1332 <td bgcolor='lightgrey' width='10%'>Ziel-IP-Adresse
1333 <td bgcolor='lightgrey' width='10%'>Ziel-Port
1334 <td bgcolor='lightgrey' width='30%'>Aktionen
1337 foreach $portruleentry ( sort @portrules )
1339 @portruleline = split ( /\;/ , $portruleentry );
1340 if ( $portruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
1343 <tr><td align='center' bgcolor='#EAEAEA'> $portruleline [1]
1344 <td align='center' bgcolor='#EAEAEA'> $portruleline [0]
1345 <td align='center' bgcolor='#EAEAEA'> $portruleline [2]
1346 <td align='center' bgcolor='#EAEAEA'> $portruleline [3]
1347 <td align='center' bgcolor='#EAEAEA'> $portruleline [4]
1348 <td align='center' bgcolor='#EAEAEA'> $portruleline [5]
1349 <td align='center' bgcolor='#EAEAEA'> $portruleline [6]
1350 <td align='right' bgcolor='#EAEAEA'>
1351 <table border='0'><tr>
1352 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1353 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1354 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1355 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1356 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1357 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1358 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1359 <input type='hidden' name='DOPORT' value='Bearbeiten'>
1360 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1362 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1363 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1364 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1365 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1366 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1367 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1368 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1369 <input type='hidden' name='DOPORT' value='Loeschen'>
1370 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1377 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1378 foreach $portruleentry ( sort @portrules )
1380 @portruleline = split ( /\;/ , $portruleentry );
1381 if ( $portruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1384 <tr><td align='center' bgcolor='#EAEAEA'> $portruleline [1]
1385 <td align='center' bgcolor='#EAEAEA'> $portruleline [0]
1386 <td align='center' bgcolor='#EAEAEA'> $portruleline [2]
1387 <td align='center' bgcolor='#EAEAEA'> $portruleline [3]
1388 <td align='center' bgcolor='#EAEAEA'> $portruleline [4]
1389 <td align='center' bgcolor='#EAEAEA'> $portruleline [5]
1390 <td align='center' bgcolor='#EAEAEA'> $portruleline [6]
1391 <td align='right' bgcolor='#EAEAEA'>
1392 <table border='0'><tr>
1393 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1394 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1395 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1396 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1397 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1398 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1399 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1400 <input type='hidden' name='DOPORT' value='Bearbeiten'>
1401 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1403 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1404 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1405 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1406 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1407 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1408 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1409 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1410 <input type='hidden' name='DOPORT' value='Loeschen'>
1411 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1419 <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
1423 & Header
:: closebox
();
1428 open ( FILE
, "< $tosfile " ) or die "Unable to read $tosfile " ;
1432 & Header
:: openbox
( '100%' , 'center' , 'TOS-Regeln' );
1434 <table border='0' width='100%' cellspacing='0'>
1435 <tr><td bgcolor='lightgrey' width='10%'>Interface
1436 <td bgcolor='lightgrey' width='10%'>Klasse
1437 <td bgcolor='lightgrey' width='10%'>TOS-Bit
1438 <td bgcolor='lightgrey' width='50%'>TOS-Beschreibung
1439 <td bgcolor='lightgrey' width='20%'>Aktionen
1442 foreach $tosruleentry ( sort @tosrules )
1444 @tosruleline = split ( /\;/ , $tosruleentry );
1445 if ( $tosruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
1448 <tr><td align='center' bgcolor='#EAEAEA'> $tosruleline [1]
1449 <td align='center' bgcolor='#EAEAEA'> $tosruleline [0]
1450 <td align='center' bgcolor='#EAEAEA'> $tosruleline [2]
1451 <td align='center' bgcolor='#EAEAEA'>
1454 if ( $tosruleline [ 2 ] eq "8" ) {
1455 print "Minimale Verzoegerung \n " ;
1456 } elsif ( $tosruleline [ 2 ] eq "4" ) {
1457 print "Maximaler Durchsatz \n " ;
1458 } elsif ( $tosruleline [ 2 ] eq "2" ) {
1459 print "Maximaler Durchsatz \n " ;
1460 } elsif ( $tosruleline [ 2 ] eq "1" ) {
1461 print "Minimale Kosten \n " ;
1462 } else { print " \n " ; }
1464 <td align='right' bgcolor='#EAEAEA'>
1465 <table border='0'><tr>
1466 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1467 <input type='hidden' name='CLASS' value=' $tosruleline [0]'>
1468 <input type='hidden' name='DEV' value=' $tosruleline [1]'>
1469 <input type='hidden' name='TOS' value=' $tosruleline [2]'>
1470 <input type='hidden' name='DOTOS' value='Bearbeiten'>
1471 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1473 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1474 <input type='hidden' name='CLASS' value=' $tosruleline [0]'>
1475 <input type='hidden' name='DEV' value=' $tosruleline [1]'>
1476 <input type='hidden' name='TOS' value=' $tosruleline [2]'>
1477 <input type='hidden' name='DOTOS' value='Loeschen'>
1478 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1485 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1486 foreach $tosruleentry ( sort @tosrules )
1488 @tosruleline = split ( /\;/ , $tosruleentry );
1489 if ( $tosruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1492 <tr><td align='center' bgcolor='#EAEAEA'> $tosruleline [1]
1493 <td align='center' bgcolor='#EAEAEA'> $tosruleline [0]
1494 <td align='center' bgcolor='#EAEAEA'> $tosruleline [2]
1495 <td align='center' bgcolor='#EAEAEA'>
1498 if ( $tosruleline [ 2 ] eq "8" ) {
1499 print "Minimale Verzoegerung \n " ;
1500 } elsif ( $tosruleline [ 2 ] eq "4" ) {
1501 print "Maximaler Durchsatz \n " ;
1502 } elsif ( $tosruleline [ 2 ] eq "2" ) {
1503 print "Maximaler Durchsatz \n " ;
1504 } elsif ( $tosruleline [ 2 ] eq "1" ) {
1505 print "Minimale Kosten \n " ;
1506 } else { print " \n " ; }
1508 <td align='right' bgcolor='#EAEAEA'>
1509 <table border='0'><tr>
1510 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1511 <input type='hidden' name='CLASS' value=' $tosruleline [0]'>
1512 <input type='hidden' name='DEV' value=' $tosruleline [1]'>
1513 <input type='hidden' name='TOS' value=' $tosruleline [2]'>
1514 <input type='hidden' name='DOTOS' value='Bearbeiten'>
1515 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1517 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1518 <input type='hidden' name='CLASS' value=' $tosruleline [0]'>
1519 <input type='hidden' name='DEV' value=' $tosruleline [1]'>
1520 <input type='hidden' name='TOS' value=' $tosruleline [2]'>
1521 <input type='hidden' name='DOTOS' value='Loeschen'>
1522 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1530 <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
1534 & Header
:: closebox
();
1540 & Header
:: openbox
( '100%' , 'center' , 'Expertenoptionen:' );
1542 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1544 <tr><td width='33%' align='right'>MTU:<td width='33%' align='left'>
1545 <input type='text' name='MTU' maxlength='8' required='4' value= $qossettings {'MTU'}>
1546 <td width='33%' align='center'>Diese Einstellung aendert die MTU nicht global sondern nur fuer das QoS.
1547 <tr><td width='33%' align='right'>Queue Laenge:<td width='33%' align='left'>
1548 <input type='text' name='QLENGTH' maxlength='8' required='2' value= $qossettings {'QLENGTH'}>
1549 <td width='33%' align='center'>
1550 <tr><td width='33%' align='right'>SFQ Perturb:<td width='33%' align='left'>
1551 <input type='text' name='SFQ_PERTUB' maxlength='8' required='1' value= $qossettings {'SFQ_PERTUB'}>
1552 <td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} />
1557 & Header
:: closebox
();
1561 if ( $qossettings { 'VALID' } eq 'yes' ) {
1562 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1563 $qossettings { 'SPD' } = $qossettings { 'OUT_SPD' };
1564 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1565 $qossettings { 'SPD' } = $qossettings { 'INC_SPD' };
1567 unless ( ( $qossettings { 'MINBWDTH' } >= 1 ) && ( $qossettings { 'MINBWDTH' } <= $qossettings { 'SPD' } ) ) {
1568 $qossettings { 'VALID' } = 'no' ;
1569 $message = "Mindestbandbreite ist ungueltig." ;
1571 $qossettings { 'SPD' } = '' ;
1576 if ( $qossettings { 'VALID' } eq 'yes' ) {
1577 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1578 $qossettings { 'SPD' } = $qossettings { 'OUT_SPD' };
1579 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1580 $qossettings { 'SPD' } = $qossettings { 'INC_SPD' };
1582 unless ( ( $qossettings { 'MAXBDWTH' } >= 0 ) && ( $qossettings { 'MAXBDWTH' } >= $qossettings { 'MINBDWTH' }) &&( $qossettings { 'MAXBDWTH' } <= $qossettings { 'SPD' } ) ) {
1583 $qossettings { 'VALID' } = 'no' ;
1584 $message = "Mamimalbandbreite ist ungueltig." ;
1586 $qossettings { 'SPD' } = '' ;
1591 if ( $qossettings { 'VALID' } eq 'yes' ) {
1592 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1593 if ( $qossettings { 'CLASS' } lt 100 || $qossettings { 'CLASS' } ge 121 ) {
1594 $qossettings { 'VALID' } = 'no' ;
1595 $message = "Die Klassennummer passt nicht zum angegebenen Interface." ;
1597 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1598 if ( $qossettings { 'CLASS' } lt 200 || $qossettings { 'CLASS' } ge 221 ) {
1599 $qossettings { 'VALID' } = 'no' ;
1600 $message = "Die Klassennummer passt nicht zum angegebenen Interface." ;
1603 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
1606 foreach $classentry ( sort @tmp )
1608 @tmpline = split ( /\;/ , $classentry );
1609 if ( $tmpline [ 1 ] eq $qossettings { 'CLASS' } )
1611 $qossettings { 'VALID' } = 'no' ;
1612 $message = "Die aktuelle Klasse wird bereits verwendet." ;
1620 if ( $qossettings { 'VALID' } eq 'yes' ) {
1621 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
1624 foreach $subclassentry ( sort @tmp )
1626 @tmpline = split ( /\;/ , $subclassentry );
1627 if ( $tmpline [ 2 ] eq $qossettings { 'SCLASS' } )
1629 $qossettings { 'VALID' } = 'no' ;
1630 $message = "Die aktuelle Klasse wird bereits verwendet." ;
1638 $qossettings { 'DEV' } = shift ;
1639 $qossettings { 'CLASS' } = shift ;
1641 if ( $qossettings { 'DEV' } eq $qossettings { 'RED_DEV' } ) {
1642 $qossettings { 'CLASSPRFX' } = '1' ;
1644 $qossettings { 'CLASSPRFX' } = '2' ;
1647 RRDs
:: graph
( "/home/httpd/html/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-packets.png" ,
1648 "--start" , "-3240" , "-aPNG" , "-i" , "-z" ,
1649 "--alt-y-grid" , "-w 600" , "-h 150" , "-r" ,
1650 "--color" , "SHADEA#EAE9EE" ,
1651 "--color" , "SHADEB#EAE9EE" ,
1652 "--color" , "BACK#FFFFFF" ,
1653 "-t $qossettings {'CLASS'} ( $qossettings {'DEV'})" ,
1654 "DEF:pkts=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:pkts:AVERAGE" ,
1655 "DEF:dropped=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:dropped:AVERAGE" ,
1656 "DEF:overlimits=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:overlimits:AVERAGE" ,
1657 "AREA:pkts#00FFFF:packets" ,
1658 "GPRINT:pkts:LAST:total packets \\ : %8 .3lf %s packets \\ j" ,
1659 "LINE3:dropped#FF0000:dropped" ,
1660 "GPRINT:dropped:LAST:dropped packets \\ : %8 .3lf %s packets \\ j" ,
1661 "LINE3:overlimits#0000FF:overlimits" ,
1662 "GPRINT:overlimits:LAST:overlimits \\ : %8 .3lf %s packets \\ j" ,
1664 $ERROR = RRDs
:: error
;
1667 RRDs
:: graph
( "/home/httpd/html/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-borrowed.png" ,
1668 "--start" , "-3240" , "-aPNG" , "-i" , "-z" ,
1669 "--alt-y-grid" , "-w 600" , "-h 150" , "-r" ,
1670 "--color" , "SHADEA#EAE9EE" ,
1671 "--color" , "SHADEB#EAE9EE" ,
1672 "--color" , "BACK#FFFFFF" ,
1673 "-t $qossettings {'CLASS'} ( $qossettings {'DEV'})" ,
1674 "DEF:lended=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:lended:AVERAGE" ,
1675 "DEF:borrowed=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:borrowed:AVERAGE" ,
1676 "DEF:giants=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:giants:AVERAGE" ,
1677 "AREA:lended#99ff99:lended" ,
1678 "GPRINT:lended:LAST:lended \\ : %8 .3lf %s packets \\ j" ,
1679 "LINE3:borrowed#f70566:borrowed" ,
1680 "GPRINT:borrowed:LAST:borrowed \\ : %8 .3lf %s packets \\ j" ,
1681 "LINE3:giants#05ad05:giants" ,
1682 "GPRINT:giants:LAST:giants \\ : %8 .3lf %s packets \\ j" ,
1684 $ERROR = RRDs
:: error
;
1687 RRDs
:: graph
( "/home/httpd/html/graphs/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}-bytes.png" ,
1688 "--start" , "-3240" , "-aPNG" , "-i" , "-z" ,
1689 "--alt-y-grid" , "-w 600" , "-h 150" , "-r" ,
1690 "--color" , "SHADEA#EAE9EE" ,
1691 "--color" , "SHADEB#EAE9EE" ,
1692 "--color" , "BACK#FFFFFF" ,
1693 "-t $qossettings {'CLASS'} ( $qossettings {'DEV'})" ,
1694 "DEF:bits=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:bits:AVERAGE" ,
1695 "DEF:bytes=/var/log/rrd/class_ $qossettings {'CLASSPRFX'}- $qossettings {'CLASS'}_ $qossettings {'DEV'}.rrd:bytes:AVERAGE" ,
1696 "CDEF:kbytes=bytes,1024,/" ,
1697 "CDEF:kbits=bits,1024,/,8,/" ,
1698 "AREA:kbytes#FFBE7D:kbytes" ,
1699 "GPRINT:kbytes:LAST:rate \\ : %8 .3lf kbytes \\ j" ,
1701 $ERROR = RRDs
:: error
;