X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fqos.cgi;h=49031d0fdbd19c8ec213e10e6468605c651911aa;hb=80508b5fe2699f85686b60e3b5264232f5d0d71c;hp=0dfac7898835b3fd8eac3121f4dcd48baf5b1b4b;hpb=268292e730717ad07349ea74e3b10ed3a3902102;p=people%2Fpmueller%2Fipfire-2.x.git diff --git a/html/cgi-bin/qos.cgi b/html/cgi-bin/qos.cgi index 0dfac78988..49031d0fdb 100644 --- a/html/cgi-bin/qos.cgi +++ b/html/cgi-bin/qos.cgi @@ -1,21 +1,34 @@ #!/usr/bin/perl -# -# IPFire CGIs -# -# This code is distributed under the terms of the GPL -# -# (c) The IPFire Team -# +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### use RRDs; use strict; # enable only the following on debugging purpose # use warnings; -use CGI::Carp 'fatalsToBrowser'; +# use CGI::Carp 'fatalsToBrowser'; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; +require "${General::swroot}/graphs.pl"; my %qossettings = (); my %checked = (); @@ -51,8 +64,6 @@ my $portfile = "/var/ipfire/qos/portconfig"; my $tosfile = "/var/ipfire/qos/tosconfig"; &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); -&Header::showhttpheaders(); - $qossettings{'ENABLED'} = 'off'; $qossettings{'EDIT'} = 'no'; $qossettings{'OUT_SPD'} = ''; @@ -107,8 +118,19 @@ my %mainsettings = (); &General::readhash("${General::swroot}/main/settings", \%mainsettings); &General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); -&Header::openpage('QoS', 1, ''); -&Header::openbigbox('100%', 'left', '', $errormessage); +my @querry = split(/\?/,$ENV{'QUERY_STRING'}); +$querry[0] = '' unless defined $querry[0]; +$querry[1] = 'hour' unless defined $querry[1]; + +if ( $querry[0] ne ""){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updateqosgraph($querry[0],$querry[1]); +}else{ + &Header::showhttpheaders(); + + &Header::openpage('QoS', 1, ''); + &Header::openbigbox('100%', 'left', '', $errormessage); ############################################################################################################################ ############################################################################################################################ @@ -186,7 +208,7 @@ elsif ($qossettings{'DOCLASS'} eq 'Loeschen') } } close FILE; - $message = "Klasse $qossettings{'CLASS'} wurde mit eventuell vorhandenen Unterklassen geloescht."; + $message = "$Lang::tr{'Class'} $qossettings{'CLASS'} $Lang::tr{'Class was deleted'}"; } ############################################################################################################################ @@ -221,7 +243,7 @@ END } } close FILE; - $message = "Unterklasse $qossettings{'CLASS'} wurde geloescht."; + $message = "$Lang::tr{'Subclass'} $qossettings{'CLASS'} $Lang::tr{'was deleted'}."; } ############################################################################################################################ @@ -230,15 +252,15 @@ END if ($qossettings{'DOLEVEL7'} eq $Lang::tr{'save'}) { if ( $qossettings{'QIP'} ne '' ) { - unless ( &General::validip($qossettings{'QIP'}) ) { + unless ( &General::validip($qossettings{'QIP'}) ) { $qossettings{'VALID'} = 'no'; - $message = "Die Quell-IP-Adresse ist ungueltig."; + $message = "Die Quell-IP-Adresse ist ungueltig."; } } if ( $qossettings{'DIP'} ne '' ) { - unless ( &General::validip($qossettings{'DIP'}) ) { + unless ( &General::validip($qossettings{'DIP'}) ) { $qossettings{'VALID'} = 'no'; - $message = "Die Ziel-IP-Adresse ist ungueltig."; + $message = "Die Ziel-IP-Adresse ist ungueltig."; } } if ($qossettings{'CLASS'} >= 100 && $qossettings{'CLASS'} < 121) { @@ -305,15 +327,15 @@ END if ($qossettings{'DOPORT'} eq $Lang::tr{'save'}) { if ( $qossettings{'QIP'} ne '' ) { - unless ( &General::validip($qossettings{'QIP'}) ) { + unless ( &General::validip($qossettings{'QIP'}) ) { $qossettings{'VALID'} = 'no'; - $message = "Die Quell-IP-Adresse ist ungueltig."; + $message = "Die Quell-IP-Adresse ist ungueltig."; } } if ( $qossettings{'DIP'} ne '' ) { - unless ( &General::validip($qossettings{'DIP'}) ) { + unless ( &General::validip($qossettings{'DIP'}) ) { $qossettings{'VALID'} = 'no'; - $message = "Die Ziel-IP-Adresse ist ungueltig."; + $message = "Die Ziel-IP-Adresse ist ungueltig."; } } if ($qossettings{'CLASS'} >= 100 && $qossettings{'CLASS'} < 121) { @@ -350,7 +372,7 @@ END } } close FILE; - $message = "Port-Regel ($qossettings{'CLASS'} - $qossettings{'PPROT'}) wurde geloescht."; + $message = "$Lang::tr{'Port Rule'} ($qossettings{'CLASS'} - $qossettings{'PPROT'}) $Lang::tr{'was deleted'}."; } elsif ($qossettings{'DOPORT'} eq 'Bearbeiten') { open( FILE, "< $portfile" ) or die "Unable to read $portfile"; @@ -392,7 +414,7 @@ $qossettings{'CLASS'};$qossettings{'DEVICE'};$qossettings{'TOS'}; END ; close FILE; -} +} elsif ($qossettings{'DOTOS'} eq 'Loeschen') { open( FILE, "< $tosfile" ) or die "Unable to read $tosfile"; @@ -408,7 +430,7 @@ elsif ($qossettings{'DOTOS'} eq 'Loeschen') } } close FILE; - $message = "TOS-Regel ($qossettings{'CLASS'} - $qossettings{'TOS'}) wurde geloescht."; + $message = "$Lang::tr{'TOS Rule'} ($qossettings{'CLASS'} - $qossettings{'TOS'}) $Lang::tr{'was deleted'}."; } elsif ($qossettings{'DOTOS'} eq 'Bearbeiten') { open( FILE, "< $tosfile" ) or die "Unable to read $tosfile"; @@ -439,12 +461,12 @@ elsif ($qossettings{'DOTOS'} eq 'Loeschen') if ($qossettings{'ACTION'} eq 'Start') { + $qossettings{'ENABLED'} = 'on'; + &General::writehash("${General::swroot}/qos/settings", \%qossettings); system("/usr/local/bin/qosctrl generate >/dev/null 2>&1"); system("/usr/bin/touch /var/ipfire/qos/enable"); system("/usr/local/bin/qosctrl start >/dev/null 2>&1"); system("logger -t ipfire 'QoS started'"); - $qossettings{'ENABLED'} = 'on'; - &General::writehash("${General::swroot}/qos/settings", \%qossettings); } elsif ($qossettings{'ACTION'} eq 'Stop') { @@ -474,7 +496,101 @@ elsif ($qossettings{'ACTION'} eq $Lang::tr{'save'}) } &General::writehash("${General::swroot}/qos/settings", \%qossettings); } -elsif ($qossettings{'ACTION'} eq 'Statusinformationen') +elsif ($qossettings{'ACTION'} eq $Lang::tr{'template'} ) +{ + my @UP; + #print "UP
"; + for(my $i = 1; $i <= 10; $i++) { + $UP[$i] = int($qossettings{'OUT_SPD'} / $i ); + #print $i."=".$UP[$i]." "; + } + my @DOWN; + #print "

Down
"; + for(my $i = 1; $i <= 20; $i++) { + $DOWN[$i] = int($qossettings{'INC_SPD'} / $i); + #print $i."=".$DOWN[$i]." "; + } + open( FILE, "> $classfile" ) or die "Unable to write $classfile"; + print FILE < $level7file" ) or die "Unable to write $level7file"; + print FILE < $portfile" ) or die "Unable to write $portfile"; + print FILE </dev/null 2>&1"); + system("/usr/bin/touch /var/ipfire/qos/enable"); + system("/usr/local/bin/qosctrl start >/dev/null 2>&1"); + system("logger -t ipfire 'QoS started'"); +} +elsif ($qossettings{'ACTION'} eq "$Lang::tr{'status'}" ) { &Header::openbox('100%', 'left', 'QoS Status'); if ($qossettings{'ENABLED'} eq 'on'){ @@ -482,13 +598,13 @@ elsif ($qossettings{'ACTION'} eq 'Statusinformationen') $output = `/usr/local/bin/qosctrl status`; $output = &Header::cleanhtml($output,"y"); print "
$output
\n"; - } else { print "QoS ist nicht aktiviert!"; } + } else { print "$Lang::tr{'QoS not enabled'}"; } &Header::closebox(); &Header::closebigbox(); &Header::closepage(); exit } -elsif ($qossettings{'ACTION'} eq 'Parentklasse hinzufuegen') +elsif ($qossettings{'ACTION'} eq "$Lang::tr{'parentclass add'}" ) { &parentclass(); &Header::closebigbox(); @@ -504,10 +620,10 @@ elsif ($qossettings{'ACTION'} eq 'Unterklasse hinzufuegen') } elsif ($qossettings{'ACTION'} eq 'Regel hinzufuegen') { - &Header::openbox('100%', 'center', 'Regel hinzufuegen'); + &Header::openbox('100%', 'center', $Lang::tr{'Add Rule'}); print < - Waehlen sie eine der untenstehenden Regeln aus. + $Lang::tr{'Choose Rule'} @@ -541,21 +657,21 @@ END &Header::closepage(); exit } -elsif ($qossettings{'ACTION'} eq 'Erweiterte Einstellungen') +elsif ($qossettings{'ACTION'} eq "$Lang::tr{'urlfilter advanced settings'}" ) { &expert(); &Header::closebigbox(); &Header::closepage(); exit } -if ($qossettings{'ACTIONBW'} eq 'Andern') +if ($qossettings{'ACTIONBW'} eq "$Lang::tr{'modify'}" ) { &changebandwidth(); &Header::closebigbox(); &Header::closepage(); exit } -if ($qossettings{'ACTIONDEF'} eq 'Andern') +if ($qossettings{'ACTIONDEF'} eq "$Lang::tr{'modify'}" ) { &changedefclasses(); &Header::closebigbox(); @@ -600,8 +716,8 @@ END Quality of Service: $status - - + + END ; @@ -610,9 +726,9 @@ END
  -
Downloadgeschwindigkeit: $qossettings{'INC_SPD'} kbps - -
Uploadgeschwindigkeit: $qossettings{'OUT_SPD'} kbps +
$Lang::tr{'downlink speed'}: $qossettings{'INC_SPD'} + +
$Lang::tr{'uplink speed'}: $qossettings{'OUT_SPD'}
END ; @@ -622,19 +738,19 @@ END

-
Downloadstandardklasse: $qossettings{'DEFCLASS_INC'} - -
Uploadstandardklasse: $qossettings{'DEFCLASS_OUT'} -
ACKs: $qossettings{'ACK'} +
$Lang::tr{'downlink std class'}: $qossettings{'DEFCLASS_INC'} + +
$Lang::tr{'uplink std class'}: $qossettings{'DEFCLASS_OUT'} +
ACKs: $qossettings{'ACK'}

-
- - +
+ +
END @@ -656,16 +772,12 @@ if ( ($qossettings{'DEFCLASS_INC'} eq '') || ($qossettings{'DEFCLASS_OUT'} eq '' exit } -&Header::openbox('100%', 'center', $Lang::tr{'info'}); -print < -  Unterklasse hinzufuegen |  Regel hinzufuegen |  Bearbeiten |  Loeschen   - TOS-Bits:  0 - Deaktiviert | 8 - Minimale Verzoegerung | 4 - Maximaler Durchsatz | 2 - Maximale Zuverlaessigkeit | 1 - Minimale Kosten   -END -; -print "\t"; - -&Header::closebox(); + &Header::openbox('100%', 'center', "$qossettings{'RED_DEV'} $Lang::tr{'graph'}"); + &Graphs::makegraphbox("qos.cgi",$qossettings{'RED_DEV'},"hour","325"); + &Header::closebox(); + &Header::openbox('100%', 'center', "$qossettings{'IMQ_DEV'} $Lang::tr{'graph'}"); + &Graphs::makegraphbox("qos.cgi",$qossettings{'IMQ_DEV'},"hour","325"); + &Header::closebox(); &showclasses($qossettings{'RED_DEV'}); &showclasses($qossettings{'IMQ_DEV'}); @@ -673,22 +785,24 @@ print "\t"; &Header::closebigbox(); &Header::closepage(); +} + ############################################################################################################################ ############################################################################################################################ sub changedefclasses { - &Header::openbox('100%', 'center', 'Standardklassen:'); + &Header::openbox('100%', 'center', $Lang::tr{'std classes'}); print < - @@ -1090,22 +1209,22 @@ sub showclasses {
Legen sie hier die Standardklassen fest durch die nicht-gefilterte Pakete gehen. +
$Lang::tr{'no filter pass'}
Download: -
Legen sie hier die ACK-Klasse fest
und klicken Sie danach auf Speichern. +
$Lang::tr{'enter ack class'}
ACKs: - + + + + +
Geben Sie bitte hier ihre Download- bzw. Upload-Geschwindigkeit ein
und klicken Sie danach auf Speichern. -
Download-Geschwindigkeit: -   kbps -   -
Upload-Geschwindigkeit: -   kbps -   +
$Lang::tr{'down and up speed'}
$Lang::tr{'downlink speed'}:

$Lang::tr{'uplink speed'}:
+ $Lang::tr{'template warning'} END ; } @@ -752,7 +866,7 @@ END } sub parentclass { - &Header::openbox('100%', 'center', 'Parentklasse'); + &Header::openbox('100%', 'center', $Lang::tr{'parentclass'}); print < @@ -761,17 +875,17 @@ END if ( $message ne "" ) { print "
$message"; } - if ( $qossettings{'EDIT'} eq 'yes' ) { - print ""; - print ""; + if ( $qossettings{'EDIT'} eq 'yes' ) { + print ""; + print ""; } print <Geben sie die Daten ein
und klicken Sie danach auf Speichern. -
Interface: +
$Lang::tr{'enter data'} +
$Lang::tr{'interface'}: END ; - if ( $qossettings{'EDIT'} eq 'yes' ) { + if ( $qossettings{'EDIT'} eq 'yes' ) { print ""; @@ -782,13 +896,13 @@ END $qossettings{'IMQ_DEV_SEL'} = 'selected'; } print <$qossettings{'RED_DEV'} - + +   -
Klasse: +
$Lang::tr{'Class'}: END ; - if ( $qossettings{'EDIT'} eq 'yes' ) { + if ( $qossettings{'EDIT'} eq 'yes' ) { print ""; @@ -808,7 +922,7 @@ END print <   -
Prioritaet:
$Lang::tr{'priority'}:  -
Garantierte Bandbreite: +
$Lang::tr{'guaranteed bandwith'}:   -
Maximale Bandbreite: +
$Lang::tr{'max bandwith'}:  
Burst: @@ -833,19 +947,23 @@ END
Ceilburst:   +END +; + $selected{'TOS'}{$qossettings{'TOS'}} = "selected='selected'"; +print <TOS-Bit: + + + + +  
$Lang::tr{'remark'}:
    -   +  
END ; @@ -853,7 +971,7 @@ END } sub subclass { - &Header::openbox('100%', 'center', 'Unterklasse'); + &Header::openbox('100%', 'center', $Lang::tr{'Subclass'}); print < @@ -863,9 +981,9 @@ END print "
$message"; } print <Aktuelle Klasse: $qossettings{'CLASS'} -
Geben sie die Daten ein
und klicken Sie danach auf Speichern. -
Unterklasse:
$Lang::tr{'current class'}: $qossettings{'CLASS'} +
$Lang::tr{'enter data'} +
$Lang::tr{'Subclass'}:  -
Prioritaet:
$Lang::tr{'priority'}:
Garantierte Bandbreite: +
$Lang::tr{'guaranteed bandwith'}:   -
Maximale Bandbreite: +
$Lang::tr{'max bandwith'}:  
Burst: @@ -913,14 +1031,14 @@ END  
TOS-Bit: + + + + + -   +  
END ; @@ -928,7 +1046,7 @@ END } sub level7rule { - &Header::openbox('100%', 'center', 'Level7-Regel'); + &Header::openbox('100%', 'center', $Lang::tr{'Level7 Rule'}); print < @@ -938,9 +1056,9 @@ END print "
$message"; } print <Aktuelle Klasse: $qossettings{'CLASS'} -
Geben sie die Daten ein
und klicken Sie danach auf Speichern. -
Protokoll: +
$Lang::tr{'current class'}: $qossettings{'CLASS'} +
$Lang::tr{'enter data'} +
$Lang::tr{'protocol'}:   -
Quell-IP-Adresse: - +
$Lang::tr{'source ip'}: +   -
Ziel-IP-Adresse: - - +
$Lang::tr{'destination ip'}: + + +
$Lang::tr{'qos warning'}
END ; @@ -973,12 +1092,12 @@ END } sub portrule { - &Header::openbox('100%', 'center', 'Port-Regel hinzufuegen'); + &Header::openbox('100%', 'center', $Lang::tr{'Add Port Rule'}); print < -
Geben sie die Daten ein
und klicken Sie danach auf Speichern. -
Protokoll: +
$Lang::tr{'enter data'} +
$Lang::tr{'protocol'}:   -
Quell-Port: - +
$Lang::tr{'source port'}: +   -
Ziel-Port: - +
$Lang::tr{'destination port'}: +   -
Quell-IP-Adresse: - +
$Lang::tr{'source ip'}: +   -
Ziel-IP-Adresse: - - +
$Lang::tr{'destination ip'}: + +
END ; @@ -1016,9 +1135,9 @@ END } sub tosrule { - &Header::openbox('100%', 'center', 'TOS-Regel'); + &Header::openbox('100%', 'center', $Lang::tr{'TOS Rule'}); if ($qossettings{'TOS'}) { - $checked[$qossettings{'TOS'}] = "checked"; + $checked{$qossettings{'TOS'}} = "checked"; } print < @@ -1029,13 +1148,13 @@ END print "
$message"; } print <Aktuelle Klasse: $qossettings{'CLASS'} -
Aktivieren oder deaktivieren sie die TOS-Bits
und klicken Sie danach auf Speichern. -
Minimale Verzoegerung (8) -
Maximaler Durchsatz (4) -
Maximale Zuverlaessigkeit (2) -
Minimale Kosten (1) -
+
$Lang::tr{'current class'}: $qossettings{'CLASS'} +
$Lang::tr{'Enter TOS'} +
$Lang::tr{'min delay'} (8) +
$Lang::tr{'max throughput'} (4) +
$Lang::tr{'max reliability'} (2) +
$Lang::tr{'min costs'} (1) +
END ; @@ -1065,18 +1184,18 @@ sub showclasses { @classline = split( /\;/, $classentry ); if ( $classline[0] eq $qossettings{'DEV'} ) { - &Header::openbox('100%', 'center', "Klasse: $classline[1]"); + &Header::openbox('100%', 'center', "Klasse: $classline[1]"); print <
$Lang::tr{'interface'} - Klasse - Prioritaet - Garantierte Bandbreite - Maximale Bandbreite + $Lang::tr{'Class'} + $Lang::tr{'priority'} + $Lang::tr{'guaranteed bandwith'} + $Lang::tr{'max bandwith'} Burst Ceil Burst TOS - Aktionen + $Lang::tr{'action'}
$classline[0] $classline[1] $classline[2]
- +
- +
- +
- +
@@ -1122,7 +1241,7 @@ END if ( $l7ruleline[0] eq $classline[1] ) { print <Level7-Protokoll: + $Lang::tr{'Level7 Protocol'}: $l7ruleline[2] @@ -1144,8 +1263,8 @@ END if (($l7ruleline[3] ne "") || ($l7ruleline[4] ne "")){ print <
  - Quell-IP: $l7ruleline[3] - Ziel-IP: $l7ruleline[4] + $Lang::tr{'source ip'}: $l7ruleline[3] + $Lang::tr{'destination ip'}: $l7ruleline[4] END ; } @@ -1165,21 +1284,21 @@ END if ( $portruleline[0] eq $classline[1] ) { print <Port-Regel: +
$Lang::tr{'Port Rule'}: ($portruleline[2]) END ; if ($portruleline[4]) { print <Quell-Port: $portruleline[4] + $Lang::tr{'source port'}: $portruleline[4] END ; } print ""; if ($portruleline[6]) { print <Ziel-Port: $portruleline[6] + $Lang::tr{'destination port'}: $portruleline[6] END ; } @@ -1195,7 +1314,7 @@ END - +
@@ -1205,7 +1324,7 @@ END - +
END @@ -1213,8 +1332,8 @@ END if (($portruleline[3] ne "") || ($portruleline[5] ne "")){ print <  - Quell-IP: $portruleline[3] - Ziel-IP: $portruleline[5] + $Lang::tr{'source ip'}: $portruleline[3] + $Lang::tr{'destination ip'}: $portruleline[5] END ; } @@ -1235,13 +1354,13 @@ END END ; if ( $tosruleline[2] eq "8") { - print "Minimale Verzoegerung\n"; + print "$Lang::tr{'min delay'}\n"; } elsif ( $tosruleline[2] eq "4") { - print "Maximaler Durchsatz\n"; + print "$Lang::tr{'max throughput'}\n"; } elsif ( $tosruleline[2] eq "2") { - print "Maximaler Durchsatz\n"; + print "$Lang::tr{'max reliability'}\n"; } elsif ( $tosruleline[2] eq "1") { - print "Minimale Kosten\n"; + print "$Lang::tr{'min costs'}\n"; } else { print " \n"; } print < - +
- +
END @@ -1270,15 +1389,12 @@ END } END ; - } - - foreach $subclassentry (sort @subclasses) { @subclassline = split( /\;/, $subclassentry ); if ( $subclassline[1] eq $classline[1] ) { print <Subklasse: + $Lang::tr{'Subclass'}: $subclassline[2] $subclassline[3] $subclassline[4] @@ -1291,17 +1407,17 @@ END
- +
- +
- +
END @@ -1312,26 +1428,27 @@ END END ; - &Header::closebox(); + &Header::closebox(); } - } + } + } } sub expert { - &Header::openbox('100%', 'center', 'Expertenoptionen:'); + &Header::openbox('100%', 'center', $Lang::tr{'expertoptions'}); print <
MTU: - - Diese Einstellung aendert die MTU nicht global sondern nur fuer das QoS. -
Queue Laenge: - + + $Lang::tr{'mtu QoS'} +
$Lang::tr{'Queuelenght'}: +  
SFQ Perturb: - - + +
END @@ -1348,7 +1465,7 @@ sub validminbwdth { } unless ( ( $qossettings{'MINBWDTH'} >= 1 ) && ( $qossettings{'MINBWDTH'} <= $qossettings{'SPD'} ) ) { $qossettings{'VALID'} = 'no'; - $message = "Mindestbandbreite ist ungueltig."; + $message = "$Lang::tr{'false min bandwith'}"; } $qossettings{'SPD'} = ''; } @@ -1363,7 +1480,7 @@ sub validmaxbwdth { } unless ( ( $qossettings{'MAXBDWTH'} >= 0 ) && ($qossettings{'MAXBDWTH'} >= $qossettings{'MINBDWTH'}) &&( $qossettings{'MAXBDWTH'} <= $qossettings{'SPD'} ) ) { $qossettings{'VALID'} = 'no'; - $message = "Mamimalbandbreite ist ungueltig."; + $message = "$Lang::tr{'false max bandwith'}"; } $qossettings{'SPD'} = ''; } @@ -1374,7 +1491,7 @@ sub validclass { if ( $qossettings{'DEVICE'} eq $qossettings{'RED_DEV'} ) { if ($qossettings{'CLASS'} lt 100 || $qossettings{'CLASS'} ge 121) { $qossettings{'VALID'} = 'no'; - $message = "Die Klassennummer passt nicht zum angegebenen Interface."; + $message = "$Lang::tr{'false classnumber'}"; } } elsif ( $qossettings{'DEVICE'} eq $qossettings{'IMQ_DEV'} ) { if ($qossettings{'CLASS'} lt 200 || $qossettings{'CLASS'} ge 221) { @@ -1391,7 +1508,7 @@ sub validclass { if ( $tmpline[1] eq $qossettings{'CLASS'} ) { $qossettings{'VALID'} = 'no'; - $message = "Die aktuelle Klasse wird bereits verwendet."; + $message = "$Lang::tr{'false classnumber'}"; last } } @@ -1409,7 +1526,7 @@ sub validsubclass { if ( $tmpline[2] eq $qossettings{'SCLASS'} ) { $qossettings{'VALID'} = 'no'; - $message = "Die aktuelle Klasse wird bereits verwendet."; + $message = "$Lang::tr{'class in use'}"; last } }