From mboxrd@z Thu Jan 1 00:00:00 1970 From: nateos2g To: development@lists.ipfire.org Subject: Re: [PATCH] Network based RRD graphs Bytes to Bits Date: Mon, 24 May 2021 17:21:19 -0400 Message-ID: <40d9b29b-9613-75ac-4c58-855e1aa6adc3@fastmail.com> In-Reply-To: <8aebf43d-571a-bdbc-3d2d-131f5b81e4b0@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2319033742834576906==" List-Id: --===============2319033742834576906== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable I noticed your pic is missing 'Outgoing Traffic'. Did you regenerate the language cache files? This only has to done by us=20 manually, but I assume an update package would do this, or the files=20 would already be in new version, like the ISO. The Lang keys are in langs/en/cgi-bin/en.pl, which is in this patch. As=20 these keys are only used for these graphs, as far as I can find, I guess=20 we could change/shorten them. But I didn't want to change something that=20 I wasn't specifically focusing on. Thanks, Nate On 24/05/2021 15:43, Bernhard Bitsch wrote: > Hi, > > I've tested also, for the qos and network graphs. > No problem. > > One annotation: why are the legends 'incoming traffic in bytes per=20 > second' ( new '... bits per second' )? The associated text is=20 > 'incoming traffic' ( obviously in both versions ). > Can't we change this key just to 'incoming traffic'? > This is true for 'outgoing traffic...', 'incoming overhead...', ... > I didn't search where this texts are used in the project. > > Regards, > Bernhard > > Am 24.05.2021 um 18:18 schrieb Matthias Fischer: >> Hi, >> >> thanks for the corrected patch - now I could apply it. >> >> I made a quick test =3D> please see attachments. >> >> Seems to work as expected. >> >> However I cannot test VPN connections, sorry. >> >> Best, >> Matthias >> >> On 24.05.2021 16:04, nateos2g(a)fastmail.com wrote: >>> From: Nate Oaks >>> >>> For proper display of network measurements, Bps (bytes) should be >>> converted to bps (bits). Bytes are for data/storage (RAM, HDD, SSD, >>> etc.), bits are for network bandwidth or throughput (NICs, switches, >>> routers, WiFi adapters, etc.). >>> >>> Networks transfer data as single bits at a time. It=E2=80=99s both more=20 >>> accurate >>> and more intuitive to measure network speed in bits per second that a >>> network connection is transmitting, not the amount of data units, or >>> bytes, it transmits. Notice all network devices are marketed, measure >>> and diplay in bits per second. >>> >>> I simply used RRD CDEF to multiply by 8. >>> >>> NOTE: Found: "ERROR: rpn expressions without DEF or CDEF variables are >>> not supported". >>> Specifically in updateqosgraph, CDEF does not like a number as a >>> variable name. ie. "204" from $classline[1]. >>> >>> Requires update of the language cache files: >>> perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" >>> or: update-lang-cache >>> >>> Found one other asking for this: >>> https://community.ipfire.org/t/ipfire-bandwidth-usage/1203 >>> >>> Signed-off-by: Nate Oaks >>> --- >>> =C2=A0 config/cfgroot/graphs.pl | 202=20 >>> +++++++++++++++++++++------------------ >>> =C2=A0 langs/en/cgi-bin/en.pl=C2=A0=C2=A0 |=C2=A0 13 +-- >>> =C2=A0 2 files changed, 117 insertions(+), 98 deletions(-) >>> >>> diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl >>> index 441d4c483a46..c83ae67bbfc1 100644 >>> --- a/config/cfgroot/graphs.pl >>> +++ b/config/cfgroot/graphs.pl >>> @@ -545,28 +545,30 @@ sub updateifgraph { >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-1".$period, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-r", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-t ".$Lang::tr{'t= raffic on'}." ".$interface."=20 >>> ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bytes per se= cond'}, >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bits per sec= ond'}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEA"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEB"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DBACK".$= color{"color21"}, >>> "DEF:incoming=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/= if_octets-".$interface.".rrd:rx:AVERAGE", >>> "DEF:outgoing=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/= if_octets-".$interface.".rrd:tx:AVERAGE", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingn=3Doutgoing,-1= ,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingb=3Doutgoing,8,= *", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingn=3Doutgoingb,-= 1,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:incomingb=3Dincoming,8,= *", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%-20s",$Lang::tr{'caption'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'maximal'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'average'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'minimal'}), >>> "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", >>> -=20 >>> "AREA:incoming".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incomi= ng=20 >>> traffic in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:MAX:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:AVERAGE:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:MIN:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:LAST:%8.1lf = %sBps\\j", >>> -=20 >>> "AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgo= ing=20 >>> traffic in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:MAX:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:AVERAGE:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:MIN:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:LAST:%8.1lf = %sBps\\j", >>> +=20 >>> "AREA:incomingb".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incom= ing=20 >>> traffic in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:MAX:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:AVERAGE:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:MIN:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:LAST:%8.1lf= %sbps\\j", >>> +=20 >>> "AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgo= ing=20 >>> traffic in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:MAX:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:AVERAGE:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:MIN:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:LAST:%8.1lf= %sbps\\j", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $ERROR =3D RRDs::e= rror; >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return "Error in R= RD::graph for ".$interface.":=20 >>> ".$ERROR."\n" if $ERROR; >>> @@ -582,28 +584,30 @@ sub updatevpngraph { >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-1".$period, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-r", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-t ".$Lang::tr{'t= raffic on'}." ".$interface."=20 >>> ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bytes per se= cond'}, >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bits per sec= ond'}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEA"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEB"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DBACK".$= color{"color21"}, >>> "DEF:incoming=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$i= nterface/if_octets_derive.rrd:rx:AVERAGE", >>> "DEF:outgoing=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$i= nterface/if_octets_derive.rrd:tx:AVERAGE", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingn=3Doutgoing,-1= ,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingb=3Doutgoing,8,= *", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingn=3Doutgoingb,-= 1,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:incomingb=3Dincoming,8,= *", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%-20s",$Lang::tr{'caption'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'maximal'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'average'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'minimal'}), >>> "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", >>> - "AREA:incoming#00dd00:".sprintf("%-20s",$Lang::tr{'incoming=20 >>> traffic in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:MAX:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:AVERAGE:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:MIN:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:LAST:%8.1lf = %sBps\\j", >>> - "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing=20 >>> traffic in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:MAX:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:AVERAGE:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:MIN:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:LAST:%8.1lf = %sBps\\j", >>> + "AREA:incomingb#00dd00:".sprintf("%-20s",$Lang::tr{'incoming=20 >>> traffic in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:MAX:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:AVERAGE:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:MIN:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:LAST:%8.1lf= %sbps\\j", >>> + "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing=20 >>> traffic in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:MAX:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:AVERAGE:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:MIN:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:LAST:%8.1lf= %sbps\\j", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $ERROR =3D RRDs::e= rror; >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return "Error in R= RD::graph for ".$interface.":=20 >>> ".$ERROR."\n" if $ERROR; >>> @@ -619,7 +623,7 @@ sub updatevpnn2ngraph { >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-1".$period, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-r", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-t ".$Lang::tr{'t= raffic on'}." ".$interface."=20 >>> ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bytes per se= cond'}, >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bits per sec= ond'}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEA"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEB"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DBACK".$= color{"color21"}, >>> @@ -629,44 +633,50 @@ sub updatevpnn2ngraph { >>> "DEF:overhead_out=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/openvp= n-$interface/if_octets_derive-overhead.rrd:tx:AVERAGE", >>> "DEF:compression_in=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/open= vpn-$interface/compression_derive-data_in.rrd:uncompressed:AVERAGE", >>> "DEF:compression_out=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/ope= nvpn-$interface/compression_derive-data_out.rrd:uncompressed:AVERAGE", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingn=3Doutgoing,-1= ,*", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:overhead_outn=3Doverhea= d_out,-1,*", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:compression_outn=3Dcomp= ression_out,-1,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingb=3Doutgoing,8,= *", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outgoingn=3Doutgoingb,-= 1,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:incomingb=3Dincoming,8,= *", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:overhead_outb=3Doverhea= d_out,8,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:overhead_outn=3Doverhea= d_outb,-1,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:overhead_inb=3Doverhead= _in,8,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:compression_outb=3Dcomp= ression_out,8,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:compression_outn=3Dcomp= ression_outb,-1,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:compression_inb=3Dcompr= ession_in,8,*", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%-20s",$Lang::tr{'caption'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'maximal'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'average'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'minimal'}), >>> "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", >>> - "AREA:incoming#00dd00:".sprintf("%-23s",$Lang::tr{'incoming=20 >>> traffic in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:MAX:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:AVERAGE:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:MIN:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incoming:LAST:%8.1lf = %sBps\\j", >>> - "STACK:overhead_in#116B11:".sprintf("%-23s",$Lang::tr{'incoming=20 >>> overhead in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_in:MAX:%8.1l= f %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_in:AVERAGE:%= 8.1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_in:MIN:%8.1l= f %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_in:LAST:%8.1= lf %sBps\\j", >>> - "LINE1:compression_in#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming=20 >>> compression in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_in:MAX:%8= .1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_in:AVERAG= E:%8.1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_in:MIN:%8= .1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_in:LAST:%= 8.1lf %sBps\\j", >>> - "AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing=20 >>> traffic in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:MAX:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:AVERAGE:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:MIN:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoing:LAST:%8.1lf = %sBps\\j", >>> - "STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing=20 >>> overhead in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_out:MAX:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_out:AVERAGE:= %8.1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_out:MIN:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_out:LAST:%8.= 1lf %sBps\\j", >>> -=20 >>> "LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing=20 >>> compression in bytes per second'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_out:MAX:%= 8.1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_out:AVERA= GE:%8.1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_out:MIN:%= 8.1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_out:LAST:= %8.1lf %sBps\\j", >>> + "AREA:incomingb#00dd00:".sprintf("%-23s",$Lang::tr{'incoming=20 >>> traffic in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:MAX:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:AVERAGE:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:MIN:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:incomingb:LAST:%8.1lf= %sbps\\j", >>> + "STACK:overhead_inb#116B11:".sprintf("%-23s",$Lang::tr{'incoming=20 >>> overhead in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_inb:MAX:%8.1= lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_inb:AVERAGE:= %8.1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_inb:MIN:%8.1= lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_inb:bLAST:%8= .1lf %sbps\\j", >>> +=20 >>> "LINE1:compression_inb#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming=20 >>> compression in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_inb:MAX:%= 8.1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_inb:AVERA= GE:%8.1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_inb:MIN:%= 8.1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_inb:LAST:= %8.1lf %sbps\\j", >>> + "AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing=20 >>> traffic in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:MAX:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:AVERAGE:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:MIN:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outgoingb:LAST:%8.1lf= %sbps\\j", >>> + "STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing=20 >>> overhead in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_outb:MAX:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_outb:AVERAGE= :%8.1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_outb:MIN:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:overhead_outb:LAST:%8= .1lf %sbps\\j", >>> +=20 >>> "LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing=20 >>> compression in bits per second'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_outb:MAX:= %8.1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_outb:AVER= AGE:%8.1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_outb:MIN:= %8.1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:compression_outb:LAST= :%8.1lf %sbps\\j", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $ERROR =3D RRDs::e= rror; >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return "Error in R= RD::graph for ".$interface.":=20 >>> ".$ERROR."\n" if $ERROR; >>> @@ -683,7 +693,7 @@ sub updatefwhitsgraph { >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-1".$period, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-r", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-t ".$Lang::tr{'f= irewall hits per'}."=20 >>> ".$Lang::tr{$period."-graph"}, >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bytes per se= cond'}, >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bits per sec= ond'}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEA"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEB"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DBACK".$= color{"color21"}, >>> @@ -692,36 +702,41 @@ sub updatefwhitsgraph { >>> "DEF:forward=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-fi= lter-POLICYFWD/ipt_bytes-DROP_FORWARD.rrd:value:AVERAGE", >>> "DEF:newnotsyn=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-= filter-NEWNOTSYN/ipt_bytes-DROP_NEWNOTSYN.rrd:value:AVERAGE", >>> "DEF:portscan=3D".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-f= ilter-PSCAN/ipt_bytes-DROP_PScan.rrd:value:AVERAGE", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:outputb=3Doutput,8,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:inputb=3Dinput,8,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:forwardb=3Dforward,8,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:newnotsynb=3Dnewnotsyn,= 8,*", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "CDEF:portscanb=3Dportscan,8,= *", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%-26s",$Lang::tr{'caption'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'maximal'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%15s",$Lang::tr{'average'}), >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "COMMENT:".sprintf= ("%14s",$Lang::tr{'minimal'}), >>> "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", >>> -=20 >>> "AREA:output".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewall= hits'}."=20 >>> (OUTPUT)"), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:output:MAX:%8.1lf %sB= ps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:output:AVERAGE:%8.1lf= %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:output:MIN:%8.1lf %sB= ps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:output:LAST:%8.1lf %s= Bps\\j", >>> -=20 >>> "STACK:forward".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewa= llhits'}."=20 >>> (FORWARD)"), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:forward:MAX:%8.1lf %s= Bps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:forward:AVERAGE:%8.1l= f %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:forward:MIN:%8.1lf %s= Bps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:forward:LAST:%8.1lf %= sBps\\j", >>> -=20 >>> "STACK:input".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewall= hits'}."=20 >>> (INPUT)"), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:input:MAX:%8.1lf %sBp= s", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:input:AVERAGE:%8.1lf = %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:input:MIN:%8.1lf %sBp= s", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:input:LAST:%8.1lf %sB= ps\\j", >>> -=20 >>> "STACK:newnotsyn".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:newnotsyn:MAX:%8.1lf = %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:newnotsyn:AVERAGE:%8.= 1lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:newnotsyn:MIN:%8.1lf = %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:newnotsyn:LAST:%8.1lf= %sBps\\j", >>> -=20 >>> "STACK:portscan".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'ports= cans'}), >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:portscan:MAX:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:portscan:AVERAGE:%8.1= lf %sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:portscan:MIN:%8.1lf %= sBps", >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:portscan:LAST:%8.1lf = %sBps\\j", >>> +=20 >>> "AREA:outputb".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewal= lhits'}."=20 >>> (OUTPUT)"), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outputb:MAX:%8.1lf %s= bps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outputb:AVERAGE:%8.1l= f %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outputb:MIN:%8.1lf %s= bps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:outputb:LAST:%8.1lf %= sbps\\j", >>> +=20 >>> "STACK:forwardb".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firew= allhits'}."=20 >>> (FORWARD)"), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:forwardb:MAX:%8.1lf %= sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:forwardb:AVERAGE:%8.1= lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:forwardb:MIN:%8.1lf %= sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:forwardb:LAST:%8.1lf = %sbps\\j", >>> +=20 >>> "STACK:inputb".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewal= lhits'}."=20 >>> (INPUT)"), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:inputb:MAX:%8.1lf %sb= ps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:inputb:AVERAGE:%8.1lf= %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:inputb:MIN:%8.1lf %sb= ps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:inputb:LAST:%8.1lf %s= bps\\j", >>> +=20 >>> "STACK:newnotsynb".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"), = >>> >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:newnotsynb:MAX:%8.1lf= %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:newnotsynb:AVERAGE:%8= .1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:newnotsynb:MIN:%8.1lf= %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:newnotsynb:LAST:%8.1l= f %sbps\\j", >>> +=20 >>> "STACK:portscanb".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'port= scans'}), >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:portscanb:MAX:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:portscanb:AVERAGE:%8.= 1lf %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:portscanb:MIN:%8.1lf = %sbps", >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "GPRINT:portscanb:LAST:%8.1lf= %sbps\\j", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $ERROR =3D RRDs::e= rror; >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return "Error in R= RD::graph for firewallhits:=20 >>> ".$ERROR."\n" if $ERROR; >>> @@ -1012,7 +1027,7 @@ sub updateqosgraph { >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-1".$period, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-r", >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-t ".$Lang::tr{'U= tilization on'}."=20 >>> (".$qossettings{'DEV'}.") ".$Lang::tr{'graph per'}."=20 >>> ".$Lang::tr{$period."-graph"}, >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bytes per se= cond'}, >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "-v ".$Lang::tr{'bits per sec= ond'}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEA"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DSHADEB"= .$color{"color19"}, >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "--color=3DBACK".$= color{"color21"}, >>> @@ -1039,21 +1054,24 @@ sub updateqosgraph { >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 } >>> =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 if ( $classline[0] eq $qossettings{'DEV'} ){ >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 push(@command,=20 >>> "DEF:$classline[1]=3D$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRF= X'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE"); >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 # Found: ERROR: rpn expressions without DEF or CDEF=20 >>> variables are not supported >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 # CDEF does not like a number as a variable name.=20 >>> ie. "204" from $classline[1] >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 push(@command,=20 >>> "DEF:$classline[1]bit=3D$mainsettings{'RRDLOG'}/class_$qossettings{'CLASS= PRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE"); >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 push(@command,=20 >>> "CDEF:$classline[8]=3D$classline[1]bit,8,*"); >>> =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # get color to be used for this graph >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 my $graphColor =3D $colorMap{$colorKey}; >>> =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ($count eq "1") { >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 push(@command,=20 >>> "AREA:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1]=20 >>> -".sprintf("%15s",$classline[8])); >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 push(@command,=20 >>> "AREA:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1]=20 >>> -".sprintf("%15s",$classline[8])); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else { >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 push(@command,=20 >>> "STACK:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1]=20 >>> -".sprintf("%15s",$classline[8])); >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 push(@command,=20 >>> "STACK:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1]=20 >>> -".sprintf("%15s",$classline[8])); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } >>> =C2=A0 -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 push(@command, "GPRINT:$classline[1]:MAX:%8.1lf=20 >>> %sBps" >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , "GPRINT:= $classline[1]:AVERAGE:%8.1lf %sBps" >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , "GPRINT:= $classline[1]:MIN:%8.1lf %sBps" >>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , "GPRINT:= $classline[1]:LAST:%8.1lf=20 >>> %sBps\\j"); >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 push(@command, "GPRINT:$classline[8]:MAX:%8.1lf %sbps" >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , "GPRINT:= $classline[8]:AVERAGE:%8.1lf %sbps" >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , "GPRINT:= $classline[8]:MIN:%8.1lf %sbps" >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 , "GPRINT:= $classline[8]:LAST:%8.1lf=20 >>> %sbps\\j"); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $count++; >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 } >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } >>> diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl >>> index dc1fd8d67b30..b0097074beb0 100644 >>> --- a/langs/en/cgi-bin/en.pl >>> +++ b/langs/en/cgi-bin/en.pl >>> @@ -515,6 +515,7 @@ >>> =C2=A0 'broken pipe' =3D> 'Broken pipe', >>> =C2=A0 'buffered memory' =3D> 'Buffered Memory', >>> =C2=A0 'buffers' =3D> 'buffers', >>> +'bits per second' =3D> 'Bits per Second', >>> =C2=A0 'bytes per second' =3D> 'Bytes per Second', >>> =C2=A0 'bytes received' =3D> 'Bytes Received', >>> =C2=A0 'bytes sent' =3D> 'Bytes Sent', >>> @@ -1431,10 +1432,10 @@ >>> =C2=A0 'inactive' =3D> 'inactive', >>> =C2=A0 'include logfiles' =3D> 'Include logfiles', >>> =C2=A0 'incoming' =3D> 'incoming', >>> -'incoming compression in bytes per second' =3D> 'Incoming Compression', >>> +'incoming compression in bits per second' =3D> 'Incoming Compression', >>> =C2=A0 'incoming firewall access' =3D> 'Incoming Firewall Access', >>> -'incoming overhead in bytes per second' =3D> 'Incoming Overhead', >>> -'incoming traffic in bytes per second' =3D> 'Incoming Traffic', >>> +'incoming overhead in bits per second' =3D> 'Incoming Overhead', >>> +'incoming traffic in bits per second' =3D> 'Incoming Traffic', >>> =C2=A0 'incorrect password' =3D> 'Incorrect password', >>> =C2=A0 'info' =3D> 'Info', >>> =C2=A0 'init string' =3D> 'Init:', >>> @@ -1907,7 +1908,7 @@ >>> =C2=A0 'our donors' =3D> 'Our donors', >>> =C2=A0 'out' =3D> 'Out', >>> =C2=A0 'outgoing' =3D> 'outgoing', >>> -'outgoing compression in bytes per second' =3D> 'Outgoing compression', >>> +'outgoing compression in bits per second' =3D> 'Outgoing compression', >>> =C2=A0 'outgoing firewall' =3D> 'Outgoing Firewall', >>> =C2=A0 'outgoing firewall access' =3D> 'Outgoing Firewall Access', >>> =C2=A0 'outgoing firewall add ip group' =3D> 'Add IP Address Group', >>> @@ -1930,8 +1931,8 @@ >>> =C2=A0 'outgoing firewall reset' =3D> 'Reset all', >>> =C2=A0 'outgoing firewall view group' =3D> 'View group', >>> =C2=A0 'outgoing firewall warning' =3D> 'Not selecting source ip or mac=20 >>> ignores them', >>> -'outgoing overhead in bytes per second' =3D> 'Outgoing Overhead', >>> -'outgoing traffic in bytes per second' =3D> 'Outgoing Traffic', >>> +'outgoing overhead in bits per second' =3D> 'Outgoing Overhead', >>> +'outgoing traffic in bits per second' =3D> 'Outgoing Traffic', >>> =C2=A0 'override mtu' =3D> 'Override default MTU', >>> =C2=A0 'ovpn' =3D> 'OpenVPN', >>> =C2=A0 'ovpn add conf' =3D> 'Additional configuration', >>> >> --===============2319033742834576906==--