]>
git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - html/cgi-bin/qos.cgi
5 # This code is distributed under the terms of the GPL
11 # enable only the following on debugging purpose
13 use CGI
:: Carp
'fatalsToBrowser' ;
15 require '/var/ipfire/general-functions.pl' ;
16 require "${General::swroot}/lang.pl" ;
17 require "${General::swroot}/header.pl" ;
23 my $errormessage = "" ;
27 my $subclassentry = "" ;
29 my $portruleentry = "" ;
37 my @subclassline = ();
39 my @portruleline = ();
42 my $classfile = "/var/ipfire/qos/classes" ;
43 my $subclassfile = "/var/ipfire/qos/subclasses" ;
44 my $level7file = "/var/ipfire/qos/level7config" ;
45 my $portfile = "/var/ipfire/qos/portconfig" ;
46 & General
:: readhash
( "${General::swroot}/ethernet/settings" , \
%netsettings );
48 & Header
:: showhttpheaders
();
50 $qossettings { 'ENABLED' } = 'off' ;
51 $qossettings { 'EDIT' } = 'no' ;
52 $qossettings { 'OUT_SPD' } = '' ;
53 $qossettings { 'INC_SPD' } = '' ;
54 $qossettings { 'DEF_OUT_SPD' } = '' ;
55 $qossettings { 'DEF_INC_SPD' } = '' ;
56 $qossettings { 'DEFCLASS_INC' } = '' ;
57 $qossettings { 'DEFCLASS_OUT' } = '' ;
58 $qossettings { 'ACK' } = '' ;
59 $qossettings { 'MTU' } = '1492' ;
60 $qossettings { 'SFQ_PERTUB' } = '10' ;
61 $qossettings { 'QLENGTH' } = '30' ;
62 $qossettings { 'RED_DEV' } = `cat /var/ipfire/red/iface` ;
63 $qossettings { 'IMQ_DEV' } = 'imq0' ;
64 $qossettings { 'VALID' } = 'yes' ;
65 ### Values that have to be initialized
66 $qossettings { 'ACTION' } = '' ;
67 $qossettings { 'ACTIONDEF' } = '' ;
68 $qossettings { 'ACTIONBW' } = '' ;
69 $qossettings { 'PRIO' } = '' ;
70 $qossettings { 'SPD' } = '' ;
71 $qossettings { 'CLASS' } = '' ;
72 $qossettings { 'SCLASS' } = '' ;
73 $qossettings { 'QPORT' } = '' ;
74 $qossettings { 'DPORT' } = '' ;
75 $qossettings { 'QIP' } = '' ;
76 $qossettings { 'DIP' } = '' ;
77 $qossettings { 'PPROT' } = '' ;
78 $qossettings { 'L7PROT' } = '' ;
79 $qossettings { 'DEVICE' } = '' ;
80 $qossettings { 'MINBWDTH' } = '' ;
81 $qossettings { 'MAXBWDTH' } = '' ;
82 $qossettings { 'BURST' } = '' ;
83 $qossettings { 'CBURST' } = '' ;
84 $qossettings { 'DOCLASS' } = '' ;
85 $qossettings { 'DOSCLASS' } = '' ;
86 $qossettings { 'DOLEVEL7' } = '' ;
87 $qossettings { 'DOPORT' } = '' ;
90 & General
:: readhash
( "${General::swroot}/qos/settings" , \
%qossettings );
91 & Header
:: getcgihash
( \
%qossettings );
93 & Header
:: openpage
( 'QoS' , 1 , '' );
94 & Header
:: openbigbox
( '100%' , 'left' , '' , $errormessage );
96 ############################################################################################################################
97 ############################################################################################################################
99 if ( $qossettings { 'DOCLASS' } eq $Lang :: tr
{ 'save' })
104 if ( $qossettings { 'VALID' } eq 'yes' ) {
105 open ( FILE
, ">> $classfile " ) or die "Unable to write $classfile " ;
107 $qossettings {'DEVICE'}; $qossettings {'CLASS'}; $qossettings {'PRIO'}; $qossettings {'MINBWDTH'}; $qossettings {'MAXBWDTH'}; $qossettings {'BURST'}; $qossettings {'CBURST'};
112 $qossettings { 'ACTION' } = 'Parentklasse hinzufuegen' ;
115 elsif ( $qossettings { 'DOCLASS' } eq 'Bearbeiten' )
117 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
120 open ( FILE
, "> $classfile " ) or die "Unable to write $classfile " ;
121 foreach $classentry ( sort @classes )
123 @classline = split ( /\;/ , $classentry );
124 if ( $classline [ 1 ] ne $qossettings { 'CLASS' } ) {
125 print FILE
$classentry ;
127 $qossettings { 'DEVICE' } = $classline [ 0 ];
128 $qossettings { 'PRIO' } = $classline [ 2 ];
129 $qossettings { 'MINBWDTH' } = $classline [ 3 ];
130 $qossettings { 'MAXBWDTH' } = $classline [ 4 ];
131 $qossettings { 'BURST' } = $classline [ 5 ];
132 $qossettings { 'CBURST' } = $classline [ 6 ];
133 $qossettings { 'EDIT' } = 'yes' ;
138 & Header
:: closebigbox
();
139 & Header
:: closepage
();
142 elsif ( $qossettings { 'DOCLASS' } eq 'Loeschen' )
144 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
147 open ( FILE
, "> $classfile " ) or die "Unable to write $classfile " ;
148 foreach $classentry ( sort @tmp )
150 @tmpline = split ( /\;/ , $classentry );
151 if ( $tmpline [ 1 ] ne $qossettings { 'CLASS' } )
153 print FILE
$classentry ;
157 open ( FILE
, "< $subclassfile " ) or die "Unable to read $classfile " ;
160 open ( FILE
, "> $subclassfile " ) or die "Unable to write $classfile " ;
161 foreach $subclassentry ( sort @tmp )
163 @tmpline = split ( /\;/ , $subclassentry );
164 if ( $tmpline [ 1 ] ne $qossettings { 'CLASS' } )
166 print FILE
$subclassentry ;
170 $message = "Klasse $qossettings {'CLASS'} wurde mit eventuell vorhandenen Unterklassen geloescht." ;
173 ############################################################################################################################
174 ############################################################################################################################
176 if ( $qossettings { 'DOSCLASS' } eq $Lang :: tr
{ 'save' })
178 if ( $qossettings { 'SCLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
179 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
180 } elsif ( $qossettings { 'SCLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
181 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
185 if ( $qossettings { 'VALID' } eq 'yes' ) {
186 open ( FILE
, ">> $subclassfile " ) or die "Unable to write $subclassfile " ;
188 $qossettings {'DEVICE'}; $qossettings {'CLASS'}; $qossettings {'SCLASS'}; $qossettings {'PRIO'}; $qossettings {'MINBWDTH'}; $qossettings {'MAXBWDTH'}; $qossettings {'BURST'}; $qossettings {'CBURST'};
193 $qossettings { 'ACTION' } = 'Unterklasse hinzufuegen' ;
195 } elsif ( $qossettings { 'DOSCLASS' } eq 'Loeschen' )
197 open ( FILE
, "< $subclassfile " ) or die "Unable to read $classfile " ;
200 open ( FILE
, "> $subclassfile " ) or die "Unable to write $classfile " ;
201 foreach $subclassentry ( sort @tmp )
203 @tmpline = split ( /\;/ , $subclassentry );
204 if ( $tmpline [ 2 ] ne $qossettings { 'CLASS' } )
206 print FILE
$subclassentry ;
210 $message = "Unterklasse $qossettings {'CLASS'} wurde geloescht." ;
213 ############################################################################################################################
214 ############################################################################################################################
216 if ( $qossettings { 'DOLEVEL7' } eq $Lang :: tr
{ 'save' })
218 if ( $qossettings { 'QIP' } ne '' ) {
219 unless ( & General
:: validip
( $qossettings { 'QIP' }) ) {
220 $qossettings { 'VALID' } = 'no' ;
221 $message = "Die Quell-IP-Adresse ist ungueltig." ;
224 if ( $qossettings { 'DIP' } ne '' ) {
225 unless ( & General
:: validip
( $qossettings { 'DIP' }) ) {
226 $qossettings { 'VALID' } = 'no' ;
227 $message = "Die Ziel-IP-Adresse ist ungueltig." ;
230 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
231 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
232 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
233 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
234 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
235 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
236 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
237 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
239 if ( $qossettings { 'VALID' } eq 'yes' ) {
240 open ( FILE
, ">> $level7file " ) or die "Unable to write $level7file " ;
242 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'L7PROT'}; $qossettings {'QIP'}; $qossettings {'DIP'};
247 $qossettings { 'ACTION' } = 'Level7-Regel hinzufuegen' ;
250 elsif ( $qossettings { 'DOLEVEL7' } eq 'Loeschen' )
252 open ( FILE
, "< $level7file " ) or die "Unable to read $level7file " ;
255 open ( FILE
, "> $level7file " ) or die "Unable to read $level7file " ;
256 foreach $l7ruleentry ( sort @l7rules )
258 @l7ruleline = split ( /\;/ , $l7ruleentry );
259 if ( ( $l7ruleline [ 0 ] ne $qossettings { 'CLASS' }) && ( $l7ruleline [ 2 ] ne $qossettings { 'L7PROT' }))
261 print FILE
$l7ruleentry ;
265 $message = "Level7-Regel ( $qossettings {'CLASS'} - $qossettings {'L7PROT'}) wurde geloescht." ;
268 ############################################################################################################################
269 ############################################################################################################################
271 if ( $qossettings { 'DOPORT' } eq $Lang :: tr
{ 'save' })
273 if ( $qossettings { 'QIP' } ne '' ) {
274 unless ( & General
:: validip
( $qossettings { 'QIP' }) ) {
275 $qossettings { 'VALID' } = 'no' ;
276 $message = "Die Quell-IP-Adresse ist ungueltig." ;
279 if ( $qossettings { 'DIP' } ne '' ) {
280 unless ( & General
:: validip
( $qossettings { 'DIP' }) ) {
281 $qossettings { 'VALID' } = 'no' ;
282 $message = "Die Ziel-IP-Adresse ist ungueltig." ;
285 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
286 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
287 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
288 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
289 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
290 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
291 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
292 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
294 if ( $qossettings { 'VALID' } eq 'yes' ) {
295 open ( FILE
, ">> $portfile " ) or die "Unable to write $portfile " ;
297 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'PPROT'}; $qossettings {'QIP'}; $qossettings {'QPORT'}; $qossettings {'DIP'}; $qossettings {'DPORT'};
302 $qossettings { 'ACTION' } = 'Port-Regel hinzufuegen' ;
304 } elsif ( $qossettings { 'DOPORT' } eq 'Loeschen' )
306 open ( FILE
, "< $portfile " ) or die "Unable to read $portfile " ;
309 open ( FILE
, "> $portfile " ) or die "Unable to read $portfile " ;
310 foreach $portruleentry ( sort @portrules )
312 @portruleline = split ( /\;/ , $portruleentry );
313 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' }))
315 print FILE
$portruleentry ;
319 $message = "Port-Regel ( $qossettings {'CLASS'} - $qossettings {'PPROT'}) wurde geloescht." ;
322 ############################################################################################################################
323 ############################################################################################################################
325 if ( $qossettings { 'ACTION' } eq 'Start' )
327 system ( "sleep 1 && /usr/bin/perl /var/ipfire/qos/bin/makeqosscripts.pl > /var/ipfire/qos/bin/qos.sh &" );
328 system ( "/bin/touch /var/ipfire/qos/enable" );
329 system ( "sleep 2 && /usr/local/bin/qosctrl start >/dev/null 2>&1" );
330 system ( "logger -t ipfire 'QoS started'" );
331 $qossettings { 'ENABLED' } = 'on' ;
332 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
334 elsif ( $qossettings { 'ACTION' } eq 'Stop' )
336 system ( "/usr/local/bin/qosctrl stop >/dev/null 2>&1" );
337 unlink "/var/ipfire/qos/bin/qos.sh" ;
338 unlink "/var/ipfire/qos/enable" ;
339 system ( "logger -t ipfire 'QoS stopped'" );
340 $qossettings { 'ENABLED' } = 'off' ;
341 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
343 elsif ( $qossettings { 'ACTION' } eq 'Neustart' )
345 if ( $qossettings { 'ENABLED' } eq 'on' ){
346 system ( "/usr/local/bin/qosctrl stop >/dev/null 2>&1" );
347 system ( "sleep 1 && /usr/bin/perl /var/ipfire/qos/bin/makeqosscripts.pl > /var/ipfire/qos/bin/qos.sh &" );
348 system ( "sleep 5 && /usr/local/bin/qosctrl start >/dev/null 2>&1" );
349 system ( "logger -t ipfire 'QoS restarted'" );
352 elsif ( $qossettings { 'ACTION' } eq $Lang :: tr
{ 'save' })
354 if ( $qossettings { 'DEF_INC_SPD' } eq '' ) {
355 $qossettings { 'DEF_INC_SPD' } = int ( $qossettings { 'INC_SPD' } * 0.9 );
357 if ( $qossettings { 'DEF_OUT_SPD' } eq '' ) {
358 $qossettings { 'DEF_OUT_SPD' } = int ( $qossettings { 'OUT_SPD' } * 0.9 );
360 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
362 elsif ( $qossettings { 'ACTION' } eq 'Statusinformationen' )
364 & Header
:: openbox
( '100%' , 'left' , 'QoS Status' );
365 if ( $qossettings { 'ENABLED' } eq 'on' ){
367 $output = `/usr/local/bin/qosctrl status` ;
368 $output = & Header
:: cleanhtml
( $output , "y" );
369 print "<pre> $output </pre> \n " ;
370 } else { print "QoS ist nicht aktiviert!" ; }
372 & Header
:: closebigbox
();
373 & Header
:: closepage
();
376 elsif ( $qossettings { 'ACTION' } eq 'Parentklasse hinzufuegen' )
379 & Header
:: closebigbox
();
380 & Header
:: closepage
();
383 elsif ( $qossettings { 'ACTION' } eq 'Unterklasse hinzufuegen' )
386 & Header
:: closebigbox
();
387 & Header
:: closepage
();
390 elsif ( $qossettings { 'ACTION' } eq 'Level7-Regel hinzufuegen' )
393 & Header
:: closebigbox
();
394 & Header
:: closepage
();
397 elsif ( $qossettings { 'ACTION' } eq 'Port-Regel hinzufuegen' )
400 & Header
:: closebigbox
();
401 & Header
:: closepage
();
404 elsif ( $qossettings { 'ACTION' } eq 'Erweiterte Einstellungen' )
407 & Header
:: closebigbox
();
408 & Header
:: closepage
();
411 if ( $qossettings { 'ACTIONBW' } eq 'Andern' )
414 & Header
:: closebigbox
();
415 & Header
:: closepage
();
418 if ( $qossettings { 'ACTIONDEF' } eq 'Andern' )
421 & Header
:: closebigbox
();
422 & Header
:: closepage
();
426 & General
:: readhash
( "${General::swroot}/qos/settings" , \
%qossettings );
428 my $status = $Lang :: tr
{ 'stopped' };
429 my $statuscolor = '#993333' ;
430 if ( $qossettings { 'ENABLED' } eq 'on' ) {
431 $status = $Lang :: tr
{ 'running' };
432 $statuscolor = '#339933' ;
435 if ( $netsettings { 'RED_TYPE' } ne 'PPPOE' ) {
436 $qossettings { 'RED_DEV' } = $netsettings { 'RED_DEV' };
440 & Header
:: openbox
( '100%' , 'left' , $Lang :: tr
{ 'error messages' });
441 print "<class name='base'> $errormessage \n " ;
442 print " </class> \n " ;
446 ############################################################################################################################
447 ############################################################################################################################
449 & Header
:: openbox
( '100%' , 'center' , 'Quality of Service' );
451 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
455 if ( $message ne "" ) {
456 print "<tr><td colspan='2' align='center'><font color='red'> $message </font>" ;
459 <tr><td width='50%' align='left'><b>Quality of Service:</b>
460 <td width='50%' align='center' bgcolor=' $statuscolor '><font color='white'> $status </font>
461 <tr><td width='100%' align='center' colspan='2'>
462 <input type='submit' name='ACTION' value='Start' />
463 <input type='submit' name='ACTION' value='Stop' />
464 <input type='submit' name='ACTION' value=' $Lang ::tr{'restart'}' />
467 if (( $qossettings { 'OUT_SPD' } ne '' ) && ( $qossettings { 'INC_SPD' } ne '' )) {
469 <tr><td colspan='3'>
470 <tr><td width='40%' align='right'>Downloadgeschwindigkeit: <td width='40%' align='left'> $qossettings {'INC_SPD'} kbps
471 <td width='20%' rowspan='2' align='center' valign='middle'><input type='submit' name='ACTIONBW' value='Andern'>
472 <tr><td width='40%' align='right'>Uploadgeschwindigkeit: <td width='40%' align='left'> $qossettings {'OUT_SPD'} kbps
476 if (( $qossettings { 'DEFCLASS_OUT' } ne '' ) && ( $qossettings { 'DEFCLASS_INC' } ne '' )&& ( $qossettings { 'ACK' } ne '' )) {
478 <tr><td colspan='3'><hr>
479 <tr><td width='40%' align='right'>Downloadstandardklasse: <td width='40%' align='left'> $qossettings {'DEFCLASS_INC'}
480 <td width='20%' rowspan='3' align='center' valign='middle'><input type='submit' name='ACTIONDEF' value='Andern'>
481 <tr><td width='40%' align='right'>Uploadstandardklasse: <td width='40%' align='left'> $qossettings {'DEFCLASS_OUT'}
482 <tr><td width='40%' align='right'>ACKs: <td width='40%' align='left'> $qossettings {'ACK'}
483 <tr><td colspan='3' width='100%'><hr>
484 <tr><td colspan='3' width='100%' align='center'><input type='submit' name='ACTION' value='Parentklasse hinzufuegen'><input type='submit' name='ACTION' value='Erweiterte Einstellungen'><input type='submit' name='ACTION' value='Statusinformationen'>
492 if ( ( $qossettings { 'OUT_SPD' } eq '' ) || ( $qossettings { 'INC_SPD' } eq '' ) ) {
495 & Header
:: closebigbox
();
496 & Header
:: closepage
();
500 if ( ( $qossettings { 'DEFCLASS_INC' } eq '' ) || ( $qossettings { 'DEFCLASS_OUT' } eq '' ) || ( $qossettings { 'ACK' } eq '' ) ) {
502 & Header
:: closebigbox
();
503 & Header
:: closepage
();
511 & Header
:: closebigbox
();
512 & Header
:: closepage
();
514 ############################################################################################################################
515 ############################################################################################################################
517 sub changedefclasses
{
518 & Header
:: openbox
( '100%' , 'center' , 'Standardklassen:' );
520 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
522 <tr><td width='100%' colspan='3'>Legen sie hier die Standardklassen fest durch die nicht-gefilterte Pakete gehen.
523 <tr><td width='33%' align='right'>Download:<td width='33%' align='left'><select name='DEFCLASS_INC'>
526 for ( $c = 200 ; $c <= 220 ; $c ++ )
528 if ( $qossettings { 'DEFCLASS_INC' } ne $c )
529 { print "<option value=' $c '> $c </option> \n " ; }
530 else { print "<option selected value=' $c '> $c </option> \n " ; }
533 </select><td width='33%' align='center'>
534 <tr><td width='33%' align='right'>Upload:<td width='33%' align='left'><select name='DEFCLASS_OUT'>
537 for ( $c = 100 ; $c <= 120 ; $c ++ )
539 if ( $qossettings { 'DEFCLASS_OUT' } ne $c )
540 { print "<option value=' $c '> $c </option> \n " ; }
541 else { print "<option selected value=' $c '> $c </option> \n " ; }
544 </select><td width='33%' align='center'>
548 <tr><td width='100%' colspan='3'>Legen sie hier die ACK-Klasse fest <br> und klicken Sie danach auf <i>Speichern</i>.
549 <tr><td width='33%' align='right'>ACKs:<td width='33%' align='left'><select name='ACK'>
552 for ( $c = 100 ; $c <= 120 ; $c ++ )
554 if ( $qossettings { 'ACK' } ne $c )
555 { print "<option value=' $c '> $c </option> \n " ; }
556 else { print "<option selected value=' $c '> $c </option> \n " ; }
559 </select><td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} />
567 sub changebandwidth
{
568 & Header
:: openbox
( '100%' , 'center' , 'Bandbreiteneinstellungen' );
569 if ( $qossettings { 'ENABLED' } eq 'on' ) {
570 print "Sie koennen die Bandbreiteneinstellungen nicht bearbeiten, wenn QoS eingeschaltet ist. Schalten sie es zuerst dazu aus.<p>" ;
571 print "<a href='/cgi-bin/qos.cgi'>Zurueck</a>" ;
574 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
575 <input type='hidden' name='DEF_OUT_SPD' value=''><input type='hidden' name='DEF_INC_SPD' value=''>
577 <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>.
578 <tr><td width='33%' align='right'>Download-Geschwindigkeit:
579 <td width='33%' align='left'><input type='text' name='INC_SPD' maxlength='8' value= $qossettings {'INC_SPD'}> kbps
580 <td width='33%' align='center'>
581 <tr><td width='33%' align='right'>Upload-Geschwindigkeit:
582 <td width='33%' align='left'><input type='text' name='OUT_SPD' maxlength='8' value= $qossettings {'OUT_SPD'}> kbps
583 <td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} /> <input type='reset' name='ACTION' value= $Lang ::tr{'reset'} />
593 & Header
:: openbox
( '100%' , 'center' , 'Parentklasse' );
595 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
599 if ( $message ne "" ) {
600 print "<tr><td colspan='3' align='center'> $message " ;
602 if ( $qossettings { 'EDIT' } eq 'yes' ) {
603 print "<input type='hidden' name='CLASS' value= $qossettings {'CLASS'}>" ;
604 print "<input type='hidden' name='DEVICE' value= $qossettings {'DEVICE'}>" ;
607 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
608 <tr><td width='33%' align='right'>Interface:
609 <td width='33%' align='left'>
612 if ( $qossettings { 'EDIT' } eq 'yes' ) {
613 print "<select name='DEVICE' disabled>" ;
615 print "<select name='DEVICE'>" ;
617 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
618 $qossettings { 'RED_DEV_SEL' } = 'selected' ;
619 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
620 $qossettings { 'IMQ_DEV_SEL' } = 'selected' ;
623 <option value= $qossettings {'RED_DEV'} $qossettings {'RED_DEV_SEL'}> $qossettings {'RED_DEV'}</option>
624 <option value= $qossettings {'IMQ_DEV'} $qossettings {'IMQ_DEV_SEL'}> $qossettings {'IMQ_DEV'}</option></select>
625 <td width='33%' align='center'>
626 <tr><td width='33%' align='right'>Klasse:<td width='33%' align='left'>
629 if ( $qossettings { 'EDIT' } eq 'yes' ) {
630 print "<select name='CLASS' disabled>" ;
632 print "<select name='CLASS'>" ;
634 for ( $c = 100 ; $c <= 120 ; $c ++ )
636 if ( $qossettings { 'CLASS' } ne $c )
637 { print "<option value=' $c '> $c </option> \n " ; }
638 else { print "<option selected value=' $c '> $c </option> \n " ; }
640 for ( $c = 200 ; $c <= 220 ; $c ++ )
642 if ( $qossettings { 'CLASS' } ne $c )
643 { print "<option value=' $c '> $c </option> \n " ; }
644 else { print "<option selected value=' $c '> $c </option> \n " ; }
648 <td width='33%' align='center'>
649 <tr><td width='33%' align='right'>Prioritaet:<td width='33%' align='left'><select name='PRIO'>
652 for ( $c = 1 ; $c <= 7 ; $c ++ )
654 if ( $qossettings { 'PRIO' } ne $c )
655 { print "<option value=' $c '> $c </option> \n " ; }
656 else { print "<option selected value=' $c '> $c </option> \n " ; }
659 <td width='33%' align='center'>
660 <tr><td width='33%' align='right'>Garantierte Bandbreite:
661 <td width='33%' align='left'><input type='text' name='MINBWDTH' maxlength='8' required='1' value= $qossettings {'MINBWDTH'} >
662 <td width='33%' align='center'>
663 <tr><td width='33%' align='right'>Maximale Bandbreite:
664 <td width='33%' align='left'><input type='text' name='MAXBWDTH' maxlength='8' required='1' value= $qossettings {'MAXBWDTH'}>
665 <td width='33%' align='center'>
666 <tr><td width='33%' align='right'>Burst:
667 <td width='33%' align='left'><input type='text' name='BURST' maxlength='8' value= $qossettings {'BURST'}>
668 <td width='33%' align='center'>
669 <tr><td width='33%' align='right'>Ceilburst:
670 <td width='33%' align='left'><input type='text' name='CBURST' maxlength='8' value= $qossettings {'CBURST'}>
671 <td width='33%' align='center'><input type='submit' name='DOCLASS' value= $Lang ::tr{'save'} /> <input type='reset' value= $Lang ::tr{'reset'} />
679 & Header
:: openbox
( '100%' , 'center' , 'Unterklasse' );
681 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
685 if ( $message ne "" ) {
686 print "<tr><td colspan='3' align='center'> $message " ;
689 <tr><td colspan='3' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
690 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
691 <tr><td width='33%' align='right'>Unterklasse:<td width='33%' align='left'><select name='SCLASS'>
694 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
695 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
696 for ( $c = 1000 ; $c <= 1020 ; $c ++ )
698 if ( $qossettings { 'SCLASS' } ne $c )
699 { print "<option value=' $c '> $c </option> \n " ; }
700 else { print "<option selected value=' $c '> $c </option> \n " ; }
702 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
703 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
704 for ( $c = 2000 ; $c <= 2020 ; $c ++ )
706 if ( $qossettings { 'SCLASS' } ne $c )
707 { print "<option value=' $c '> $c </option> \n " ; }
708 else { print "<option selected value=' $c '> $c </option> \n " ; }
713 <td width='33%' align='center'>
714 <tr><td width='33%' align='right'>Prioritaet:<td width='33%' align='left'><select name='PRIO'>
717 for ( $c = 1 ; $c <= 7 ; $c ++ )
719 if ( $qossettings { 'PRIO' } ne $c )
720 { print "<option value=' $c '> $c </option> \n " ; }
721 else { print "<option selected value=' $c '> $c </option> \n " ; }
724 <td width='33%' align='center'>
725 <tr><td width='33%' align='right'>Garantierte Bandbreite:
726 <td width='33%' align='left'><input type='text' name='MINBWDTH' maxlength='8' required='1' value= $qossettings {'MINBWDTH'} >
727 <td width='33%' align='center'>
728 <tr><td width='33%' align='right'>Maximale Bandbreite:
729 <td width='33%' align='left'><input type='text' name='MAXBWDTH' maxlength='8' required='1' value= $qossettings {'MAXBWDTH'}>
730 <td width='33%' align='center'>
731 <tr><td width='33%' align='right'>Burst:
732 <td width='33%' align='left'><input type='text' name='BURST' maxlength='8' value= $qossettings {'BURST'}>
733 <td width='33%' align='center'>
734 <tr><td width='33%' align='right'>Ceilburst:
735 <td width='33%' align='left'><input type='text' name='CBURST' maxlength='8' value= $qossettings {'CBURST'}>
736 <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'} />
744 & Header
:: openbox
( '100%' , 'center' , 'Level7-Regel' );
746 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
750 if ( $message ne "" ) {
751 print "<tr><td colspan='3' align='center'><font color='red'> $message </font>" ;
754 <tr><td colspan='3' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
755 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
756 <tr><td width='33%' align='right'>Protokoll:
757 <td width='33%' align='left'><select name='L7PROT'>
760 opendir ( DIR
, "/etc/l7-protocols/protocols" );
761 foreach $direntry ( sort readdir ( DIR
) )
763 next if $direntry eq "." ;
764 next if $direntry eq ".." ;
765 next if - d
"/etc/l7-protocols/protocols/ $direntry " ;
766 @proto = split ( /\./ , $direntry );
767 if ( $proto [ 0 ] eq $qossettings { 'L7PROT' } ) {
768 print "<option value=' $proto [0]' selected> $proto [0]</option> \n " ;
770 print "<option value=' $proto [0]'> $proto [0]</option> \n " ;
775 </select><td width='33%' align='center'>
776 <tr><td width='33%' align='right'>Quell-IP-Adresse:
777 <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value= $qossettings {'QIP'}>
778 <td width='33%' align='center'>
779 <tr><td width='33%' align='right'>Ziel-IP-Adresse:
780 <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value= $qossettings {'DIP'}>
781 <td width='33%' align='center'><input type='hidden' name='CLASS' value= $qossettings {'CLASS'}><input type='submit' name='DOLEVEL7' value= $Lang ::tr{'save'} />
789 & Header
:: openbox
( '100%' , 'center' , 'Port-Regel hinzufuegen' );
791 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
793 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
794 <tr><td width='33%' align='right'>Protokoll:
795 <td width='33%' align='left'><select name='PPROT'>
798 open ( FILE
, "< /etc/protocols" );
801 foreach $direntry ( sort @proto )
803 @tmpline = split ( /\ / , $direntry );
804 next if $tmpline [ 0 ] =~ "#" ;
805 if ( $tmpline [ 0 ] eq $qossettings { 'PPROT' } ) {
806 print "<option value=' $tmpline [0]' selected> $tmpline [0]</option> \n " ;
808 print "<option value=' $tmpline [0]'> $tmpline [0]</option> \n " ;
812 </select><td width='33%' align='center'>
813 <tr><td width='33%' align='right'>Quell-Port:
814 <td width='33%' align='left'><input type='text' name='QPORT' maxlength='5' value= $qossettings {'QPORT'}>
815 <td width='33%' align='center'>
816 <tr><td width='33%' align='right'>Ziel-Port:
817 <td width='33%' align='left'><input type='text' name='DPORT' maxlength='5' value= $qossettings {'DPORT'}>
818 <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='DOPORT' value= $Lang ::tr{'save'} />
832 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
836 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
837 @subclasses = < FILE
>;
839 & Header
:: openbox
( '100%' , 'center' , 'Klassen' );
841 <table border='0' width='100%' cellspacing='0'>
842 <tr><td bgcolor='lightgrey' width='10%'>Interface
843 <td bgcolor='lightgrey' width='10%'>Klasse
844 <td bgcolor='lightgrey' width='10%'>Prioritaet
845 <td bgcolor='lightgrey' width='10%'>Garantierte Bandbreite
846 <td bgcolor='lightgrey' width='10%'>Maximale Bandbreite
847 <td bgcolor='lightgrey' width='10%'>Burst
848 <td bgcolor='lightgrey' width='10%'>Ceil Burst
849 <td bgcolor='lightgrey' width='30%'>Aktionen
852 foreach $classentry ( sort @classes )
854 @classline = split ( /\;/ , $classentry );
855 if ( $classline [ 0 ] eq $qossettings { 'RED_DEV' } )
858 <tr><td align='center' bgcolor='#EAEAEA'> $classline [0]
859 <td align='center' bgcolor='#EAEAEA'> $classline [1]
860 <td align='center' bgcolor='#EAEAEA'> $classline [2]
861 <td align='center' bgcolor='#EAEAEA'> $classline [3]
862 <td align='center' bgcolor='#EAEAEA'> $classline [4]
863 <td align='center' bgcolor='#EAEAEA'> $classline [5]
864 <td align='center' bgcolor='#EAEAEA'> $classline [6]
865 <td align='right' bgcolor='#EAEAEA'>
866 <table border='0'><tr>
867 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
868 <input type='hidden' name='CLASS' value=' $classline [1]'>
869 <input type='hidden' name='DOCLASS' value='Bearbeiten'>
870 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
872 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
873 <input type='hidden' name='CLASS' value=' $classline [1]'>
874 <input type='hidden' name='ACTION' value='Unterklasse hinzufuegen'>
875 <input type='image' alt='Unterklasse hinzufuegen' src='/images/addblue.gif'>
877 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
878 <input type='hidden' name='CLASS' value=' $classline [1]'>
879 <input type='hidden' name='ACTION' value='Level7-Regel hinzufuegen'>
880 <input type='image' alt='Level7-Regel hinzufuegen' src='/images/addgreen.gif'>
882 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
883 <input type='hidden' name='CLASS' value=' $classline [1]'>
884 <input type='hidden' name='ACTION' value='Port-Regel hinzufuegen'>
885 <input type='image' alt='Port-Regel hinzufuegen' src='/images/add.gif'>
887 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
888 <input type='hidden' name='CLASS' value=' $classline [1]'>
889 <input type='hidden' name='DOCLASS' value='Loeschen'>
890 <input type='image' alt='Loeschen' src='/images/delete.gif'>
895 foreach $subclassentry ( sort @subclasses )
897 @subclassline = split ( /\;/ , $subclassentry );
898 if ( $subclassline [ 1 ] eq $classline [ 1 ] ) {
900 <tr><td align='center' bgcolor='#FFFFFF'>Subklasse:
901 <td align='center' bgcolor='#FAFAFA'> $subclassline [2]
902 <td align='center' bgcolor='#FAFAFA'> $subclassline [3]
903 <td align='center' bgcolor='#FAFAFA'> $subclassline [4]
904 <td align='center' bgcolor='#FAFAFA'> $subclassline [5]
905 <td align='center' bgcolor='#FAFAFA'> $subclassline [6]
906 <td align='center' bgcolor='#FAFAFA'> $subclassline [7]
907 <td align='right' bgcolor='#FAFAFA'>
908 <table border='0'><tr>
909 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
910 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
911 <input type='hidden' name='DOSCLASS' value='Bearbeiten'>
912 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
914 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
915 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
916 <input type='hidden' name='ACTION' value='Level7-Regel hinzufuegen'>
917 <input type='image' alt='Level7-Regel hinzufuegen' src='/images/addgreen.gif'>
919 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
920 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
921 <input type='hidden' name='ACTION' value='Port-Regel hinzufuegen'>
922 <input type='image' alt='Port-Regel hinzufuegen' src='/images/add.gif'>
924 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
925 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
926 <input type='hidden' name='DOSCLASS' value='Loeschen'>
927 <input type='image' alt='Loeschen' src='/images/delete.gif'>
936 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
937 foreach $classentry ( sort @classes )
939 @classline = split ( /\;/ , $classentry );
940 if ( $classline [ 0 ] eq $qossettings { 'IMQ_DEV' } )
943 <tr><td align='center' bgcolor='#EAEAEA'> $classline [0]
944 <td align='center' bgcolor='#EAEAEA'> $classline [1]
945 <td align='center' bgcolor='#EAEAEA'> $classline [2]
946 <td align='center' bgcolor='#EAEAEA'> $classline [3]
947 <td align='center' bgcolor='#EAEAEA'> $classline [4]
948 <td align='center' bgcolor='#EAEAEA'> $classline [5]
949 <td align='center' bgcolor='#EAEAEA'> $classline [6]
950 <td align='right' bgcolor='#EAEAEA'>
951 <table border='0'><tr>
952 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
953 <input type='hidden' name='CLASS' value=' $classline [1]'>
954 <input type='hidden' name='DOCLASS' 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=' $classline [1]'>
959 <input type='hidden' name='ACTION' value='Unterklasse hinzufuegen'>
960 <input type='image' alt='Unterklasse hinzufuegen' src='/images/addblue.gif'>
962 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
963 <input type='hidden' name='CLASS' value=' $classline [1]'>
964 <input type='hidden' name='ACTION' value='Level7-Regel hinzufuegen'>
965 <input type='image' alt='Level7-Regel hinzufuegen' src='/images/addgreen.gif'>
967 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
968 <input type='hidden' name='CLASS' value=' $classline [1]'>
969 <input type='hidden' name='ACTION' value='Port-Regel hinzufuegen'>
970 <input type='image' alt='Port-Regel hinzufuegen' src='/images/add.gif'>
972 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
973 <input type='hidden' name='CLASS' value=' $classline [1]'>
974 <input type='hidden' name='DOCLASS' value='Loeschen'>
975 <input type='image' alt='Loeschen' src='/images/delete.gif'>
980 foreach $subclassentry ( sort @subclasses )
982 @subclassline = split ( /\;/ , $subclassentry );
983 if ( $subclassline [ 1 ] eq $classline [ 1 ] ) {
985 <tr><td align='center' bgcolor='#FFFFFF'>Subklasse:
986 <td align='center' bgcolor='#FAFAFA'> $subclassline [2]
987 <td align='center' bgcolor='#FAFAFA'> $subclassline [3]
988 <td align='center' bgcolor='#FAFAFA'> $subclassline [4]
989 <td align='center' bgcolor='#FAFAFA'> $subclassline [5]
990 <td align='center' bgcolor='#FAFAFA'> $subclassline [6]
991 <td align='center' bgcolor='#FAFAFA'> $subclassline [7]
992 <td align='right' bgcolor='#FAFAFA'>
993 <table border='0'><tr>
994 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
995 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
996 <input type='hidden' name='DOSCLASS' value='Bearbeiten'>
997 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
999 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1000 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1001 <input type='hidden' name='ACTION' value='Level7-Regel hinzufuegen'>
1002 <input type='image' alt='Level7-Regel hinzufuegen' src='/images/addgreen.gif'>
1004 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1005 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1006 <input type='hidden' name='ACTION' value='Port-Regel hinzufuegen'>
1007 <input type='image' alt='Port-Regel hinzufuegen' src='/images/add.gif'>
1009 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1010 <input type='hidden' name='CLASS' value=' $subclassline [2]'>
1011 <input type='hidden' name='DOSCLASS' value='Loeschen'>
1012 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1022 <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
1026 & Header
:: closebox
();
1031 open ( FILE
, "< $level7file " ) or die "Unable to read $level7file " ;
1035 & Header
:: openbox
( '100%' , 'center' , 'Level7-Regeln' );
1037 <table border='0' width='100%' cellspacing='0'>
1038 <tr><td bgcolor='lightgrey' width='14%'>Interface
1039 <td bgcolor='lightgrey' width='14%'>Klasse
1040 <td bgcolor='lightgrey' width='14%'>Protokoll
1041 <td bgcolor='lightgrey' width='14%'>Quell-IP-Adresse
1042 <td bgcolor='lightgrey' width='14%'>Ziel-IP-Adresse
1043 <td bgcolor='lightgrey' width='30%'>Aktionen
1046 foreach $l7ruleentry ( sort @l7rules )
1048 @l7ruleline = split ( /\;/ , $l7ruleentry );
1049 if ( $l7ruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
1052 <tr><td align='center' bgcolor='#EAEAEA'> $l7ruleline [1]
1053 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [0]
1054 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [2]
1055 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [3]
1056 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [4]
1057 <td align='right' bgcolor='#EAEAEA'>
1058 <table border='0'><tr>
1059 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1060 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1061 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1062 <input type='hidden' name='DOLEVEL7' value='Bearbeiten'>
1063 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1065 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1066 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1067 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1068 <input type='hidden' name='DOLEVEL7' value='Loeschen'>
1069 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1076 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1077 foreach $l7ruleentry ( sort @l7rules )
1079 @l7ruleline = split ( /\;/ , $l7ruleentry );
1080 if ( $l7ruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1083 <tr><td align='center' bgcolor='#EAEAEA'> $l7ruleline [1]
1084 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [0]
1085 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [2]
1086 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [3]
1087 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [4]
1088 <td align='right' bgcolor='#EAEAEA'>
1089 <table border='0'><tr>
1090 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1091 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1092 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1093 <input type='hidden' name='DOLEVEL7' value='Bearbeiten'>
1094 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1096 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1097 <input type='hidden' name='CLASS' value=' $l7ruleline [0]'>
1098 <input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1099 <input type='hidden' name='DOLEVEL7' value='Loeschen'>
1100 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1108 <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
1112 & Header
:: closebox
();
1117 open ( FILE
, "< $portfile " ) or die "Unable to read $portfile " ;
1118 @portrules = < FILE
>;
1121 & Header
:: openbox
( '100%' , 'center' , 'Port-Regeln' );
1123 <table border='0' width='100%' cellspacing='0'>
1124 <tr><td bgcolor='lightgrey' width='10%'>Interface
1125 <td bgcolor='lightgrey' width='10%'>Klasse
1126 <td bgcolor='lightgrey' width='10%'>Protokoll
1127 <td bgcolor='lightgrey' width='10%'>Quell-IP-Adresse
1128 <td bgcolor='lightgrey' width='10%'>Quell-Port
1129 <td bgcolor='lightgrey' width='10%'>Ziel-IP-Adresse
1130 <td bgcolor='lightgrey' width='10%'>Ziel-Port
1131 <td bgcolor='lightgrey' width='30%'>Aktionen
1134 foreach $portruleentry ( sort @portrules )
1136 @portruleline = split ( /\;/ , $portruleentry );
1137 if ( $portruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
1140 <tr><td align='center' bgcolor='#EAEAEA'> $portruleline [1]
1141 <td align='center' bgcolor='#EAEAEA'> $portruleline [0]
1142 <td align='center' bgcolor='#EAEAEA'> $portruleline [2]
1143 <td align='center' bgcolor='#EAEAEA'> $portruleline [3]
1144 <td align='center' bgcolor='#EAEAEA'> $portruleline [4]
1145 <td align='center' bgcolor='#EAEAEA'> $portruleline [5]
1146 <td align='center' bgcolor='#EAEAEA'> $portruleline [6]
1147 <td align='right' bgcolor='#EAEAEA'>
1148 <table border='0'><tr>
1149 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1150 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1151 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1152 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1153 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1154 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1155 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1156 <input type='hidden' name='DOPORT' value='Bearbeiten'>
1157 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1159 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1160 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1161 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1162 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1163 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1164 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1165 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1166 <input type='hidden' name='DOPORT' value='Loeschen'>
1167 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1174 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1175 foreach $portruleentry ( sort @portrules )
1177 @portruleline = split ( /\;/ , $portruleentry );
1178 if ( $portruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1181 <tr><td align='center' bgcolor='#EAEAEA'> $portruleline [1]
1182 <td align='center' bgcolor='#EAEAEA'> $portruleline [0]
1183 <td align='center' bgcolor='#EAEAEA'> $portruleline [2]
1184 <td align='center' bgcolor='#EAEAEA'> $portruleline [3]
1185 <td align='center' bgcolor='#EAEAEA'> $portruleline [4]
1186 <td align='center' bgcolor='#EAEAEA'> $portruleline [5]
1187 <td align='center' bgcolor='#EAEAEA'> $portruleline [6]
1188 <td align='right' bgcolor='#EAEAEA'>
1189 <table border='0'><tr>
1190 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1191 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1192 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1193 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1194 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1195 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1196 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1197 <input type='hidden' name='DOPORT' value='Bearbeiten'>
1198 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
1200 <td><form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1201 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1202 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1203 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1204 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1205 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1206 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1207 <input type='hidden' name='DOPORT' value='Loeschen'>
1208 <input type='image' alt='Loeschen' src='/images/delete.gif'>
1216 <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
1220 & Header
:: closebox
();
1226 & Header
:: openbox
( '100%' , 'center' , 'Expertenoptionen:' );
1228 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1230 <tr><td width='100%' colspan='3'>Diese Einstellungen sollten sie nur veraendern, wenn sie wirklich wissen, was sie tun.
1231 <tr><td width='33%' align='right'>Download-Rate 90\%:<td width='33%' align='left'>
1232 <input type='text' name='DEF_INC_SPD' maxlength='8' required='4' value= $qossettings {'DEF_INC_SPD'}>
1233 <td width='33%' align='center'>
1234 <tr><td width='33%' align='right'>Upload-Rate 90\%:<td width='33%' align='left'>
1235 <input type='text' name='DEF_OUT_SPD' maxlength='8' required='4' value= $qossettings {'DEF_OUT_SPD'}>
1236 <td width='33%' align='center'>
1240 <tr><td width='33%' align='right'>MTU:<td width='33%' align='left'>
1241 <input type='text' name='MTU' maxlength='8' required='4' value= $qossettings {'MTU'}>
1242 <td width='33%' align='center'>Diese Einstellung aendert die MTU nicht global sondern nur fuer das QoS.
1243 <tr><td width='33%' align='right'>Queue Laenge:<td width='33%' align='left'>
1244 <input type='text' name='QLENGTH' maxlength='8' required='2' value= $qossettings {'QLENGTH'}>
1245 <td width='33%' align='center'>
1246 <tr><td width='33%' align='right'>SFQ Perturb:<td width='33%' align='left'>
1247 <input type='text' name='SFQ_PERTUB' maxlength='8' required='1' value= $qossettings {'SFQ_PERTUB'}>
1248 <td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} />
1253 & Header
:: closebox
();
1257 if ( $qossettings { 'VALID' } eq 'yes' ) {
1258 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1259 $qossettings { 'SPD' } = $qossettings { 'OUT_SPD' };
1260 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1261 $qossettings { 'SPD' } = $qossettings { 'INC_SPD' };
1263 unless ( ( $qossettings { 'MINBDWTH' } >= 0 ) && ( $qossettings { 'MINBDWTH' } <= $qossettings { 'SPD' } ) ) {
1264 $qossettings { 'VALID' } = 'no' ;
1265 $message = "Mindestbandbreite ist ungueltig." ;
1267 $qossettings { 'SPD' } = '' ;
1272 if ( $qossettings { 'VALID' } eq 'yes' ) {
1273 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1274 $qossettings { 'SPD' } = $qossettings { 'OUT_SPD' };
1275 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1276 $qossettings { 'SPD' } = $qossettings { 'INC_SPD' };
1278 unless ( ( $qossettings { 'MAXBDWTH' } >= 0 ) && ( $qossettings { 'MAXBDWTH' } >= $qossettings { 'MINBDWTH' }) &&( $qossettings { 'MAXBDWTH' } <= $qossettings { 'SPD' } ) ) {
1279 $qossettings { 'VALID' } = 'no' ;
1280 $message = "Mamimalbandbreite ist ungueltig." ;
1282 $qossettings { 'SPD' } = '' ;
1287 if ( $qossettings { 'VALID' } eq 'yes' ) {
1288 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1289 if ( $qossettings { 'CLASS' } lt 100 || $qossettings { 'CLASS' } ge 121 ) {
1290 $qossettings { 'VALID' } = 'no' ;
1291 $message = "Die Klassennummer passt nicht zum angegebenen Interface." ;
1293 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1294 if ( $qossettings { 'CLASS' } lt 200 || $qossettings { 'CLASS' } ge 221 ) {
1295 $qossettings { 'VALID' } = 'no' ;
1296 $message = "Die Klassennummer passt nicht zum angegebenen Interface." ;
1299 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
1302 foreach $classentry ( sort @tmp )
1304 @tmpline = split ( /\;/ , $classentry );
1305 if ( $tmpline [ 1 ] eq $qossettings { 'CLASS' } )
1307 $qossettings { 'VALID' } = 'no' ;
1308 $message = "Die aktuelle Klasse wird bereits verwendet." ;
1316 if ( $qossettings { 'VALID' } eq 'yes' ) {
1317 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
1320 foreach $subclassentry ( sort @tmp )
1322 @tmpline = split ( /\;/ , $subclassentry );
1323 if ( $tmpline [ 2 ] eq $qossettings { 'SCLASS' } )
1325 $qossettings { 'VALID' } = 'no' ;
1326 $message = "Die aktuelle Klasse wird bereits verwendet." ;