From: ms Date: Fri, 2 Feb 2007 14:50:30 +0000 (+0000) Subject: QoS-Update - Komplette grafische Ueberarbeitung X-Git-Tag: v2.3-beta1~853 X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=commitdiff_plain;h=f013ab2b65d639808ce857511e9dc7f99f916957 QoS-Update - Komplette grafische Ueberarbeitung git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@402 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- diff --git a/config/qos/makeqosscripts.pl b/config/qos/makeqosscripts.pl index 25f0f05102..0861ca4bd0 100644 --- a/config/qos/makeqosscripts.pl +++ b/config/qos/makeqosscripts.pl @@ -290,40 +290,6 @@ END } } -print <> $classfile" ) or die "Unable to write $classfile"; print FILE < Waehlen sie eine der untenstehenden Regeln aus. - - - + + + END ; @@ -612,6 +614,7 @@ if ($errormessage) { ############################################################################################################################ &Header::openbox('100%', 'center', 'Quality of Service'); + print < @@ -624,9 +627,9 @@ END
Quality of Service: $status
- - - + + + END ; if (($qossettings{'OUT_SPD'} ne '') && ($qossettings{'INC_SPD'} ne '')) { @@ -640,12 +643,12 @@ END } if (($qossettings{'DEFCLASS_OUT'} ne '') && ($qossettings{'DEFCLASS_INC'} ne '')&& ($qossettings{'ACK'} ne '')) { print <
+

Downloadstandardklasse: $qossettings{'DEFCLASS_INC'}
Uploadstandardklasse: $qossettings{'DEFCLASS_OUT'}
ACKs: $qossettings{'ACK'} -

+

@@ -675,10 +678,27 @@ if ( ($qossettings{'DEFCLASS_INC'} eq '') || ($qossettings{'DEFCLASS_OUT'} eq '' exit } -&showclasses(); -&showl7rules(); -&showtosrules(); -&showportrules(); +&Header::openbox('100%', 'center', $Lang::tr{'info'}); +&overviewgraph($qossettings{'RED_DEV'}); +&overviewgraph($qossettings{'IMQ_DEV'}); +print < +
 Unterklasse hinzufuegen |  Regel hinzufuegen |  Bearbeiten |  Loeschen   +
TOS-Bits:  0 - Deaktiviert | 8 - Minimale Verzoegerung | 4 - Maximaler Durchsatz | 2 - Maximale Zuverlaessigkeit | 1 - Minimale Kosten   +END +; +if (( -e "/home/httpd/html/graphs/qos-graph-$qossettings{'RED_DEV'}.png") && ( -e "/home/httpd/html/graphs/qos-graph-$qossettings{'IMQ_DEV'}.png")) { + print < +
+END +;} +print "\t
"; + +&Header::closebox(); + +&showclasses($qossettings{'RED_DEV'}); +&showclasses($qossettings{'IMQ_DEV'}); &Header::closebigbox(); &Header::closepage(); @@ -715,9 +735,9 @@ END print <
 
-
+
-
Legen sie hier die ACK-Klasse fest
und klicken Sie danach auf Speichern. +
Legen sie hier die ACK-Klasse fest
und klicken Sie danach auf Speichern.
ACKs: +
END @@ -744,15 +764,15 @@ sub changebandwidth { } else { print < - + -
Geben Sie bitte hier ihre Download- bzw. Upload-Geschwindigkeit ein
und klicken Sie danach auf Speichern. +
Geben Sie bitte hier ihre Download- bzw. Upload-Geschwindigkeit ein
und klicken Sie danach auf Speichern.
Download-Geschwindigkeit: -   kbps +   kbps  
Upload-Geschwindigkeit: -   kbps -   +   kbps +  
END @@ -776,7 +796,7 @@ END print ""; } print <Geben sie die Daten ein
und klicken Sie danach auf Speichern. + Geben sie die Daten ein
und klicken Sie danach auf Speichern. Interface: END @@ -827,19 +847,21 @@ END { print "\n"; } else { print "\n"; } } + if ($qossettings{'MINBWDTH'} eq "") { $qossettings{'MINBWDTH'} = "1"; } print <   Garantierte Bandbreite: - +   Maximale Bandbreite: - +   Burst: - +   Ceilburst: - +   TOS-Bit: +   + $Lang::tr{'remark'}: + blob +   +     END @@ -867,7 +894,7 @@ END } print <Aktuelle Klasse: $qossettings{'CLASS'} - Geben sie die Daten ein
und klicken Sie danach auf Speichern. + Geben sie die Daten ein
und klicken Sie danach auf Speichern. Unterklasse: +   Maximale Bandbreite: - +   Burst: - +   Ceilburst: - +   TOS-Bit: - - + +   END @@ -942,7 +969,7 @@ END } print <Aktuelle Klasse: $qossettings{'CLASS'} - Geben sie die Daten ein
und klicken Sie danach auf Speichern. + Geben sie die Daten ein
und klicken Sie danach auf Speichern. Protokoll: END @@ -1033,7 +1060,7 @@ END } print <Aktuelle Klasse: $qossettings{'CLASS'} - Aktivieren oder deaktivieren sie die TOS-Bits
und klicken Sie danach auf Speichern. + Aktivieren oder deaktivieren sie die TOS-Bits
und klicken Sie danach auf Speichern. Minimale Verzoegerung (8) Maximaler Durchsatz (4) Maximale Zuverlaessigkeit (2) @@ -1046,6 +1073,7 @@ END } sub showclasses { + $qossettings{'DEV'} = shift; open( FILE, "< $classfile" ) or die "Unable to read $classfile"; @classes = ; close FILE; @@ -1053,34 +1081,41 @@ sub showclasses { open( FILE, "< $subclassfile" ) or die "Unable to read $subclassfile"; @subclasses = ; close FILE; - &Header::openbox('100%', 'center', 'Klassen'); - print < - Interface - Klasse - Prioritaet - Garantierte Bandbreite - Maximale Bandbreite - Burst - Ceil Burst - TOS - Aktionen -END -; + open( FILE, "< $level7file" ) or die "Unable to read $level7file"; + @l7rules = ; + close FILE; + open( FILE, "< $tosfile" ) or die "Unable to read $tosfile"; + @tosrules = ; + close FILE; + open( FILE, "< $portfile" ) or die "Unable to read $portfile"; + @portrules = ; + close FILE; foreach $classentry (sort @classes) { @classline = split( /\;/, $classentry ); - if ( $classline[0] eq $qossettings{'RED_DEV'} ) + if ( $classline[0] eq $qossettings{'DEV'} ) { + gengraph($qossettings{'DEV'},$classline[1]); + &Header::openbox('100%', 'center', "Klasse: $classline[1]"); print <$classline[0] - $classline[1] - $classline[2] - $classline[3] - $classline[4] - $classline[5] - $classline[6] - $classline[7] + + + + + + + + + +
$Lang::tr{'interface'} + Klasse + Prioritaet + Garantierte Bandbreite + Maximale Bandbreite + Burst + Ceil Burst + TOS + Aktionen +
$classline[0]$classline[1]$classline[2]$classline[3]$classline[4]$classline[5]$classline[6]$classline[7]
@@ -1104,291 +1139,84 @@ END
+
$Lang::tr{'remark'}: + $classline[8] + Queueing: $classline[9] END ; - foreach $subclassentry (sort @subclasses) - { - @subclassline = split( /\;/, $subclassentry ); - if ( $subclassline[1] eq $classline[1] ) { - print <Subklasse: - $subclassline[2] - $subclassline[3] - $subclassline[4] - $subclassline[5] - $subclassline[6] - $subclassline[7] - $subclassline[8] - - -
- - - -
-
- - - -
-
- - - -
-
-END -; - } - } - } - } - print "\t
"; - foreach $classentry (sort @classes) - { - @classline = split( /\;/, $classentry ); - if ( $classline[0] eq $qossettings{'IMQ_DEV'} ) - { - print <$classline[0] - $classline[1] - $classline[2] - $classline[3] - $classline[4] - $classline[5] - $classline[6] - $classline[7] - + + if (@l7rules) { + foreach $l7ruleentry (sort @l7rules) + { + @l7ruleline = split( /\;/, $l7ruleentry ); + if ( $l7ruleline[0] eq $classline[1] ) + { + print <Level7-Protokoll: + $l7ruleline[2] +
- - - + + + +
- - - -
-
- - - -
-
- - - + + + +
END ; - foreach $subclassentry (sort @subclasses) - { - @subclassline = split( /\;/, $subclassentry ); - if ( $subclassline[1] eq $classline[1] ) { - print <
Subklasse: - $subclassline[2] - $subclassline[3] - $subclassline[4] - $subclassline[5] - $subclassline[6] - $subclassline[7] - $subclassline[8] - - -
- - - -
-
- - - -
-
- - - -
-
-END -; - } - } - } - } - print <
Legende:   Unterklasse hinzufuegen |  Regel hinzufuegen |  Klasse bearbeiten |  Klasse loeschen   -
TOS-Bits:  0 - Deaktiviert | 8 - Minimale Verzoegerung | 4 - Maximaler Durchsatz | 2 - Maximale Zuverlaessigkeit | 1 - Minimale Kosten   -
+ if (($l7ruleline[3] ne "") || ($l7ruleline[4] ne "")){ + print <  + Quell-IP: $l7ruleline[3] + Ziel-IP: $l7ruleline[4] END ; - &Header::closebox(); - } -} + } + -sub showl7rules { - open( FILE, "< $level7file" ) or die "Unable to read $level7file"; - @l7rules = ; - close FILE; - if (@l7rules) { - &Header::openbox('100%', 'center', 'Level7-Regeln'); - print < - Interface - Klasse - Protokoll - Quell-IP-Adresse - Ziel-IP-Adresse - Aktionen -END -; - foreach $l7ruleentry (sort @l7rules) - { - @l7ruleline = split( /\;/, $l7ruleentry ); - if ( $l7ruleline[1] eq $qossettings{'RED_DEV'} ) - { - print <$l7ruleline[1] - $l7ruleline[0] - $l7ruleline[2] - $l7ruleline[3] - $l7ruleline[4] - - -
- - - - -
-
- - - - -
-
-END -; - } - } - print "\t"; - foreach $l7ruleentry (sort @l7rules) - { - @l7ruleline = split( /\;/, $l7ruleentry ); - if ( $l7ruleline[1] eq $qossettings{'IMQ_DEV'} ) - { - print <$l7ruleline[1] - $l7ruleline[0] - $l7ruleline[2] - $l7ruleline[3] - $l7ruleline[4] - - -
- - - - -
-
- - - - -
-
END ; - } - } - print <Legende:   Regel bearbeiten |  Regel loeschen   - + } + } + } + + + if (@portrules) { + foreach $portruleentry (sort @portrules) + { + @portruleline = split( /\;/, $portruleentry ); + if ( $portruleline[0] eq $classline[1] ) + { + print <Port-Regel: + ($portruleline[2]) + END ; - &Header::closebox(); - } -} - -sub showportrules { - open( FILE, "< $portfile" ) or die "Unable to read $portfile"; - @portrules = ; - close FILE; - if (@portrules) { - &Header::openbox('100%', 'center', 'Port-Regeln'); - print < - Interface - Klasse - Protokoll - Quell-IP-Adresse - Quell-Port - Ziel-IP-Adresse - Ziel-Port - Aktionen + if ($portruleline[4]) { + print <Quell-Port: $portruleline[4] END ; - foreach $portruleentry (sort @portrules) - { - @portruleline = split( /\;/, $portruleentry ); - if ( $portruleline[1] eq $qossettings{'RED_DEV'} ) - { - print <$portruleline[1] - $portruleline[0] - $portruleline[2] - $portruleline[3] - $portruleline[4] - $portruleline[5] - $portruleline[6] - - -
- - - - - - - - -
-
- - - - - - - - -
-
+ } + print ""; + if ($portruleline[6]) { + print <Ziel-Port: $portruleline[6] END ; - } - } - print "\t"; - foreach $portruleentry (sort @portrules) - { - @portruleline = split( /\;/, $portruleentry ); - if ( $portruleline[1] eq $qossettings{'IMQ_DEV'} ) - { - print <$portruleline[1] - $portruleline[0] - $portruleline[2] - $portruleline[3] - $portruleline[4] - $portruleline[5] - $portruleline[6] - + } + print <  +
@@ -1413,125 +1241,115 @@ END
END ; - } - } - print <Legende:   Regel bearbeiten |  Regel loeschen   - + if (($portruleline[3] ne "") || ($portruleline[5] ne "")){ + print <  + Quell-IP: $portruleline[3] + Ziel-IP: $portruleline[5] END ; - &Header::closebox(); - } -} + } + } + } + } -sub showtosrules { - open( FILE, "< $tosfile" ) or die "Unable to read $tosfile"; - @tosrules = ; - close FILE; - if (@tosrules) { - &Header::openbox('100%', 'center', 'TOS-Regeln'); - print < - Interface - Klasse - TOS-Bit - TOS-Beschreibung - Aktionen + if (@tosrules) { + foreach $tosruleentry (sort @tosrules) + { + @tosruleline = split( /\;/, $tosruleentry ); + if ( $tosruleline[0] eq $classline[1] ) + { + print < + TOS Bit matches: + END ; - foreach $tosruleentry (sort @tosrules) - { - @tosruleline = split( /\;/, $tosruleentry ); - if ( $tosruleline[1] eq $qossettings{'RED_DEV'} ) - { - print <$tosruleline[1] - $tosruleline[0] - $tosruleline[2] - + if ( $tosruleline[2] eq "8") { + print "Minimale Verzoegerung\n"; + } elsif ( $tosruleline[2] eq "4") { + print "Maximaler Durchsatz\n"; + } elsif ( $tosruleline[2] eq "2") { + print "Maximaler Durchsatz\n"; + } elsif ( $tosruleline[2] eq "1") { + print "Minimale Kosten\n"; + } else { print " \n"; } + + print < + +
+ + + + + + +
+ + + + + +
+
END ; - if ( $tosruleline[2] eq "8") { - print "Minimale Verzoegerung\n"; - } elsif ( $tosruleline[2] eq "4") { - print "Maximaler Durchsatz\n"; - } elsif ( $tosruleline[2] eq "2") { - print "Maximaler Durchsatz\n"; - } elsif ( $tosruleline[2] eq "1") { - print "Minimale Kosten\n"; - } else { print " \n"; } - print < - -
- - - - - -
-
- - - - - -
-
+ } + } + } + + if ( -e "/home/httpd/html/graphs/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}-packets.png") { + print < END ; - } - } - print "\t"; - foreach $tosruleentry (sort @tosrules) - { - @tosruleline = split( /\;/, $tosruleentry ); - if ( $tosruleline[1] eq $qossettings{'IMQ_DEV'} ) - { - print <$tosruleline[1] - $tosruleline[0] - $tosruleline[2] - + } + + + foreach $subclassentry (sort @subclasses) + { + @subclassline = split( /\;/, $subclassentry ); + if ( $subclassline[1] eq $classline[1] ) { + print <Subklasse: + $subclassline[2] + $subclassline[3] + $subclassline[4] + $subclassline[5] + $subclassline[6] + $subclassline[7] + $subclassline[8] + + +
+ + + +
+
+ + + +
+
+ + + +
+
END ; - if ( $tosruleline[2] eq "8") { - print "Minimale Verzoegerung\n"; - } elsif ( $tosruleline[2] eq "4") { - print "Maximaler Durchsatz\n"; - } elsif ( $tosruleline[2] eq "2") { - print "Maximaler Durchsatz\n"; - } elsif ( $tosruleline[2] eq "1") { - print "Minimale Kosten\n"; - } else { print " \n"; } - print < - -
- - - - - -
-
- - - - - -
-
+ } + } + print < END ; + &Header::closebox(); } } - print <Legende:   Regel bearbeiten |  Regel loeschen   - -END -; - &Header::closebox(); } } @@ -1643,6 +1461,7 @@ sub gengraph { } else { $qossettings{'CLASSPRFX'} = '2'; } + my $color=random_hex_color(6); RRDs::graph ("/home/httpd/html/graphs/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}-packets.png", "--start", "-3240", "-aPNG", "-i", "-z", @@ -1654,7 +1473,7 @@ sub gengraph { "DEF:pkts=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:pkts:AVERAGE", "DEF:dropped=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:dropped:AVERAGE", "DEF:overlimits=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:overlimits:AVERAGE", - "AREA:pkts#00FFFF:packets", + "AREA:pkts$color:packets", "GPRINT:pkts:LAST:total packets\\:%8.3lf %s packets\\j", "LINE3:dropped#FF0000:dropped", "GPRINT:dropped:LAST:dropped packets\\:%8.3lf %s packets\\j", @@ -1663,43 +1482,55 @@ sub gengraph { ); $ERROR = RRDs::error; print "$ERROR"; +} - RRDs::graph ("/home/httpd/html/graphs/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}-borrowed.png", - "--start", "-3240", "-aPNG", "-i", "-z", - "--alt-y-grid", "-w 600", "-h 150", "-r", - "--color", "SHADEA#EAE9EE", - "--color", "SHADEB#EAE9EE", - "--color", "BACK#FFFFFF", - "-t $qossettings{'CLASS'} ($qossettings{'DEV'})", - "DEF:lended=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:lended:AVERAGE", - "DEF:borrowed=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:borrowed:AVERAGE", - "DEF:giants=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:giants:AVERAGE", - "AREA:lended#99ff99:lended", - "GPRINT:lended:LAST:lended\\:%8.3lf %s packets\\j", - "LINE3:borrowed#f70566:borrowed", - "GPRINT:borrowed:LAST:borrowed\\:%8.3lf %s packets\\j", - "LINE3:giants#05ad05:giants", - "GPRINT:giants:LAST:giants\\:%8.3lf %s packets\\j", - ); - $ERROR = RRDs::error; - print "$ERROR"; - - RRDs::graph ("/home/httpd/html/graphs/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}-bytes.png", +sub overviewgraph { + $qossettings{'DEV'} = shift; + if ( $qossettings{'DEV'} eq $qossettings{'RED_DEV'} ) { + $qossettings{'CLASSPRFX'} = '1'; + } else { + $qossettings{'CLASSPRFX'} = '2'; + } + my $ERROR=""; + my $count="1"; + my $color="#000000"; + my @command=("/home/httpd/html/graphs/qos-graph-$qossettings{'DEV'}.png", "--start", "-3240", "-aPNG", "-i", "-z", "--alt-y-grid", "-w 600", "-h 150", "-r", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", "--color", "BACK#FFFFFF", - "-t $qossettings{'CLASS'} ($qossettings{'DEV'})", - "DEF:bits=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:bits:AVERAGE", - "DEF:bytes=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:bytes:AVERAGE", - "CDEF:kbytes=bytes,1024,/", - "CDEF:kbits=bits,1024,/,8,/", - "AREA:kbytes#FFBE7D:kbytes", - "GPRINT:kbytes:LAST:rate\\: %8.3lf kbytes\\j", + "-t Auslastung auf ($qossettings{'DEV'})" ); - $ERROR = RRDs::error; - print "$ERROR"; + open( FILE, "< $classfile" ) or die "Unable to read $classfile"; + @classes = ; + close FILE; + foreach $classentry (sort @classes) + { + @classline = split( /\;/, $classentry ); + if ( $classline[0] eq $qossettings{'DEV'} ) + { + $color=random_hex_color(6); + push(@command, "DEF:$classline[1]=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bits:AVERAGE"); + if ($count eq "1") { + push(@command, "AREA:$classline[1]$color:Klasse $classline[1] - $classline[8]\\j"); + } else { + push(@command, "STACK:$classline[1]$color:Klasse $classline[1] - $classline[8]\\j"); + } + $count++; + } + } + RRDs::graph (@command); + $ERROR = RRDs::error; + print "$ERROR"; +} +sub random_hex_color { + my $size = shift; + $size = 6 if $size !~ /^3|6$/; + my @hex = ( 0 .. 9, 'a' .. 'f' ); + my @color; + push @color, @hex[rand(@hex)] for 1 .. $size; + return join('', '#', @color); } \ No newline at end of file diff --git a/src/install+setup/install/probenic.sh b/src/install+setup/install/probenic.sh index 5008def617..93ce48967e 100644 --- a/src/install+setup/install/probenic.sh +++ b/src/install+setup/install/probenic.sh @@ -14,3 +14,5 @@ if [ "$NUMBER" ]; then else echo "$MODULES" > /nicdriver fi + +# kudzu -qps -c NETWORK | egrep "desc|network.hwaddr|driver" | awk -F': ' '{print $2}' | sed -e '/..:..:..:..:..:../a\\' -e "s/$/\;/g"