]>
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
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 , '' );
96 <script type="text/javascript">
98 function BorderOn (id) { id.className='btnOn' }
99 function BorderOff(id) { id.className='btnOff' }
102 <style type=text/css>
104 border-right: #D5F0FF 2px Inset;
105 border-top: #D5F0FF 2px Inset;
106 border-left: #D5F0FF 2px Inset;
107 border-bottom: #D5F0FF 2px Inset;
109 text-decoration: None;
110 background-color: #FFFFFF;
113 border-right: #D5F0FF 2px Outset;
114 border-top: #D5F0FF 2px Outset;
115 border-left: #D5F0FF 2px Outset;
116 border-bottom: #D5F0FF 2px Outset;
118 text-decoration: None;
119 background-color: #FFFFFF;
125 & Header
:: openbigbox
( '100%' , 'left' , '' , $errormessage );
127 ############################################################################################################################
128 ############################################################################################################################
130 if ( $qossettings { 'DOCLASS' } eq $Lang :: tr
{ 'save' })
135 if ( $qossettings { 'VALID' } eq 'yes' ) {
136 open ( FILE
, ">> $classfile " ) or die "Unable to write $classfile " ;
138 $qossettings {'DEVICE'}; $qossettings {'CLASS'}; $qossettings {'PRIO'}; $qossettings {'MINBWDTH'}; $qossettings {'MAXBWDTH'}; $qossettings {'BURST'}; $qossettings {'CBURST'};
143 $qossettings { 'ACTION' } = 'Parentklasse hinzufuegen' ;
146 elsif ( $qossettings { 'DOCLASS' } eq 'Bearbeiten' )
148 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
151 open ( FILE
, "> $classfile " ) or die "Unable to write $classfile " ;
152 foreach $classentry ( sort @classes )
154 @classline = split ( /\;/ , $classentry );
155 if ( $classline [ 1 ] ne $qossettings { 'CLASS' } ) {
156 print FILE
$classentry ;
158 $qossettings { 'DEVICE' } = $classline [ 0 ];
159 $qossettings { 'PRIO' } = $classline [ 2 ];
160 $qossettings { 'MINBWDTH' } = $classline [ 3 ];
161 $qossettings { 'MAXBWDTH' } = $classline [ 4 ];
162 $qossettings { 'BURST' } = $classline [ 5 ];
163 $qossettings { 'CBURST' } = $classline [ 6 ];
164 $qossettings { 'EDIT' } = 'yes' ;
169 & Header
:: closebigbox
();
170 & Header
:: closepage
();
173 elsif ( $qossettings { 'DOCLASS' } eq 'Loeschen' )
175 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
178 open ( FILE
, "> $classfile " ) or die "Unable to write $classfile " ;
179 foreach $classentry ( sort @tmp )
181 @tmpline = split ( /\;/ , $classentry );
182 if ( $tmpline [ 1 ] ne $qossettings { 'CLASS' } )
184 print FILE
$classentry ;
188 open ( FILE
, "< $subclassfile " ) or die "Unable to read $classfile " ;
191 open ( FILE
, "> $subclassfile " ) or die "Unable to write $classfile " ;
192 foreach $subclassentry ( sort @tmp )
194 @tmpline = split ( /\;/ , $subclassentry );
195 if ( $tmpline [ 1 ] ne $qossettings { 'CLASS' } )
197 print FILE
$subclassentry ;
201 $message = "Klasse $qossettings {'CLASS'} wurde mit eventuell vorhandenen Unterklassen geloescht." ;
204 ############################################################################################################################
205 ############################################################################################################################
207 if ( $qossettings { 'DOSCLASS' } eq $Lang :: tr
{ 'save' })
209 if ( $qossettings { 'SCLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
210 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
211 } elsif ( $qossettings { 'SCLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
212 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
216 if ( $qossettings { 'VALID' } eq 'yes' ) {
217 open ( FILE
, ">> $subclassfile " ) or die "Unable to write $subclassfile " ;
219 $qossettings {'DEVICE'}; $qossettings {'CLASS'}; $qossettings {'SCLASS'}; $qossettings {'PRIO'}; $qossettings {'MINBWDTH'}; $qossettings {'MAXBWDTH'}; $qossettings {'BURST'}; $qossettings {'CBURST'};
224 $qossettings { 'ACTION' } = 'Unterklasse hinzufuegen' ;
226 } elsif ( $qossettings { 'DOSCLASS' } eq 'Loeschen' )
228 open ( FILE
, "< $subclassfile " ) or die "Unable to read $classfile " ;
231 open ( FILE
, "> $subclassfile " ) or die "Unable to write $classfile " ;
232 foreach $subclassentry ( sort @tmp )
234 @tmpline = split ( /\;/ , $subclassentry );
235 if ( $tmpline [ 2 ] ne $qossettings { 'CLASS' } )
237 print FILE
$subclassentry ;
241 $message = "Unterklasse $qossettings {'CLASS'} wurde geloescht." ;
244 ############################################################################################################################
245 ############################################################################################################################
247 if ( $qossettings { 'DOLEVEL7' } eq $Lang :: tr
{ 'save' })
249 if ( $qossettings { 'QIP' } ne '' ) {
250 unless ( & General
:: validip
( $qossettings { 'QIP' }) ) {
251 $qossettings { 'VALID' } = 'no' ;
252 $message = "Die Quell-IP-Adresse ist ungueltig." ;
255 if ( $qossettings { 'DIP' } ne '' ) {
256 unless ( & General
:: validip
( $qossettings { 'DIP' }) ) {
257 $qossettings { 'VALID' } = 'no' ;
258 $message = "Die Ziel-IP-Adresse ist ungueltig." ;
261 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
262 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
263 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
264 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
265 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
266 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
267 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
268 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
270 if ( $qossettings { 'VALID' } eq 'yes' ) {
271 open ( FILE
, ">> $level7file " ) or die "Unable to write $level7file " ;
273 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'L7PROT'}; $qossettings {'QIP'}; $qossettings {'DIP'};
278 $qossettings { 'ACTION' } = 'Level7-Regel hinzufuegen' ;
281 elsif ( $qossettings { 'DOLEVEL7' } eq 'Loeschen' )
283 open ( FILE
, "< $level7file " ) or die "Unable to read $level7file " ;
286 open ( FILE
, "> $level7file " ) or die "Unable to read $level7file " ;
287 foreach $l7ruleentry ( sort @l7rules )
289 @l7ruleline = split ( /\;/ , $l7ruleentry );
290 if ( ( $l7ruleline [ 0 ] ne $qossettings { 'CLASS' }) && ( $l7ruleline [ 2 ] ne $qossettings { 'L7PROT' }))
292 print FILE
$l7ruleentry ;
296 $message = "Level7-Regel ( $qossettings {'CLASS'} - $qossettings {'L7PROT'}) wurde geloescht." ;
299 ############################################################################################################################
300 ############################################################################################################################
302 if ( $qossettings { 'DOPORT' } eq $Lang :: tr
{ 'save' })
304 if ( $qossettings { 'QIP' } ne '' ) {
305 unless ( & General
:: validip
( $qossettings { 'QIP' }) ) {
306 $qossettings { 'VALID' } = 'no' ;
307 $message = "Die Quell-IP-Adresse ist ungueltig." ;
310 if ( $qossettings { 'DIP' } ne '' ) {
311 unless ( & General
:: validip
( $qossettings { 'DIP' }) ) {
312 $qossettings { 'VALID' } = 'no' ;
313 $message = "Die Ziel-IP-Adresse ist ungueltig." ;
316 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
317 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
318 } elsif ( $qossettings { 'CLASS' } >= 1000 && $qossettings { 'CLASS' } < 1021 ) {
319 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
320 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
321 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
322 } elsif ( $qossettings { 'CLASS' } >= 2000 && $qossettings { 'CLASS' } < 2021 ) {
323 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
325 if ( $qossettings { 'VALID' } eq 'yes' ) {
326 open ( FILE
, ">> $portfile " ) or die "Unable to write $portfile " ;
328 $qossettings {'CLASS'}; $qossettings {'DEVICE'}; $qossettings {'PPROT'}; $qossettings {'QIP'}; $qossettings {'QPORT'}; $qossettings {'DIP'}; $qossettings {'DPORT'};
333 $qossettings { 'ACTION' } = 'Port-Regel hinzufuegen' ;
335 } elsif ( $qossettings { 'DOPORT' } eq 'Loeschen' )
337 open ( FILE
, "< $portfile " ) or die "Unable to read $portfile " ;
340 open ( FILE
, "> $portfile " ) or die "Unable to read $portfile " ;
341 foreach $portruleentry ( sort @portrules )
343 @portruleline = split ( /\;/ , $portruleentry );
344 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' }))
346 print FILE
$portruleentry ;
350 $message = "Port-Regel ( $qossettings {'CLASS'} - $qossettings {'PPROT'}) wurde geloescht." ;
353 ############################################################################################################################
354 ############################################################################################################################
356 if ( $qossettings { 'ACTION' } eq 'Start' )
358 system ( "sleep 2 && /usr/bin/perl /var/ipfire/qos/bin/makeqosscripts.pl > /var/ipfire/qos/bin/qos.sh &" );
359 system ( "/bin/touch /var/ipfire/qos/enable" );
360 $qossettings { 'ENABLED' } = 'on' ;
361 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
363 elsif ( $qossettings { 'ACTION' } eq 'Stop' )
365 unlink "/var/ipfire/qos/bin/qos.sh" ;
366 unlink "/var/ipfire/qos/enable" ;
367 $qossettings { 'ENABLED' } = 'off' ;
368 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
370 elsif ( $qossettings { 'ACTION' } eq 'Neustart' )
372 if ( $qossettings { 'ENABLED' } eq 'on' ){
373 system ( "sleep 2 && /usr/bin/perl /var/ipfire/qos/bin/makeqosscripts.pl > /var/ipfire/qos/bin/qos.sh &" );
376 elsif ( $qossettings { 'ACTION' } eq $Lang :: tr
{ 'save' })
378 if ( $qossettings { 'DEF_INC_SPD' } eq '' ) {
379 $qossettings { 'DEF_INC_SPD' } = int ( $qossettings { 'INC_SPD' } * 0.9 );
381 if ( $qossettings { 'DEF_OUT_SPD' } eq '' ) {
382 $qossettings { 'DEF_OUT_SPD' } = int ( $qossettings { 'OUT_SPD' } * 0.9 );
384 & General
:: writehash
( "${General::swroot}/qos/settings" , \
%qossettings );
386 elsif ( $qossettings { 'ACTION' } eq 'Parentklasse hinzufuegen' )
389 & Header
:: closebigbox
();
390 & Header
:: closepage
();
393 elsif ( $qossettings { 'ACTION' } eq 'Unterklasse hinzufuegen' )
396 & Header
:: closebigbox
();
397 & Header
:: closepage
();
400 elsif ( $qossettings { 'ACTION' } eq 'Level7-Regel hinzufuegen' )
403 & Header
:: closebigbox
();
404 & Header
:: closepage
();
407 elsif ( $qossettings { 'ACTION' } eq 'Port-Regel hinzufuegen' )
410 & Header
:: closebigbox
();
411 & Header
:: closepage
();
414 elsif ( $qossettings { 'ACTION' } eq 'Erweiterte Einstellungen' )
417 & Header
:: closebigbox
();
418 & Header
:: closepage
();
421 if ( $qossettings { 'ACTIONBW' } eq 'Andern' )
424 & Header
:: closebigbox
();
425 & Header
:: closepage
();
428 if ( $qossettings { 'ACTIONDEF' } eq 'Andern' )
431 & Header
:: closebigbox
();
432 & Header
:: closepage
();
436 & General
:: readhash
( "${General::swroot}/qos/settings" , \
%qossettings );
438 my $status = $Lang :: tr
{ 'stopped' };
439 my $statuscolor = '#993333' ;
440 if ( $qossettings { 'ENABLED' } eq 'on' ) {
441 $status = $Lang :: tr
{ 'running' };
442 $statuscolor = '#339933' ;
445 if ( $netsettings { 'RED_TYPE' } ne 'PPPOE' ) {
446 $qossettings { 'RED_DEV' } = $netsettings { 'RED_DEV' };
450 & Header
:: openbox
( '100%' , 'left' , $Lang :: tr
{ 'error messages' });
451 print "<class name='base'> $errormessage \n " ;
452 print " </class> \n " ;
456 ############################################################################################################################
457 ############################################################################################################################
459 & Header
:: openbox
( '100%' , 'center' , 'Quality of Service' );
461 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
465 if ( $message ne "" ) {
466 print "<tr><td colspan='2' align='center'><font color='red'> $message </font>" ;
469 <tr><td width='50%' align='left'><b>Quality of Service:</b>
470 <td width='50%' align='center' bgcolor=' $statuscolor '><font color='white'> $status </font>
471 <tr><td width='100%' align='center' colspan='2'>
472 <input type='submit' name='ACTION' value='Start' />
473 <input type='submit' name='ACTION' value='Stop' />
474 <input type='submit' name='ACTION' value=' $Lang ::tr{'restart'}' />
477 if (( $qossettings { 'OUT_SPD' } ne '' ) && ( $qossettings { 'INC_SPD' } ne '' )) {
479 <tr><td colspan='3'>
480 <tr><td width='40%' align='right'>Downloadgeschwindigkeit: <td width='40%' align='left'> $qossettings {'INC_SPD'} kbps
481 <td width='20%' rowspan='2' align='center' valign='middle'><input type='submit' name='ACTIONBW' value='Andern'>
482 <tr><td width='40%' align='right'>Uploadgeschwindigkeit: <td width='40%' align='left'> $qossettings {'OUT_SPD'} kbps
486 if (( $qossettings { 'DEFCLASS_OUT' } ne '' ) && ( $qossettings { 'DEFCLASS_INC' } ne '' )&& ( $qossettings { 'ACK' } ne '' )) {
488 <tr><td colspan='3'><hr>
489 <tr><td width='40%' align='right'>Downloadstandardklasse: <td width='40%' align='left'> $qossettings {'DEFCLASS_INC'}
490 <td width='20%' rowspan='3' align='center' valign='middle'><input type='submit' name='ACTIONDEF' value='Andern'>
491 <tr><td width='40%' align='right'>Uploadstandardklasse: <td width='40%' align='left'> $qossettings {'DEFCLASS_OUT'}
492 <tr><td width='40%' align='right'>ACKs: <td width='40%' align='left'> $qossettings {'ACK'}
493 <tr><td colspan='3' width='100%'><hr>
494 <tr><td colspan='3' width='100%' align='center'><input type='submit' name='ACTION' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)' value='Parentklasse hinzufuegen'><input type='submit' name='ACTION' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)' value='Erweiterte Einstellungen'>
502 if ( ( $qossettings { 'OUT_SPD' } eq '' ) || ( $qossettings { 'INC_SPD' } eq '' ) ) {
505 & Header
:: closebigbox
();
506 & Header
:: closepage
();
510 if ( ( $qossettings { 'DEFCLASS_INC' } eq '' ) || ( $qossettings { 'DEFCLASS_OUT' } eq '' ) || ( $qossettings { 'ACK' } eq '' ) ) {
512 & Header
:: closebigbox
();
513 & Header
:: closepage
();
521 & Header
:: closebigbox
();
522 & Header
:: closepage
();
524 ############################################################################################################################
525 ############################################################################################################################
527 sub changedefclasses
{
528 & Header
:: openbox
( '100%' , 'center' , 'Standardklassen:' );
530 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
532 <tr><td width='100%' colspan='3'>Legen sie hier die Standardklassen fest durch die nicht-gefilterte Pakete gehen.
533 <tr><td width='33%' align='right'>Download:<td width='33%' align='left'><select name='DEFCLASS_INC'>
536 for ( $c = 200 ; $c <= 220 ; $c ++ )
538 if ( $qossettings { 'DEFCLASS_INC' } ne $c )
539 { print "<option value=' $c '> $c </option> \n " ; }
540 else { print "<option selected value=' $c '> $c </option> \n " ; }
543 </select><td width='33%' align='center'>
544 <tr><td width='33%' align='right'>Upload:<td width='33%' align='left'><select name='DEFCLASS_OUT'>
547 for ( $c = 100 ; $c <= 120 ; $c ++ )
549 if ( $qossettings { 'DEFCLASS_OUT' } ne $c )
550 { print "<option value=' $c '> $c </option> \n " ; }
551 else { print "<option selected value=' $c '> $c </option> \n " ; }
554 </select><td width='33%' align='center'>
558 <tr><td width='100%' colspan='3'>Legen sie hier die ACK-Klasse fest <br> und klicken Sie danach auf <i>Speichern</i>.
559 <tr><td width='33%' align='right'>ACKs:<td width='33%' align='left'><select name='ACK'>
562 for ( $c = 100 ; $c <= 120 ; $c ++ )
564 if ( $qossettings { 'ACK' } ne $c )
565 { print "<option value=' $c '> $c </option> \n " ; }
566 else { print "<option selected value=' $c '> $c </option> \n " ; }
569 </select><td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} />
577 sub changebandwidth
{
578 & Header
:: openbox
( '100%' , 'center' , 'Bandbreiteneinstellungen' );
579 if ( $qossettings { 'ENABLED' } eq 'on' ) {
580 print "Sie koennen die Bandbreiteneinstellungen nicht bearbeiten, wenn QoS eingeschaltet ist. Schalten sie es zuerst dazu aus.<p>" ;
581 print "<a href='/cgi-bin/qos.cgi'>Zurueck</a>" ;
584 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
585 <input type='hidden' name='DEF_OUT_SPD' value=''><input type='hidden' name='DEF_INC_SPD' value=''>
587 <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>.
588 <tr><td width='33%' align='right'>Download-Geschwindigkeit:
589 <td width='33%' align='left'><input type='text' name='INC_SPD' maxlength='8' value= $qossettings {'INC_SPD'}> kbps
590 <td width='33%' align='center'>
591 <tr><td width='33%' align='right'>Upload-Geschwindigkeit:
592 <td width='33%' align='left'><input type='text' name='OUT_SPD' maxlength='8' value= $qossettings {'OUT_SPD'}> kbps
593 <td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} /> <input type='reset' name='ACTION' value= $Lang ::tr{'reset'} />
603 & Header
:: openbox
( '100%' , 'center' , 'Parentklasse' );
605 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
609 if ( $message ne "" ) {
610 print "<tr><td colspan='3' align='center'> $message " ;
612 if ( $qossettings { 'EDIT' } eq 'yes' ) {
613 print "<input type='hidden' name='CLASS' value= $qossettings {'CLASS'}>" ;
614 print "<input type='hidden' name='DEVICE' value= $qossettings {'DEVICE'}>" ;
617 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
618 <tr><td width='33%' align='right'>Interface:
619 <td width='33%' align='left'>
622 if ( $qossettings { 'EDIT' } eq 'yes' ) {
623 print "<select name='DEVICE' disabled>" ;
625 print "<select name='DEVICE'>" ;
627 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
628 $qossettings { 'RED_DEV_SEL' } = 'selected' ;
629 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
630 $qossettings { 'IMQ_DEV_SEL' } = 'selected' ;
633 <option value= $qossettings {'RED_DEV'} $qossettings {'RED_DEV_SEL'}> $qossettings {'RED_DEV'}</option>
634 <option value= $qossettings {'IMQ_DEV'} $qossettings {'IMQ_DEV_SEL'}> $qossettings {'IMQ_DEV'}</option></select>
635 <td width='33%' align='center'>
636 <tr><td width='33%' align='right'>Klasse:<td width='33%' align='left'>
639 if ( $qossettings { 'EDIT' } eq 'yes' ) {
640 print "<select name='CLASS' disabled>" ;
642 print "<select name='CLASS'>" ;
644 for ( $c = 100 ; $c <= 120 ; $c ++ )
646 if ( $qossettings { 'CLASS' } ne $c )
647 { print "<option value=' $c '> $c </option> \n " ; }
648 else { print "<option selected value=' $c '> $c </option> \n " ; }
650 for ( $c = 200 ; $c <= 220 ; $c ++ )
652 if ( $qossettings { 'CLASS' } ne $c )
653 { print "<option value=' $c '> $c </option> \n " ; }
654 else { print "<option selected value=' $c '> $c </option> \n " ; }
658 <td width='33%' align='center'>
659 <tr><td width='33%' align='right'>Prioritaet:<td width='33%' align='left'><select name='PRIO'>
662 for ( $c = 1 ; $c <= 7 ; $c ++ )
664 if ( $qossettings { 'PRIO' } ne $c )
665 { print "<option value=' $c '> $c </option> \n " ; }
666 else { print "<option selected value=' $c '> $c </option> \n " ; }
669 <td width='33%' align='center'>
670 <tr><td width='33%' align='right'>Garantierte Bandbreite:
671 <td width='33%' align='left'><input type='text' name='MINBWDTH' maxlength='8' required='1' value= $qossettings {'MINBWDTH'} >
672 <td width='33%' align='center'>
673 <tr><td width='33%' align='right'>Maximale Bandbreite:
674 <td width='33%' align='left'><input type='text' name='MAXBWDTH' maxlength='8' required='1' value= $qossettings {'MAXBWDTH'}>
675 <td width='33%' align='center'>
676 <tr><td width='33%' align='right'>Burst:
677 <td width='33%' align='left'><input type='text' name='BURST' maxlength='8' value= $qossettings {'BURST'}>
678 <td width='33%' align='center'>
679 <tr><td width='33%' align='right'>Ceilburst:
680 <td width='33%' align='left'><input type='text' name='CBURST' maxlength='8' value= $qossettings {'CBURST'}>
681 <td width='33%' align='center'><input type='submit' name='DOCLASS' value= $Lang ::tr{'save'} /> <input type='reset' value= $Lang ::tr{'reset'} />
689 & Header
:: openbox
( '100%' , 'center' , 'Unterklasse' );
691 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
695 if ( $message ne "" ) {
696 print "<tr><td colspan='3' align='center'> $message " ;
699 <tr><td colspan='3' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
700 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
701 <tr><td width='33%' align='right'>Unterklasse:<td width='33%' align='left'><select name='SCLASS'>
704 if ( $qossettings { 'CLASS' } >= 100 && $qossettings { 'CLASS' } < 121 ) {
705 $qossettings { 'DEVICE' } = $qossettings { 'RED_DEV' };
706 for ( $c = 1000 ; $c <= 1020 ; $c ++ )
708 if ( $qossettings { 'SCLASS' } ne $c )
709 { print "<option value=' $c '> $c </option> \n " ; }
710 else { print "<option selected value=' $c '> $c </option> \n " ; }
712 } elsif ( $qossettings { 'CLASS' } >= 200 && $qossettings { 'CLASS' } < 221 ) {
713 $qossettings { 'DEVICE' } = $qossettings { 'IMQ_DEV' };
714 for ( $c = 2000 ; $c <= 2020 ; $c ++ )
716 if ( $qossettings { 'SCLASS' } ne $c )
717 { print "<option value=' $c '> $c </option> \n " ; }
718 else { print "<option selected value=' $c '> $c </option> \n " ; }
723 <td width='33%' align='center'>
724 <tr><td width='33%' align='right'>Prioritaet:<td width='33%' align='left'><select name='PRIO'>
727 for ( $c = 1 ; $c <= 7 ; $c ++ )
729 if ( $qossettings { 'PRIO' } ne $c )
730 { print "<option value=' $c '> $c </option> \n " ; }
731 else { print "<option selected value=' $c '> $c </option> \n " ; }
734 <td width='33%' align='center'>
735 <tr><td width='33%' align='right'>Garantierte Bandbreite:
736 <td width='33%' align='left'><input type='text' name='MINBWDTH' maxlength='8' required='1' value= $qossettings {'MINBWDTH'} >
737 <td width='33%' align='center'>
738 <tr><td width='33%' align='right'>Maximale Bandbreite:
739 <td width='33%' align='left'><input type='text' name='MAXBWDTH' maxlength='8' required='1' value= $qossettings {'MAXBWDTH'}>
740 <td width='33%' align='center'>
741 <tr><td width='33%' align='right'>Burst:
742 <td width='33%' align='left'><input type='text' name='BURST' maxlength='8' value= $qossettings {'BURST'}>
743 <td width='33%' align='center'>
744 <tr><td width='33%' align='right'>Ceilburst:
745 <td width='33%' align='left'><input type='text' name='CBURST' maxlength='8' value= $qossettings {'CBURST'}>
746 <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'} />
754 & Header
:: openbox
( '100%' , 'center' , 'Level7-Regel' );
756 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
760 if ( $message ne "" ) {
761 print "<tr><td colspan='3' align='center'><font color='red'> $message </font>" ;
764 <tr><td colspan='3' width='100%'>Aktuelle Klasse: $qossettings {'CLASS'}
765 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
766 <tr><td width='33%' align='right'>Protokoll:
767 <td width='33%' align='left'><select name='L7PROT'>
770 opendir ( DIR
, "/etc/l7-protocols/protocols" );
771 foreach $direntry ( sort readdir ( DIR
) )
773 next if $direntry eq "." ;
774 next if $direntry eq ".." ;
775 next if - d
"/etc/l7-protocols/protocols/ $direntry " ;
776 @proto = split ( /\./ , $direntry );
777 if ( $proto [ 0 ] eq $qossettings { 'L7PROT' } ) {
778 print "<option value=' $proto [0]' selected> $proto [0]</option> \n " ;
780 print "<option value=' $proto [0]'> $proto [0]</option> \n " ;
785 </select><td width='33%' align='center'>
786 <tr><td width='33%' align='right'>Quell-IP-Adresse:
787 <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value= $qossettings {'QIP'}>
788 <td width='33%' align='center'>
789 <tr><td width='33%' align='right'>Ziel-IP-Adresse:
790 <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value= $qossettings {'DIP'}>
791 <td width='33%' align='center'><input type='hidden' name='CLASS' value= $qossettings {'CLASS'}><input type='submit' name='DOLEVEL7' value= $Lang ::tr{'save'} />
799 & Header
:: openbox
( '100%' , 'center' , 'Port-Regel hinzufuegen' );
801 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
803 <tr><td width='100%' colspan='3'>Geben sie die Daten ein <br> und klicken Sie danach auf <i>Speichern</i>.
804 <tr><td width='33%' align='right'>Protokoll:
805 <td width='33%' align='left'><select name='PPROT'>
808 open ( FILE
, "< /etc/protocols" );
811 foreach $direntry ( sort @proto )
813 @tmpline = split ( /\ / , $direntry );
814 next if $tmpline [ 0 ] =~ "#" ;
815 if ( $tmpline [ 0 ] eq $qossettings { 'PPROT' } ) {
816 print "<option value=' $tmpline [0]' selected> $tmpline [0]</option> \n " ;
818 print "<option value=' $tmpline [0]'> $tmpline [0]</option> \n " ;
822 </select><td width='33%' align='center'>
823 <tr><td width='33%' align='right'>Quell-Port:
824 <td width='33%' align='left'><input type='text' name='QPORT' maxlength='5' value= $qossettings {'QPORT'}>
825 <td width='33%' align='center'>
826 <tr><td width='33%' align='right'>Ziel-Port:
827 <td width='33%' align='left'><input type='text' name='DPORT' maxlength='5' value= $qossettings {'DPORT'}>
828 <td width='33%' align='center'>
829 <tr><td width='33%' align='right'>Quell-IP-Adresse:
830 <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value= $qossettings {'QIP'}>
831 <td width='33%' align='center'>
832 <tr><td width='33%' align='right'>Ziel-IP-Adresse:
833 <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value= $qossettings {'DIP'}>
834 <td width='33%' align='center'><input type='hidden' name='CLASS' value=' $qossettings {'CLASS'}'><input type='submit' name='DOPORT' value= $Lang ::tr{'save'} />
842 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
846 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
847 @subclasses = < FILE
>;
849 & Header
:: openbox
( '100%' , 'center' , 'Klassen' );
851 <table border='0' width='100%' cellspacing='0'>
852 <tr><td bgcolor='lightgrey' width='10%'>Interface
853 <td bgcolor='lightgrey' width='10%'>Klasse
854 <td bgcolor='lightgrey' width='10%'>Prioritaet
855 <td bgcolor='lightgrey' width='10%'>Garantierte Bandbreite
856 <td bgcolor='lightgrey' width='10%'>Maximale Bandbreite
857 <td bgcolor='lightgrey' width='10%'>Burst
858 <td bgcolor='lightgrey' width='10%'>Ceil Burst
859 <td bgcolor='lightgrey' width='30%'>Aktionen
862 foreach $classentry ( sort @classes )
864 @classline = split ( /\;/ , $classentry );
865 if ( $classline [ 0 ] eq $qossettings { 'RED_DEV' } )
868 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
869 <tr><td align='center' bgcolor='#EAEAEA'> $classline [0]
870 <td align='center' bgcolor='#EAEAEA'> $classline [1]
871 <td align='center' bgcolor='#EAEAEA'> $classline [2]
872 <td align='center' bgcolor='#EAEAEA'> $classline [3]
873 <td align='center' bgcolor='#EAEAEA'> $classline [4]
874 <td align='center' bgcolor='#EAEAEA'> $classline [5]
875 <td align='center' bgcolor='#EAEAEA'> $classline [6]
876 <td align='right' bgcolor='#EAEAEA'><input type='hidden' name='CLASS' value=' $classline [1]'>
877 <button type='submit' name='DOCLASS' value='Bearbeiten' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/edit.gif' width="20" height="20" alt="Klasse bearbeiten"></button>
878 <button type='submit' name='ACTION' value='Unterklasse hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/addblue.gif' width="20" height="20" alt="Unterklasse hinzufuegen"></button>
879 <button type='submit' name='ACTION' value='Level7-Regel hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/addgreen.gif' width="20" height="20" alt="Level7-Regel hinzufuegen"></button>
880 <button type='submit' name='ACTION' value='Port-Regel hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/add.gif' width="20" height="20" alt="Port-Regel hinzufuegen"></button>
881 <button type='submit' name='DOCLASS' value='Loeschen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/delete.gif' width="20" height="20" alt="Klasse loeschen"></button>
885 foreach $subclassentry ( sort @subclasses )
887 @subclassline = split ( /\;/ , $subclassentry );
888 if ( $subclassline [ 1 ] eq $classline [ 1 ] ) {
890 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
891 <tr><td align='center' bgcolor='#FFFFFF'>Subklasse:
892 <td align='center' bgcolor='#FAFAFA'> $subclassline [2]
893 <td align='center' bgcolor='#FAFAFA'> $subclassline [3]
894 <td align='center' bgcolor='#FAFAFA'> $subclassline [4]
895 <td align='center' bgcolor='#FAFAFA'> $subclassline [5]
896 <td align='center' bgcolor='#FAFAFA'> $subclassline [6]
897 <td align='center' bgcolor='#FAFAFA'> $subclassline [7]
898 <td align='right' bgcolor='#FAFAFA'><input type='hidden' name='CLASS' value=' $subclassline [2]'>
899 <button type='submit' name='DOSCLASS' value='Bearbeiten' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/edit.gif' width="20" height="20" alt="Klasse bearbeiten"></button>
900 <button type='submit' name='ACTION' value='Level7-Regel hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/addgreen.gif' width="20" height="20" alt="Level7-Regel hinzufuegen"></button>
901 <button type='submit' name='ACTION' value='Port-Regel hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/add.gif' width="20" height="20" alt="Port-Regel hinzufuegen"></button>
902 <button type='submit' name='DOSCLASS' value='Loeschen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/delete.gif' width="20" height="20" alt="Klasse loeschen"></button>
910 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
911 foreach $classentry ( sort @classes )
913 @classline = split ( /\;/ , $classentry );
914 if ( $classline [ 0 ] eq $qossettings { 'IMQ_DEV' } )
917 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
918 <tr><td align='center' bgcolor='#EAEAEA'> $classline [0]
919 <td align='center' bgcolor='#EAEAEA'> $classline [1]
920 <td align='center' bgcolor='#EAEAEA'> $classline [2]
921 <td align='center' bgcolor='#EAEAEA'> $classline [3]
922 <td align='center' bgcolor='#EAEAEA'> $classline [4]
923 <td align='center' bgcolor='#EAEAEA'> $classline [5]
924 <td align='center' bgcolor='#EAEAEA'> $classline [6]
925 <td align='right' bgcolor='#EAEAEA'><input type='hidden' name='CLASS' value=' $classline [1]'>
926 <button type='submit' name='DOCLASS' value='Bearbeiten' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/edit.gif' width="20" height="20" alt="Klasse bearbeiten"></button>
927 <button type='submit' name='ACTION' value='Unterklasse hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/addblue.gif' width="20" height="20" alt="Unterklasse hinzufuegen"></button>
928 <button type='submit' name='ACTION' value='Level7-Regel hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/addgreen.gif' width="20" height="20" alt="Level7-Regel hinzufuegen"></button>
929 <button type='submit' name='ACTION' value='Port-Regel hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/add.gif' width="20" height="20" alt="Port-Regel hinzufuegen"></button>
930 <button type='submit' name='DOCLASS' value='Loeschen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/delete.gif' width="20" height="20" alt="Klasse loeschen"></button>
934 foreach $subclassentry ( sort @subclasses )
936 @subclassline = split ( /\;/ , $subclassentry );
937 if ( $subclassline [ 1 ] eq $classline [ 1 ] ) {
939 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
940 <tr><td align='center' bgcolor='#FFFFFF'>Subklasse:
941 <td align='center' bgcolor='#FAFAFA'> $subclassline [2]
942 <td align='center' bgcolor='#FAFAFA'> $subclassline [3]
943 <td align='center' bgcolor='#FAFAFA'> $subclassline [4]
944 <td align='center' bgcolor='#FAFAFA'> $subclassline [5]
945 <td align='center' bgcolor='#FAFAFA'> $subclassline [6]
946 <td align='center' bgcolor='#FAFAFA'> $subclassline [7]
947 <td align='right' bgcolor='#FAFAFA'><input type='hidden' name='CLASS' value=' $subclassline [2]'>
948 <button type='submit' name='DOSCLASS' value='Bearbeiten' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/edit.gif' width="20" height="20" alt="Klasse bearbeiten"></button>
949 <button type='submit' name='ACTION' value='Level7-Regel hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/addgreen.gif' width="20" height="20" alt="Level7-Regel hinzufuegen"></button>
950 <button type='submit' name='ACTION' value='Port-Regel hinzufuegen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/add.gif' width="20" height="20" alt="Port-Regel hinzufuegen"></button>
951 <button type='submit' name='DOSCLASS' value='Loeschen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/delete.gif' width="20" height="20" alt="Klasse loeschen"></button>
960 <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
969 open ( FILE
, "< $level7file " ) or die "Unable to read $level7file " ;
973 & Header
:: openbox
( '100%' , 'center' , 'Level7-Regeln' );
975 <table border='0' width='100%' cellspacing='0'>
976 <tr><td bgcolor='lightgrey' width='14%'>Interface
977 <td bgcolor='lightgrey' width='14%'>Klasse
978 <td bgcolor='lightgrey' width='14%'>Protokoll
979 <td bgcolor='lightgrey' width='14%'>Quell-IP-Adresse
980 <td bgcolor='lightgrey' width='14%'>Ziel-IP-Adresse
981 <td bgcolor='lightgrey' width='30%'>Aktionen
984 foreach $l7ruleentry ( sort @l7rules )
986 @l7ruleline = split ( /\;/ , $l7ruleentry );
987 if ( $l7ruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
990 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
991 <tr><td align='center' bgcolor='#EAEAEA'> $l7ruleline [1]
992 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [0]
993 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [2]
994 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [3]
995 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [4]
996 <td align='right' bgcolor='#EAEAEA'><input type='hidden' name='CLASS' value=' $l7ruleline [0]'><input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
997 <button type='submit' name='DOLEVEL7' value='Bearbeiten' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/edit.gif' width="20" height="20" alt="Klasse bearbeiten"></button>
998 <button type='submit' name='DOLEVEL7' value='Loeschen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/delete.gif' width="20" height="20" alt="Klasse loeschen"></button>
1004 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1005 foreach $l7ruleentry ( sort @l7rules )
1007 @l7ruleline = split ( /\;/ , $l7ruleentry );
1008 if ( $l7ruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1011 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1012 <tr><td align='center' bgcolor='#EAEAEA'> $l7ruleline [1]
1013 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [0]
1014 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [2]
1015 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [3]
1016 <td align='center' bgcolor='#EAEAEA'> $l7ruleline [4]
1017 <td align='right' bgcolor='#EAEAEA'><input type='hidden' name='CLASS' value=' $l7ruleline [0]'><input type='hidden' name='L7PROT' value=' $l7ruleline [2]'>
1018 <button type='submit' name='DOLEVEL7' value='Bearbeiten' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/edit.gif' width="20" height="20" alt="Klasse bearbeiten"></button>
1019 <button type='submit' name='DOLEVEL7' value='Loeschen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/delete.gif' width="20" height="20" alt="Klasse loeschen"></button>
1026 <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
1030 & Header
:: closebox
();
1035 open ( FILE
, "< $portfile " ) or die "Unable to read $portfile " ;
1036 @portrules = < FILE
>;
1039 & Header
:: openbox
( '100%' , 'center' , 'Port-Regeln' );
1041 <table border='0' width='100%' cellspacing='0'>
1042 <tr><td bgcolor='lightgrey' width='10%'>Interface
1043 <td bgcolor='lightgrey' width='10%'>Klasse
1044 <td bgcolor='lightgrey' width='10%'>Protokoll
1045 <td bgcolor='lightgrey' width='10%'>Quell-IP-Adresse
1046 <td bgcolor='lightgrey' width='10%'>Quell-Port
1047 <td bgcolor='lightgrey' width='10%'>Ziel-IP-Adresse
1048 <td bgcolor='lightgrey' width='10%'>Ziel-Port
1049 <td bgcolor='lightgrey' width='30%'>Aktionen
1052 foreach $portruleentry ( sort @portrules )
1054 @portruleline = split ( /\;/ , $portruleentry );
1055 if ( $portruleline [ 1 ] eq $qossettings { 'RED_DEV' } )
1058 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1059 <tr><td align='center' bgcolor='#EAEAEA'> $portruleline [1]
1060 <td align='center' bgcolor='#EAEAEA'> $portruleline [0]
1061 <td align='center' bgcolor='#EAEAEA'> $portruleline [2]
1062 <td align='center' bgcolor='#EAEAEA'> $portruleline [3]
1063 <td align='center' bgcolor='#EAEAEA'> $portruleline [4]
1064 <td align='center' bgcolor='#EAEAEA'> $portruleline [5]
1065 <td align='center' bgcolor='#EAEAEA'> $portruleline [6]
1066 <td align='right' bgcolor='#EAEAEA'>
1067 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1068 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1069 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1070 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1071 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1072 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1073 <button type='submit' name='DOPORT' value='Bearbeiten' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/edit.gif' width="20" height="20" alt="Klasse bearbeiten"></button>
1074 <button type='submit' name='DOPORT' value='Loeschen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/delete.gif' width="20" height="20" alt="Klasse loeschen"></button>
1080 print " \t <tr><td colspan='8' bgcolor='lightgrey' height='2'>" ;
1081 foreach $portruleentry ( sort @portrules )
1083 @portruleline = split ( /\;/ , $portruleentry );
1084 if ( $portruleline [ 1 ] eq $qossettings { 'IMQ_DEV' } )
1087 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1088 <tr><td align='center' bgcolor='#EAEAEA'> $portruleline [1]
1089 <td align='center' bgcolor='#EAEAEA'> $portruleline [0]
1090 <td align='center' bgcolor='#EAEAEA'> $portruleline [2]
1091 <td align='center' bgcolor='#EAEAEA'> $portruleline [3]
1092 <td align='center' bgcolor='#EAEAEA'> $portruleline [4]
1093 <td align='center' bgcolor='#EAEAEA'> $portruleline [5]
1094 <td align='center' bgcolor='#EAEAEA'> $portruleline [6]
1095 <td align='right' bgcolor='#EAEAEA'>
1096 <input type='hidden' name='CLASS' value=' $portruleline [0]'>
1097 <input type='hidden' name='PPROT' value=' $portruleline [2]'>
1098 <input type='hidden' name='QIP' value=' $portruleline [3]'>
1099 <input type='hidden' name='QPORT' value=' $portruleline [4]'>
1100 <input type='hidden' name='DIP' value=' $portruleline [5]'>
1101 <input type='hidden' name='DPORT' value=' $portruleline [6]'>
1102 <button type='submit' name='DOPORT' value='Bearbeiten' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/edit.gif' width="20" height="20" alt="Klasse bearbeiten"></button>
1103 <button type='submit' name='DOPORT' value='Loeschen' class='btnOff' onmouseover='BorderOn(this)' onmouseout='BorderOff(this)'><img src='/images/delete.gif' width="20" height="20" alt="Klasse loeschen"></button>
1110 <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
1114 & Header
:: closebox
();
1120 & Header
:: openbox
( '100%' , 'center' , 'Expertenoptionen:' );
1122 <form method='post' action=' $ENV {'SCRIPT_NAME'}'>
1124 <tr><td width='100%' colspan='3'>Diese Einstellungen sollten sie nur veraendern, wenn sie wirklich wissen, was sie tun.
1125 <tr><td width='33%' align='right'>Download-Rate 90\%:<td width='33%' align='left'>
1126 <input type='text' name='DEF_INC_SPD' maxlength='8' required='4' value= $qossettings {'DEF_INC_SPD'}>
1127 <td width='33%' align='center'>
1128 <tr><td width='33%' align='right'>Upload-Rate 90\%:<td width='33%' align='left'>
1129 <input type='text' name='DEF_OUT_SPD' maxlength='8' required='4' value= $qossettings {'DEF_OUT_SPD'}>
1130 <td width='33%' align='center'>
1134 <tr><td width='33%' align='right'>MTU:<td width='33%' align='left'>
1135 <input type='text' name='MTU' maxlength='8' required='4' value= $qossettings {'MTU'}>
1136 <td width='33%' align='center'>Diese Einstellung aendert die MTU nicht global sondern nur fuer das QoS.
1137 <tr><td width='33%' align='right'>Queue Laenge:<td width='33%' align='left'>
1138 <input type='text' name='QLENGTH' maxlength='8' required='2' value= $qossettings {'QLENGTH'}>
1139 <td width='33%' align='center'>
1140 <tr><td width='33%' align='right'>SFQ Perturb:<td width='33%' align='left'>
1141 <input type='text' name='SFQ_PERTUB' maxlength='8' required='1' value= $qossettings {'SFQ_PERTUB'}>
1142 <td width='33%' align='center'><input type='submit' name='ACTION' value= $Lang ::tr{'save'} />
1147 & Header
:: closebox
();
1151 if ( $qossettings { 'VALID' } eq 'yes' ) {
1152 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1153 $qossettings { 'SPD' } = $qossettings { 'OUT_SPD' };
1154 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1155 $qossettings { 'SPD' } = $qossettings { 'INC_SPD' };
1157 unless ( ( $qossettings { 'MINBDWTH' } >= 0 ) && ( $qossettings { 'MINBDWTH' } <= $qossettings { 'SPD' } ) ) {
1158 $qossettings { 'VALID' } = 'no' ;
1159 $message = "Mindestbandbreite ist ungueltig." ;
1161 $qossettings { 'SPD' } = '' ;
1166 if ( $qossettings { 'VALID' } eq 'yes' ) {
1167 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1168 $qossettings { 'SPD' } = $qossettings { 'OUT_SPD' };
1169 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1170 $qossettings { 'SPD' } = $qossettings { 'INC_SPD' };
1172 unless ( ( $qossettings { 'MAXBDWTH' } >= 0 ) && ( $qossettings { 'MAXBDWTH' } >= $qossettings { 'MINBDWTH' }) &&( $qossettings { 'MAXBDWTH' } <= $qossettings { 'SPD' } ) ) {
1173 $qossettings { 'VALID' } = 'no' ;
1174 $message = "Mamimalbandbreite ist ungueltig." ;
1176 $qossettings { 'SPD' } = '' ;
1181 if ( $qossettings { 'VALID' } eq 'yes' ) {
1182 if ( $qossettings { 'DEVICE' } eq $qossettings { 'RED_DEV' } ) {
1183 if ( $qossettings { 'CLASS' } lt 100 || $qossettings { 'CLASS' } ge 121 ) {
1184 $qossettings { 'VALID' } = 'no' ;
1185 $message = "Die Klassennummer passt nicht zum angegebenen Interface." ;
1187 } elsif ( $qossettings { 'DEVICE' } eq $qossettings { 'IMQ_DEV' } ) {
1188 if ( $qossettings { 'CLASS' } lt 200 || $qossettings { 'CLASS' } ge 221 ) {
1189 $qossettings { 'VALID' } = 'no' ;
1190 $message = "Die Klassennummer passt nicht zum angegebenen Interface." ;
1193 open ( FILE
, "< $classfile " ) or die "Unable to read $classfile " ;
1196 foreach $classentry ( sort @tmp )
1198 @tmpline = split ( /\;/ , $classentry );
1199 if ( $tmpline [ 1 ] eq $qossettings { 'CLASS' } )
1201 $qossettings { 'VALID' } = 'no' ;
1202 $message = "Die aktuelle Klasse wird bereits verwendet." ;
1210 if ( $qossettings { 'VALID' } eq 'yes' ) {
1211 open ( FILE
, "< $subclassfile " ) or die "Unable to read $subclassfile " ;
1214 foreach $subclassentry ( sort @tmp )
1216 @tmpline = split ( /\;/ , $subclassentry );
1217 if ( $tmpline [ 2 ] eq $qossettings { 'SCLASS' } )
1219 $qossettings { 'VALID' } = 'no' ;
1220 $message = "Die aktuelle Klasse wird bereits verwendet." ;