FreeBSD Bugzilla – Attachment 198418 Details for
Bug 227376
net/rtg: fix runtime php errors / add new feature
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
fix build with mariadb
20181020-rtg-rev2.diff (text/plain), 107.21 KB, created by
Daniel Austin
on 2018-10-20 22:06:41 UTC
(
hide
)
Description:
fix build with mariadb
Filename:
MIME Type:
Creator:
Daniel Austin
Created:
2018-10-20 22:06:41 UTC
Size:
107.21 KB
patch
obsolete
>diff -ruN net/rtg.orig/Makefile net/rtg/Makefile >--- net/rtg.orig/Makefile 2017-04-11 08:17:49.000000000 +0100 >+++ net/rtg/Makefile 2018-10-20 22:59:57.988143000 +0100 >@@ -3,7 +3,7 @@ > > PORTNAME= rtg > PORTVERSION= 0.7.4 >-PORTREVISION= 14 >+PORTREVISION= 15 > CATEGORIES= net > MASTER_SITES= SF \ > ftp://ftpmirror.uk/freebsd-ports/rtg/ >@@ -17,9 +17,13 @@ > RUN_DEPENDS= p5-DBI>=0:databases/p5-DBI \ > p5-DBD-mysql>=0:databases/p5-DBD-mysql > >+FLAVORS= web noweb >+noweb_PKGNAMESUFFIX= poller >+web_PKGNAMESUFFIX= ${PHP_PKGNAMESUFFIX} >+ >+USES= shebangfix perl5 mysql:client ssl > USE_RC_SUBR= rtgpoll >-WANT_PERL= yes >-USES= shebangfix mysql:client ssl >+ > SHEBANG_FILES= etc/95.pl etc/report.pl etc/rtgtargmkr.pl.in > SUB_FILES= pkg-message > GNU_CONFIGURE= yes >@@ -30,18 +34,21 @@ > USERS= rtg > GROUPS= rtg > >-OPTIONS_DEFINE= WEB MYSQL >-OPTIONS_DEFAULT=WEB >+.if ${FLAVOR:U} == web >+USES+= php:web,flavors >+USE_PHP= mysqli spl >+.endif >+ >+OPTIONS_DEFINE= MYSQL > MYSQL_DESC= Pull MySQL server in as a dependancy for local setups >-WEB_DESC= Include PHP-based web client interface pre-requisites > > MYSQL_USES= mysql:server > >-WEB_USES= php >-USE_PHP= mysqli spl >- > CFLAGS+= -fstack-protector > LDFLAGS+= -fstack-protector >+ >+pre-configure: >+ ${REINPLACE_CMD} -e 's/my_thread_init/mysql_thread_init/' ${WRKSRC}/configure > > post-patch: > @${MV} ${WRKSRC}/etc/rtg.conf ${WRKSRC}/etc/rtg.conf.sample >diff -ruN net/rtg.orig/files/patch-cgilib-0.4_cgi.c net/rtg/files/patch-cgilib-0.4_cgi.c >--- net/rtg.orig/files/patch-cgilib-0.4_cgi.c 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-cgilib-0.4_cgi.c 2018-04-02 21:15:02.007100000 +0100 >@@ -0,0 +1,15 @@ >+--- cgilib-0.4/cgi.c.orig 2003-09-25 15:21:06 UTC >++++ cgilib-0.4/cgi.c >+@@ -33,9 +33,12 @@ >+ #ifdef HAVE_CTYPE_H >+ # include <ctype.h> >+ #endif >++/* Unnecessary on FreeBSD; malloc.h included in stdlib.h */ >++/* >+ #ifdef HAVE_MALLOC_H >+ # include <malloc.h> >+ #endif >++*/ >+ >+ #include <cgi.h> >+ >diff -ruN net/rtg.orig/files/patch-cgilib-cgi.c net/rtg/files/patch-cgilib-cgi.c >--- net/rtg.orig/files/patch-cgilib-cgi.c 2014-01-22 17:40:44.000000000 +0000 >+++ net/rtg/files/patch-cgilib-cgi.c 1970-01-01 01:00:00.000000000 +0100 >@@ -1,15 +0,0 @@ >---- cgilib-0.4/cgi.c.orig Thu Sep 25 08:21:06 2003 >-+++ cgilib-0.4/cgi.c Sat May 14 01:28:33 2005 >-@@ -33,9 +33,12 @@ >- #ifdef HAVE_CTYPE_H >- # include <ctype.h> >- #endif >-+/* Unnecessary on FreeBSD; malloc.h included in stdlib.h */ >-+/* >- #ifdef HAVE_MALLOC_H >- # include <malloc.h> >- #endif >-+*/ >- >- #include <cgi.h> >- >diff -ruN net/rtg.orig/files/patch-config-config.h.in net/rtg/files/patch-config-config.h.in >--- net/rtg.orig/files/patch-config-config.h.in 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-config-config.h.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,27 +0,0 @@ >---- config/config.h.in.orig 2003-09-25 15:21:14 UTC >-+++ config/config.h.in >-@@ -91,19 +91,19 @@ >- #undef PACKAGE >- >- /* Define to the address where bug reports for this package should be sent. */ >--#undef PACKAGE_BUGREPORT >-+#undef RTG_PACKAGE_BUGREPORT >- >- /* Define to the full name of this package. */ >--#undef PACKAGE_NAME >-+#undef RTG_PACKAGE_NAME >- >- /* Define to the full name and version of this package. */ >--#undef PACKAGE_STRING >-+#undef RTG_PACKAGE_STRING >- >- /* Define to the one symbol short name of this package. */ >--#undef PACKAGE_TARNAME >-+#undef RTG_PACKAGE_TARNAME >- >- /* Define to the version of this package. */ >--#undef PACKAGE_VERSION >-+#undef RTG_PACKAGE_VERSION >- >- /* Define as the return type of signal handlers (`int' or `void'). */ >- #undef RETSIGTYPE >diff -ruN net/rtg.orig/files/patch-config_config.h.in net/rtg/files/patch-config_config.h.in >--- net/rtg.orig/files/patch-config_config.h.in 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-config_config.h.in 2018-04-02 21:54:49.494298000 +0100 >@@ -0,0 +1,27 @@ >+--- config/config.h.in.orig 2003-09-25 15:21:14 UTC >++++ config/config.h.in >+@@ -91,19 +91,19 @@ >+ #undef PACKAGE >+ >+ /* Define to the address where bug reports for this package should be sent. */ >+-#undef PACKAGE_BUGREPORT >++#undef RTG_PACKAGE_BUGREPORT >+ >+ /* Define to the full name of this package. */ >+-#undef PACKAGE_NAME >++#undef RTG_PACKAGE_NAME >+ >+ /* Define to the full name and version of this package. */ >+-#undef PACKAGE_STRING >++#undef RTG_PACKAGE_STRING >+ >+ /* Define to the one symbol short name of this package. */ >+-#undef PACKAGE_TARNAME >++#undef RTG_PACKAGE_TARNAME >+ >+ /* Define to the version of this package. */ >+-#undef PACKAGE_VERSION >++#undef RTG_PACKAGE_VERSION >+ >+ /* Define as the return type of signal handlers (`int' or `void'). */ >+ #undef RETSIGTYPE >diff -ruN net/rtg.orig/files/patch-etc-95.php net/rtg/files/patch-etc-95.php >--- net/rtg.orig/files/patch-etc-95.php 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-etc-95.php 1970-01-01 01:00:00.000000000 +0100 >@@ -1,72 +0,0 @@ >---- etc/95.php.orig 2003-09-24 20:40:57 UTC >-+++ etc/95.php >-@@ -4,10 +4,8 @@ >- print "<HTML>\n<!-- RTG Version $VERSION -->\n<HEAD>\n"; >- >- /* Connect to RTG MySQL Database */ >-- $dbc=@mysql_connect ($host, $user, $pass) or >-- $dbc=@mysql_connect ("$host:/var/lib/mysql/mysql.sock", $user, $pass) or >-+ $dbc=@mysqli_connect ($host, $user, $pass, $db) or >- die ("MySQL Connection Failed, Check Configuration."); >-- mysql_select_db($db,$dbc); >- >- if ($PHP_SELF == "") { >- $PHP_SELF = "95.php"; >-@@ -50,8 +48,8 @@ function int_stats($statement, $dbc) { >- $max = $avg = $nintyfifth = 0; >- $rate = array(); >- >-- $selectResult=mysql_query($statement, $dbc); >-- while ($selectRow=mysql_fetch_object($selectResult)){ >-+ $selectResult=mysqli_query($dbc, $statement); >-+ while ($selectRow=mysqli_fetch_object($selectResult)){ >- $counter = $selectRow->counter; >- $sample_secs = $selectRow->unixtime; >- $total += $counter; >-@@ -89,9 +87,8 @@ Report: 95th percentile<BR> >- <?php >- echo "<FORM ACTION=\"$PHP_SELF\" METHOD=\"GET\">\n"; >- if (($bt || $smonth)) { >-- $dbc=@mysql_connect ($host, $user, $pass) or >-- $dbc=@mysql_connect ("$host:/var/lib/mysql/mysql.sock", $user, $pass) or die ("MySQL Connection Failed, Check Configuration."); >-- mysql_select_db($db,$dbc); >-+ $dbc=@mysqli_connect ($host, $user, $pass, $db) or >-+ die ("MySQL Connection Failed, Check Configuration."); >- /* Format into GNU date syntax */ >- if ($bt == "") { >- $bt = strtotime("$syear-$smonth-$sday $shour:$smin:00"); >-@@ -104,11 +101,11 @@ Report: 95th percentile<BR> >- $range="dtime>FROM_UNIXTIME($bt) AND dtime<=FROM_UNIXTIME($et)"; >- >- $selectQuery="SELECT id, name, description, rid FROM interface WHERE description LIKE \"%$customer%\""; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- if (mysql_num_rows($selectResult) <= 0) >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ if (mysqli_num_rows($selectResult) <= 0) >- print "<BR>No Such Customer Found.<BR>\n"; >- else { >-- while ($selectRow=mysql_fetch_object($selectResult)){ >-+ while ($selectRow=mysqli_fetch_object($selectResult)){ >- $ids[$selectRow->id] = $selectRow->name; >- $rids[$selectRow->id] = $selectRow->rid; >- $desc[$selectRow->id] = $selectRow->description; >-@@ -127,8 +124,8 @@ Report: 95th percentile<BR> >- foreach($ids as $iid=>$name) { >- >- $selectQuery="SELECT name FROM router WHERE rid=$rids[$iid]"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- $selectRow=mysql_fetch_object($selectResult); >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ $selectRow=mysqli_fetch_object($selectResult); >- $router = $selectRow->name; >- >- if ($yellow) $yellow = 0; >-@@ -201,7 +198,7 @@ Report: 95th percentile<BR> >- echo "<P><INPUT TYPE=\"SUBMIT\" VALUE=\"Ok\">"; >- } >- >-- if ($dbc) mysql_close($dbc); >-+ if ($dbc) mysqli_close($dbc); >- echo "</FORM>\n"; >- ?> >- <BR> >diff -ruN net/rtg.orig/files/patch-etc-Makefile.in net/rtg/files/patch-etc-Makefile.in >--- net/rtg.orig/files/patch-etc-Makefile.in 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-etc-Makefile.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,49 +0,0 @@ >---- etc/Makefile.in.orig 2003-10-02 15:59:32 UTC >-+++ etc/Makefile.in >-@@ -84,19 +84,19 @@ am__quote = @am__quote@ >- install_sh = @install_sh@ >- >- top_builddir = .. >--etcdir = /etc >--webdir = /web >--reportsdir = /bin >-+etcdir = @etcdir@ >-+webdir = @webdir@ >-+reportsdir = @bindir@ >- >--ETC = rtg.conf rtgtargmkr.pl routers createdb BER.pm \ >-+ETC = rtg.conf.sample rtgtargmkr.pl routers.sample createdb BER.pm \ >- SNMP_Session.pm SNMP_util.pm >- >- WEB = rtg.php 95.php view.php common.php rtg.png rtgback.png >- REPORTS = report.pl 95.pl >- >- EXTRA_DIST = rtgtargmkr.pl.in report.pl 95.pl createdb.in \ >-- BER.pm SNMP_Session.pm SNMP_util.pm rtg.conf \ >-- routers rtg.php 95.php view.php common.php.in rtg.png rtgback.png >-+ BER.pm SNMP_Session.pm SNMP_util.pm rtg.conf.sample \ >-+ routers.sample rtg.php 95.php view.php common.php.in rtg.png rtgback.png >- >- subdir = etc >- mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs >-@@ -220,14 +220,14 @@ uninstall-am: uninstall-info-am >- all: >- >- install: installdirs >-- @for i in $(ETC) ; do $(INSTALL) $(srcdir)/$$i $(prefix)$(etcdir) ; echo "install: installed $$i in $(prefix)$(etcdir)" ; done >-- @for i in $(WEB) ; do $(INSTALL) $(srcdir)/$$i $(prefix)$(webdir) ; echo "install: installed $$i in $(prefix)$(webdir)" ; done >-- @for i in $(REPORTS) ; do $(INSTALL) $(srcdir)/$$i $(prefix)$(reportsdir) ; echo "install: installed $$i in $(prefix)$(reportsdir)" ; done >-+ @for i in $(ETC) ; do $(INSTALL) $(srcdir)/$$i $(DESTDIR)$(etcdir) ; echo "install: installed $$i in $(DESTDIR)$(etcdir)" ; done >-+ @for i in $(WEB) ; do $(INSTALL) $(srcdir)/$$i $(DESTDIR)$(webdir) ; echo "install: installed $$i in $(DESTDIR)$(webdir)" ; done >-+ @for i in $(REPORTS) ; do $(INSTALL) $(srcdir)/$$i $(DESTDIR)$(reportsdir) ; echo "install: installed $$i in $(DESTDIR)$(reportsdir)" ; done >- >- installdirs: >-- $(mkinstalldirs) $(prefix)$(etcdir) >-- $(mkinstalldirs) $(prefix)$(webdir) >-- $(mkinstalldirs) $(prefix)$(reportsdir) >-+ $(mkinstalldirs) $(DESTDIR)$(etcdir) >-+ $(mkinstalldirs) $(DESTDIR)$(webdir) >-+ $(mkinstalldirs) $(DESTDIR)$(reportsdir) >- # Tell versions [3.59,3.63) of GNU make to not export all variables. >- # Otherwise a system limit (for SysV at least) may be exceeded. >- .NOEXPORT: >diff -ruN net/rtg.orig/files/patch-etc-rtg.php net/rtg/files/patch-etc-rtg.php >--- net/rtg.orig/files/patch-etc-rtg.php 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-etc-rtg.php 1970-01-01 01:00:00.000000000 +0100 >@@ -1,122 +0,0 @@ >---- etc/rtg.php.orig 2003-09-24 20:42:03 UTC >-+++ etc/rtg.php >-@@ -4,10 +4,8 @@ >- print "<HTML>\n<!-- RTG Version $VERSION -->\n<HEAD>\n"; >- >- /* Connect to RTG MySQL Database */ >-- $dbc=@mysql_connect ($host, $user, $pass) or >-- $dbc=@mysql_connect ("$host:/var/lib/mysql/mysql.sock", $user, $pass) or >-+ $dbc=@mysqli_connect ($host, $user, $pass, $db) or >- die ("MySQL Connection Failed, Check Configuration."); >-- mysql_select_db($db,$dbc); >- >- if ($PHP_SELF == "") { >- $PHP_SELF = "rtg.php"; >-@@ -37,17 +35,17 @@ >- # Determine router, interface names as necessary >- if ($rid && $iid) { >- $selectQuery="SELECT a.name, a.description, a.speed, b.name AS router FROM interface a, router b WHERE a.rid=b.rid AND a.rid=$rid AND a.id=$iid[0]"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- $selectRow=mysql_fetch_object($selectResult); >-- $interfaces = mysql_num_rows($selectResult); >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ $selectRow=mysqli_fetch_object($selectResult); >-+ $interfaces = mysqli_num_rows($selectResult); >- $name = $selectRow->name; >- $description = $selectRow->description; >- $speed = ($selectRow->speed)/1000000; >- $router = $selectRow->router; >- } else if ($rid && !$iid) { >- $selectQuery="SELECT name AS router from router where rid=$rid"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- $selectRow=mysql_fetch_object($selectResult); >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ $selectRow=mysqli_fetch_object($selectResult); >- $router = $selectRow->router; >- } >- >-@@ -71,8 +69,8 @@ echo "<FORM ACTION=\"$PHP_SELF\" METHOD= >- if (!$rid && !$iid) { >- echo "<SELECT NAME=\"rid\" SIZE=10>\n"; >- $selectQuery="SELECT DISTINCT name, rid FROM router ORDER BY name"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- while ($selectRow=mysql_fetch_object($selectResult)){ >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ while ($selectRow=mysqli_fetch_object($selectResult)){ >- echo "<OPTION VALUE=\"$selectRow->rid\">$selectRow->name\n"; >- } >- echo "</SELECT>\n"; >-@@ -91,8 +89,8 @@ if ($rid && !$iid) { >- >- echo "<SELECT MULTIPLE NAME=\"iid[]\" SIZE=10>\n"; >- $selectQuery="SELECT id, name, description FROM interface WHERE rid=$rid ORDER BY name"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- while ($selectRow=mysql_fetch_object($selectResult)){ >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ while ($selectRow=mysqli_fetch_object($selectResult)){ >- echo "<OPTION VALUE=\"$selectRow->id\">$selectRow->name ($selectRow->description)\n"; >- } >- echo "</SELECT>\n"; >-@@ -152,8 +150,8 @@ if (($bt || $smonth) && $iid) { >- $range="$range AND id=$iid[0]"; >- >- $selectQuery="SELECT description, name, speed FROM interface WHERE rid=$rid AND id=$iid[0]"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- $selectRow=mysql_fetch_object($selectResult); >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ $selectRow=mysqli_fetch_object($selectResult); >- echo "<TABLE BORDER=0>\n"; >- echo "<TD><I>Device</I>:</TD><TD>$router ($rid)</TD><TR>\n"; >- echo "<TD><I>Interface</I>:</TD><TD>$selectRow->name ($iid[0])</TD><TR>\n"; >-@@ -165,12 +163,15 @@ if (($bt || $smonth) && $iid) { >- echo "<P>\n"; >- >- #$selectQuery="SELECT DISTINCT id FROM ifInOctets_$rid WHERE $range"; >-- #$selectResult=mysql_query($selectQuery, $dbc); >-- #if (mysql_num_rows($selectResult) <= 0) { >-+ #$selectResult=mysqli_query($dbc, $selectQuery); >-+ #if (mysqli_num_rows($selectResult) <= 0) { >- # print "<BR>No Data Found on Interface for Given Range.<BR>\n"; >- #} >- #else { >- $args = "t1=ifInOctets_$rid&t2=ifOutOctets_$rid&begin=$bt&end=$et&units=bits/s&factor=8"; >-+ $args .= "&title=" . urlencode($selectRow->description); >-+ $args .= "&t1_name=" . urlencode("Input Octets"); >-+ $args .= "&t2_name=" . urlencode("Output Octets"); >- foreach ($iid as $value) { >- $args="$args&iid=$value"; >- } >-@@ -181,8 +182,11 @@ if (($bt || $smonth) && $iid) { >- if ($borderb) $args = "$args&borderb=$borderb"; >- if ($aggr) $args = "$args&aggr=yes"; >- if ($percentile) $args = "$args&percentile=$nth"; >-- print "<IMG SRC=rtgplot.cgi?$args><BR>\n"; >-+ print "<IMG SRC=/cgi-bin/rtgplot.cgi?$args><BR>\n"; >- $args = "t1=ifInUcastPkts_$rid&t2=ifOutUcastPkts_$rid&begin=$bt&end=$et&units=pkts/s"; >-+ $args .= "&title=" . urlencode($selectRow->description); >-+ $args .= "&t1_name=" . urlencode("Input Packets"); >-+ $args .= "&t2_name=" . urlencode("Output Packets"); >- foreach ($iid as $value) { >- $args="$args&iid=$value"; >- } >-@@ -192,13 +196,17 @@ if (($bt || $smonth) && $iid) { >- if ($borderb) $args = "$args&borderb=$borderb"; >- if ($aggr) $args = "$args&aggr=yes"; >- if ($percentile) $args = "$args&percentile=$nth"; >-- print "<IMG SRC=rtgplot.cgi?$args><BR>\n"; >-+ print "<IMG SRC=/cgi-bin/rtgplot.cgi?$args><BR>\n"; >- if ($errors) >-- print "<IMG SRC=rtgplot.cgi?t1=ifInErrors_$rid&begin=$bt&end=$et&units=errors&impulses=yes>\n"; >-+ { >-+ print "<IMG SRC=/cgi-bin/rtgplot.cgi?t1=ifInErrors_$rid&begin=$bt&end=$et&units=errors&impulses=yes"; >-+ print "&title=" . urlencode($selectRow->description); >-+ print "&t1_name=" . urlencode("Errors") . ">\n"; >-+ } >- # } >- } >- >--mysql_close($dbc); >-+mysqli_close($dbc); >- ?> >- >- <P> >diff -ruN net/rtg.orig/files/patch-etc-rtgtargmkr.pl.in net/rtg/files/patch-etc-rtgtargmkr.pl.in >--- net/rtg.orig/files/patch-etc-rtgtargmkr.pl.in 2017-04-11 08:17:49.000000000 +0100 >+++ net/rtg/files/patch-etc-rtgtargmkr.pl.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,29 +0,0 @@ >---- etc/rtgtargmkr.pl.in.orig 2016-11-04 16:36:53 UTC >-+++ etc/rtgtargmkr.pl.in >-@@ -126,7 +126,7 @@ sub find_router_id { >- &sql_insert($sql); >- $rid = &find_router_id($router); >- foreach $mib ( keys %mibs_of_interest ) { >-- $sql = "CREATE TABLE $mib"."_$rid (id INT NOT NULL, dtime DATETIME NOT NULL, counter BIGINT NOT NULL, KEY $mib"."_$rid". "_idx (dtime))"; >-+ $sql = "CREATE TABLE $mib"."_$rid (id INT NOT NULL, dtime DATETIME NOT NULL, counter BIGINT NOT NULL, KEY $mib"."_$rid". "_idx (dtime), KEY id_dtime_idx (id,dtime))"; >- &sql_insert($sql); >- } >- } >-@@ -289,7 +289,7 @@ sub main { >- $year + 1900, $hour, $min; >- print CFG "# Host\tOID\tBits\tCommunity\tTable\tID\tDescription\n"; >- >-- foreach $router (@routers) { >-+ POKE: foreach $router (@routers) { >- $bits = $counterBits{$router}; >- # Sanity check bits >- $bits = $defbits if ( ( $bits != 32 ) && ( $bits != 64 ) ); >-@@ -304,7 +304,7 @@ sub main { >- $system = join ( ' ', @result ); >- print "System: $system\n" if $DEBUG; >- $session = SNMP_Session->open( $router, $communities{$router}, 161 ) >-- || die "Error opening SNMP session to $router"; >-+ || ( print "Error opening SNMP session to $router" and next POKE ); >- if ( $system =~ /.*Cisco.*WS-.*/ ) { >- $system = "Catalyst"; >- $session->map_table( $catalyst, \&process ); >diff -ruN net/rtg.orig/files/patch-etc-view.php net/rtg/files/patch-etc-view.php >--- net/rtg.orig/files/patch-etc-view.php 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-etc-view.php 1970-01-01 01:00:00.000000000 +0100 >@@ -1,117 +0,0 @@ >---- etc/view.php.orig 2003-09-26 15:58:34 UTC >-+++ etc/view.php >-@@ -11,10 +11,8 @@ >- print "<HTML>\n<!-- RTG Version $VERSION -->\n<HEAD>\n"; >- >- /* Connect to RTG MySQL Database */ >-- $dbc=@mysql_connect ($host, $user, $pass) or >-- $dbc=@mysql_connect ("$host:/var/lib/mysql/mysql.sock", $user, $pass) or >-+ $dbc=@mysqli_connect ($host, $user, $pass, $db) or >- die ("MySQL Connection Failed, Check Configuration."); >-- mysql_select_db($db,$dbc); >- >- # Global variables off by default in newer versions of PHP >- if (!$PHP_SELF) { >-@@ -26,17 +24,17 @@ >- # Determine router, interface names as necessary >- if ($rid && $iid) { >- $selectQuery="SELECT a.name, a.description, a.speed, b.name AS router FROM interface a, router b WHERE a.rid=b.rid AND a.rid=$rid AND a.id=$iid"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- $selectRow=mysql_fetch_object($selectResult); >-- $interfaces = mysql_num_rows($selectResult); >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ $selectRow=mysqli_fetch_object($selectResult); >-+ $interfaces = mysqli_num_rows($selectResult); >- $name = $selectRow->name; >- $description = $selectRow->description; >- $speed = ($selectRow->speed)/1000000; >- $router = $selectRow->router; >- } else if ($rid && !$iid) { >- $selectQuery="SELECT name AS router from router where rid=$rid"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- $selectRow=mysql_fetch_object($selectResult); >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ $selectRow=mysqli_fetch_object($selectResult); >- $router = $selectRow->router; >- } >- >-@@ -68,12 +66,12 @@ >- if (!$rid) { >- print "Monitored Devices: <P>\n"; >- $selectQuery="SELECT rid, name FROM router"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- if (mysql_num_rows($selectResult) <= 0) >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ if (mysqli_num_rows($selectResult) <= 0) >- print "<BR>No Routers Found.<BR>\n"; >- else { >- print "<UL>\n"; >-- while ($selectRow=mysql_fetch_object($selectResult)){ >-+ while ($selectRow=mysqli_fetch_object($selectResult)){ >- print "<LI><A HREF=\"$PHP_SELF?rid=$selectRow->rid\">"; >- print "$selectRow->name</A><BR>\n"; >- } >-@@ -95,19 +93,22 @@ >- >- $bt = $et - (60*60*24); >- print "<B>Day View:</B><BR>\n"; >-- print "<IMG SRC=\"rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\">\n"; >-+ print "<IMG SRC=\"/cgi-bin/rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes"; >-+ print "&title=" . urlencode("$router: $name ($description)") . "&t1_name=" . urlencode("Input Octets") . "&t2_name=" . urlencode("Output Octets") . "\">\n"; >- print "<BR><B>$router: $name ($description)</B>\n"; >- print "<BR><HR>\n"; >- >- $bt = $et - (60*60*24*7); >- print "<B>Week View:</B><BR>\n"; >-- print "<IMG SRC=\"rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\">\n"; >-+ print "<IMG SRC=\"/cgi-bin/rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes"; >-+ print "&title=" . urlencode("$router: $name ($description)") . "&t1_name=" . urlencode("Input Octets") . "&t2_name=" . urlencode("Output Octets") . "\">\n"; >- print "<BR><B>$router: $name ($description)</B>\n"; >- print "<BR><HR>\n"; >- >- $bt = $et - (60*60*24*30); >- print "<B>Month View:</B><BR>\n"; >-- print "<IMG SRC=\"rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\">\n"; >-+ print "<IMG SRC=\"/cgi-bin/rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes"; >-+ print "&title=" . urlencode("$router: $name ($description)") . "&t1_name=" . urlencode("Input Octets") . "&t2_name=" . urlencode("Output Octets") . "\">\n"; >- print "<BR><B>$router: $name ($description)</B>\n"; >- print "<BR><BR>\n"; >- } >-@@ -116,8 +117,8 @@ >- >- if ($rid && !$iid) { >- $selectQuery="SELECT id, name, description FROM interface WHERE rid=$rid"; >-- $selectResult=mysql_query($selectQuery, $dbc); >-- $interfaces = mysql_num_rows($selectResult); >-+ $selectResult=mysqli_query($dbc, $selectQuery); >-+ $interfaces = mysqli_num_rows($selectResult); >- if ($interfaces <= 0) >- print "<BR>No Interfaces Found for Router $router (ID: $rid).<BR>\n"; >- else { >-@@ -129,12 +130,15 @@ >- print gmdate('D, d M Y H:i:s \G\M\T', time())."\n"; >- print "</TABLE><HR>\n"; >- print "<TABLE BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"10\">\n"; >-- while ($selectRow=mysql_fetch_object($selectResult)){ >-+ while ($selectRow=mysqli_fetch_object($selectResult)){ >- $ids[$selectRow->id] = $selectRow->name; >- $desc[$selectRow->id] = $selectRow->description; >- $iid = $selectRow->id; >- print "<TD><A HREF=\"$PHP_SELF?rid=$rid&iid=$iid\">\n"; >-- print "<IMG HEIGHT=\"135\" WIDTH=\"500\" SRC=\"rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\" BORDER=\"0\">\n"; >-+ print "<IMG HEIGHT=\"135\" WIDTH=\"500\" SRC=\"/cgi-bin/rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid; >-+ print "&title=" . urlencode("$router: " . $selectRow->name . " (" . $selectRow->description . ")"); >-+ print "&t1_name=" . urlencode("Input Octets") . "&t2_name=" . urlencode("Output Octets"); >-+ print "&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\" BORDER=\"0\">\n"; >- print "</A><BR>\n"; >- print "<B>$selectRow->name ($selectRow->description)</B>\n"; >- if ($even) { >-@@ -148,7 +152,7 @@ >- print "<INPUT TYPE=\"SUBMIT\" VALUE=\"Back to Main\">\n"; >- } >- >-- if ($dbc) mysql_close($dbc); >-+ if ($dbc) mysqli_close($dbc); >- echo "</FORM>\n"; >- ?> >- >diff -ruN net/rtg.orig/files/patch-etc_95.php net/rtg/files/patch-etc_95.php >--- net/rtg.orig/files/patch-etc_95.php 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-etc_95.php 2018-04-02 23:34:48.744704000 +0100 >@@ -0,0 +1,288 @@ >+--- etc/95.php.orig 2003-09-24 20:40:57 UTC >++++ etc/95.php >+@@ -1,41 +1,37 @@ >+ <?php >+ include('./common.php'); >+ >+- print "<HTML>\n<!-- RTG Version $VERSION -->\n<HEAD>\n"; >++ print "<html>\n<!-- RTG Version $VERSION -->\n<head>\n"; >+ >+ /* Connect to RTG MySQL Database */ >+- $dbc=@mysql_connect ($host, $user, $pass) or >+- $dbc=@mysql_connect ("$host:/var/lib/mysql/mysql.sock", $user, $pass) or >++ $dbc=@mysqli_connect ($host, $user, $pass, $db) or >+ die ("MySQL Connection Failed, Check Configuration."); >+- mysql_select_db($db,$dbc); >+ >+- if ($PHP_SELF == "") { >++ if (!isset($PHP_SELF) || ($PHP_SELF == "")) { >+ $PHP_SELF = "95.php"; >+- $customer = $_GET['customer']; >+- $syear = $_GET['syear']; >+- $eyear = $_GET['eyear']; >+- $smonth = $_GET['smonth']; >+- $emonth = $_GET['emonth']; >+- $sday = $_GET['sday']; >+- $eday = $_GET['eday']; >+- $shour = $_GET['shour']; >+- $ehour = $_GET['ehour']; >+- $smin = $_GET['smin']; >+- $emin = $_GET['emin']; >+- $debug = $_GET['debug']; >++ $customer = isset($_GET['customer'])?$_GET['customer']:""; >++ $syear = isset($_GET['syear'])?$_GET['syear']:""; >++ $eyear = isset($_GET['eyear'])?$_GET['eyear']:""; >++ $smonth = isset($_GET['smonth'])?$_GET['smonth']:""; >++ $emonth = isset($_GET['emonth'])?$_GET['emonth']:""; >++ $sday = isset($_GET['sday'])?$_GET['sday']:""; >++ $eday = isset($_GET['eday'])?$_GET['eday']:""; >++ $shour = isset($_GET['shour'])?$_GET['shour']:""; >++ $ehour = isset($_GET['ehour'])?$_GET['ehour']:""; >++ $smin = isset($_GET['smin'])?$_GET['smin']:""; >++ $emin = isset($_GET['emin'])?$_GET['emin']:""; >++ $debug = isset($_GET['debug'])?$_GET['debug']:""; >+ } >+ >+- print "<TITLE>RTG: "; >+- if ($customer) print "$customer\n"; >++ print "<title>RTG: "; >++ if ($customer != "") print "$customer\n"; >+ ?> >+ >+-</TITLE> >+-</HEAD> >+-<BODY BGCOLOR="ffffff"> >+-<A HREF="http://rtg.sourceforge.net" ALT="[RTG Home Page]"> >+-<IMG SRC="rtg.png" BORDER="0"> >+-</A> >+-<P> >++</title> >++</head> >++<body bgcolor="ffffff"> >++<a href="http://rtg.sourceforge.net"><img src="rtg.png" border="0" alt="[RTG Home Page]" /></a> >++<p> >+ >+ <?php >+ function cmp($c1, $c2) { >+@@ -50,8 +46,8 @@ function int_stats($statement, $dbc) { >+ $max = $avg = $nintyfifth = 0; >+ $rate = array(); >+ >+- $selectResult=mysql_query($statement, $dbc); >+- while ($selectRow=mysql_fetch_object($selectResult)){ >++ $selectResult=mysqli_query($dbc, $statement); >++ while ($selectRow=mysqli_fetch_object($selectResult)){ >+ $counter = $selectRow->counter; >+ $sample_secs = $selectRow->unixtime; >+ $total += $counter; >+@@ -83,132 +79,136 @@ function int_stats($statement, $dbc) { >+ } >+ ?> >+ >+-<HR> >+-Report: 95th percentile<BR> >++<hr /> >++Report: 95th percentile<br /> >+ >+ <?php >+- echo "<FORM ACTION=\"$PHP_SELF\" METHOD=\"GET\">\n"; >+- if (($bt || $smonth)) { >+- $dbc=@mysql_connect ($host, $user, $pass) or >+- $dbc=@mysql_connect ("$host:/var/lib/mysql/mysql.sock", $user, $pass) or die ("MySQL Connection Failed, Check Configuration."); >+- mysql_select_db($db,$dbc); >++ echo "<form action=\"$PHP_SELF\" method=\"get\">\n"; >++ if (($bt != "") || ($smonth != "")) { >++ $dbc=@mysqli_connect ($host, $user, $pass, $db) or >++ die ("MySQL Connection Failed, Check Configuration."); >+ /* Format into GNU date syntax */ >+ if ($bt == "") { >+ $bt = strtotime("$syear-$smonth-$sday $shour:$smin:00"); >+ $et = strtotime("$eyear-$emonth-$eday $ehour:$emin:59"); >+ } >+- echo "Customer: $customer <BR>\n"; >++ echo "Customer: $customer <br />\n"; >+ print strftime("Period: %m/%d/%Y %H:%M - ", $bt); >+ print strftime("%m/%d/%Y %H:%M<P>\n", $et); >+ >+- $range="dtime>FROM_UNIXTIME($bt) AND dtime<=FROM_UNIXTIME($et)"; >++ $range="`dtime`>FROM_UNIXTIME(" . mysqli_real_escape_string($dbc, $bt) . >++ ") AND `dtime`<=FROM_UNIXTIME(" . mysqli_real_escape_string($dbc, $et) . ")"; >+ >+- $selectQuery="SELECT id, name, description, rid FROM interface WHERE description LIKE \"%$customer%\""; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- if (mysql_num_rows($selectResult) <= 0) >+- print "<BR>No Such Customer Found.<BR>\n"; >++ $selectQuery="SELECT `id`, `name`, `description`, `rid` FROM `interface` WHERE " . >++ "`description` LIKE \"%" . mysqli_real_escape_string($dbc, $customer) . "%\""; >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ if (mysqli_num_rows($selectResult) <= 0) >++ print "<br />No Such Customer Found.<br />\n"; >+ else { >+- while ($selectRow=mysql_fetch_object($selectResult)){ >++ while ($selectRow=mysqli_fetch_object($selectResult)){ >+ $ids[$selectRow->id] = $selectRow->name; >+ $rids[$selectRow->id] = $selectRow->rid; >+ $desc[$selectRow->id] = $selectRow->description; >+ } >+- echo "<TABLE BORDER=\"1\">\n"; >+- echo "<TR BGCOLOR=\"#E0E0E0\">\n"; >+- echo "<TH COLSPAN=\"3\">Interface<TH COLSPAN=\"2\">Current Rate<TH COLSPAN=\"2\">Max Rate<TH COLSPAN=\"2\">95th %\n"; >++ echo "<table border=\"1\">\n"; >++ echo "<tr bgcolor=\"#E0E0E0\">\n"; >++ echo "<th colspan=\"3\">Interface</th><th colspan=\"2\">Current Rate</th><th colspan=\"2\">Max Rate</th><th colspan=\"2\">95th %</th>\n"; >+ if ($debug) >+- echo "<TH COLSPAN=\"2\">Samples<TH COLSPAN=\"2\">Ignore Top\n"; >+- echo "<TR BGCOLOR=\"#E0E0E0\">\n"; >+- echo "<TH>Name<TH>Description<TH>Router<TH>In (Mbps)<TH>Out (Mbps)<TH>In<TH>Out<TH>In<TH>Out\n"; >++ echo "<th colspan=\"2\">Samples</th><th colspan=\"2\">Ignore Top</th>\n"; >++ echo "</tr>\n"; >++ echo "<tr bgcolor=\"#E0E0E0\">\n"; >++ echo "<th>Name</th><th>Description</th><th>Router</th><th>In (Mbps)</th><th>Out (Mbps)</th><th>In</th><th>Out</th><th>In</th><th>Out</th>\n"; >+ if ($debug) >+- echo "<TH>In<TH>Out<TH>In<TH>Out\n"; >+- echo "<TR BGCOLOR=\"#ffffcc\">\n"; >++ echo "<th>In</th><th>Out</th><th>In</th><th>Out</th>\n"; >++ echo "</tr>\n"; >++ echo "<tr bgcolor=\"#ffffcc\">\n"; >+ $yellow = 1; >+ foreach($ids as $iid=>$name) { >+ >+- $selectQuery="SELECT name FROM router WHERE rid=$rids[$iid]"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- $selectRow=mysql_fetch_object($selectResult); >++ $selectQuery="SELECT `name` FROM `router` WHERE `rid`=$rids[$iid]"; >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ $selectRow=mysqli_fetch_object($selectResult); >+ $router = $selectRow->name; >+ >+ if ($yellow) $yellow = 0; >+ else $yellow = 1; >+ >+- echo "<TD>$name<TD>$desc[$iid]<TD>$router"; >++ echo "<td>$name</td><td>$desc[$iid]</td><td>$router</td>"; >+ >+- $selectQuery="SELECT counter, UNIX_TIMESTAMP(dtime) as unixtime, dtime from ifInOctets_$rids[$iid] WHERE $range AND id=$iid ORDER BY dtime"; >++ $selectQuery="SELECT `counter`, UNIX_TIMESTAMP(`dtime`) AS `unixtime`, `dtime` FROM `ifInOctets_$rids[$iid]` WHERE $range AND `id`=$iid ORDER BY `dtime`"; >+ list ($intbytes_in, $maxin, $avgin, $nfin,$insamples,$inignore) = int_stats($selectQuery, $dbc); >+ $bytesin = round($intbytes_in/1000000); >+ >+- $selectQuery="SELECT counter, UNIX_TIMESTAMP(dtime) as unixtime, dtime from ifOutOctets_$rids[$iid] WHERE $range AND id=$iid ORDER BY dtime"; >++ $selectQuery="SELECT `counter`, UNIX_TIMESTAMP(`dtime`) AS `unixtime`, `dtime` FROM `ifOutOctets_$rids[$iid]` WHERE $range AND `id`=$iid ORDER BY `dtime`"; >+ list ($intbytes_out, $maxout, $avgout, $nfout,$outsamples,$outignore) = int_stats($selectQuery, $dbc); >+ $bytesout = round($intbytes_in/1000000); >+ >+- printf("<TD ALIGN=\"right\">%2.2f", $avgin/1000000); >+- printf("<TD ALIGN=\"right\">%2.2f", $avgout/1000000); >+- printf("<TD ALIGN=\"right\">%2.2f", $maxin/1000000); >+- printf("<TD ALIGN=\"right\">%2.2f", $maxout/1000000); >+- printf("<TD ALIGN=\"right\">%2.2f", $nfin/1000000); >+- printf("<TD ALIGN=\"right\">%2.2f", $nfout/1000000); >++ printf("<td align=\"right\">%2.2f</td>", $avgin/1000000); >++ printf("<td align=\"right\">%2.2f</td>", $avgout/1000000); >++ printf("<td align=\"right\">%2.2f</td>", $maxin/1000000); >++ printf("<td align=\"right\">%2.2f</td>", $maxout/1000000); >++ printf("<td align=\"right\">%2.2f</td>", $nfin/1000000); >++ printf("<td align=\"right\">%2.2f</td>", $nfout/1000000); >+ if ($debug) { >+- echo "<TD ALIGN=\"right\">$insamples<TD ALIGN=\"right\">$outsamples<TD ALIGN=\"right\">$inignore<TD ALIGN=\"right\">$outignore"; >++ echo "<td align=\"right\">$insamples</td><td align=\"right\">$outsamples</td><td align=\"right\">$inignore</td><td align=\"right\">$outignore</td>"; >+ } >+- if ($yellow) echo "<TR BGCOLOR=\"#ffffcc\">\n"; >+- else echo "<TR BGCOLOR=\"#94D6E7\">\n"; >++ echo "</tr>\n"; >++ if ($yellow) echo "<tr bgcolor=\"#ffffcc\">\n"; >++ else echo "<tr bgcolor=\"#94D6E7\">\n"; >+ } >+- echo "</TABLE>\n"; >++ echo "</table>\n"; >+ } >+ } else { >+- echo "Customer Name: <INPUT TYPE=\"text\" NAME=\"customer\"><BR>\n"; >+- echo "<P><TABLE>\n"; >+- echo "<TD>From: \n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"smonth\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "Customer Name: <input type=\"text\" name=\"customer\" /><br />\n"; >++ echo "<p><table>\n"; >++ echo "<tr><td>From: </td>\n"; >++ echo "<td><input type=\"text\" name=\"smonth\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("m")); >+- echo "\"> / \n"; >+- echo "<INPUT TYPE=TEXT NAME=\"sday\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "\" /> / \n"; >++ echo "<input type=\"text\" name=\"sday\" size=\"3\" maxlength=\"2\" value=\""; >+ printf("%02d", (date("d") - 1)); >+- echo "\"> / \n"; >+- echo "<INPUT TYPE=TEXT NAME=\"syear\" SIZE=5 MAXLENGTH=4 VALUE=\""; >++ echo "\" /> / \n"; >++ echo "<input type=\"text\" name=\"syear\" size=\"5\" maxlength=\"4\" value=\""; >+ print (date("Y")); >+- echo "\">\n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"shour\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "\" /></td>\n"; >++ echo "<td><input type=\"text\" name=\"shour\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("H")); >+- echo "\">:\n"; >+- echo "<INPUT TYPE=TEXT NAME=\"smin\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "\" />:\n"; >++ echo "<input type=\"text\" name=\"smin\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("i")); >+- echo "\">\n"; >++ echo "\" /></td></tr>\n"; >+ >+- echo "<TR><TD>To: \n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"emonth\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "<tr><td>To: </td>\n"; >++ echo "<td><input type=\"text\" name=\"emonth\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("m")); >+- echo "\"> / \n"; >+- echo "<INPUT TYPE=TEXT NAME=\"eday\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "\" /> / \n"; >++ echo "<input type=\"text\" name=\"eday\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("d")); >+- echo "\"> / \n"; >+- echo "<INPUT TYPE=TEXT NAME=\"eyear\" SIZE=5 MAXLENGTH=4 VALUE=\""; >++ echo "\" /> / \n"; >++ echo "<input type=\"text\" name=\"eyear\" size=\"5\" maxlength=\"4\" value=\""; >+ print (date("Y")); >+- echo "\">\n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"ehour\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "\" /></td>\n"; >++ echo "<td><input type=\"text\" name=\"ehour\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("H")); >+- echo "\">:\n"; >+- echo "<INPUT TYPE=TEXT NAME=\"emin\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "\" />:\n"; >++ echo "<input type=\"text\" name=\"emin\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("i")); >+- echo "\">\n"; >+- echo "<TR><TD>Debug: \n"; >+- echo "<TD><INPUT TYPE=CHECKBOX NAME=\"debug\">\n"; >+- echo "</TABLE>\n"; >++ echo "\" /></td></tr>\n"; >++ echo "<tr><td>Debug: </td>\n"; >++ echo "<td><input type=\"checkbox\" name=\"debug\" /></td></tr>\n"; >++ echo "</table>\n"; >+ >+- echo "<P><INPUT TYPE=\"SUBMIT\" VALUE=\"Ok\">"; >++ echo "<p><input type=\"submit\" VALUE=\"Ok\" />"; >+ } >+ >+- if ($dbc) mysql_close($dbc); >+- echo "</FORM>\n"; >++ if ($dbc) mysqli_close($dbc); >++ echo "</form>\n"; >+ ?> >+-<BR> >+-<HR> >+-<FONT FACE="Arial" SIZE="2"> >++<br /> >++<hr /> >++<font face="Arial" size="2"> >+ <?php >+- print "<A HREF=\"http://rtg.sourceforge.net\">RTG</A> Version $VERSION</FONT>"; >++ print "<a href=\"http://rtg.sourceforge.net\">RTG</a> Version $VERSION</font>"; >+ ?> >+-</BODY> >+-</HTML> >++</body> >++</html> >diff -ruN net/rtg.orig/files/patch-etc_95.pl net/rtg/files/patch-etc_95.pl >--- net/rtg.orig/files/patch-etc_95.pl 2017-04-11 08:17:49.000000000 +0100 >+++ net/rtg/files/patch-etc_95.pl 2018-04-08 16:45:47.941788000 +0100 >@@ -1,4 +1,4 @@ >---- etc/95.pl.orig 2016-11-04 16:36:01 UTC >+--- etc/95.pl.orig 2018-04-02 20:14:41 UTC > +++ etc/95.pl > @@ -31,7 +31,7 @@ $pass="rtgdefault"; > $onedaysec=60*60*24; >@@ -9,3 +9,52 @@ > foreach $conf (@configs) { > if (open CONF, "<$conf") { > print "Reading [$conf].\n" if $DEBUG; >+@@ -207,13 +207,13 @@ print "Period: [", format_dt($startdate) >+ write; >+ ($name,$router, $ratein, $rateout, $maxratein, $maxrateout, $nfratein, $nfrateout) = ("Connection", "", "Mbps", "Mbps", "Mbps", "Mbps", "Mbps", "Mbps"); >+ write; >+-print "--------------------------------------------------------------------------------\n"; >++print "----------------------------------------------------------------------------------------------------\n"; >+ >+ $dbh= DBI->connect("DBI:mysql:$db:host=$host", $user, $pass); >+ $dbh2= DBI->connect("DBI:mysql:$db:host=$host", $user, $pass); >+-$range="dtime>$startdate and dtime<=$enddate"; >++$range="`dtime`>$startdate AND `dtime`<=$enddate"; >+ >+-$statement="SELECT id FROM interface WHERE description LIKE \"%$cust%\""; >++$statement="SELECT `id` FROM `interface` WHERE `description` LIKE \"%$cust%\""; >+ $sth = $dbh->prepare($statement) >+ or die "Can't prepare $statement: $dbh->errstr\n"; >+ $rv = $sth->execute >+@@ -223,19 +223,19 @@ while (@row = $sth->fetchrow_array ()) { >+ } >+ >+ foreach $interface (@interfaces) { >+- $statement="SELECT rid, name, speed FROM interface WHERE id=$interface"; >++ $statement="SELECT `rid`, `name`, `speed` FROM `interface` WHERE `id`=$interface"; >+ &run_query($statement); >+ ($rid, $name, $speed) = @row; >+ >+- $statement="SELECT rid, name FROM router WHERE rid=$rid"; >++ $statement="SELECT `rid`, `name` FROM `router` WHERE `rid`=$rid"; >+ &run_query($statement); >+ ($rid, $router) = @row; >+ >+- $statement="SELECT counter, UNIX_TIMESTAMP(dtime), dtime FROM ifInOctets_".$rid." WHERE $range AND id=$interface ORDER BY dtime"; >++ $statement="SELECT `counter`, UNIX_TIMESTAMP(`dtime`), `dtime` FROM `ifInOctets_".$rid."` WHERE $range AND `id`=$interface ORDER BY `dtime`"; >+ ($intbytes_in, $maxin, $avgin, $nfin) = &interface_stats($statement); >+ $bytesin = int($intbytes_in/1000000 + .5); >+ >+- $statement="SELECT counter, UNIX_TIMESTAMP(dtime), dtime FROM ifOutOctets_".$rid." WHERE $range AND id=$interface ORDER BY dtime"; >++ $statement="SELECT `counter`, UNIX_TIMESTAMP(`dtime`), `dtime` FROM `ifOutOctets_".$rid."` WHERE $range AND `id`=$interface ORDER BY `dtime`"; >+ ($intbytes_out, $maxout, $avgout, $nfout) = &interface_stats($statement); >+ $bytesout = int($intbytes_out/1000000 + .5); >+ >+@@ -279,6 +279,6 @@ $rc = $dbh->disconnect; >+ exit; >+ >+ format STDOUT = >+-@<<<<<<<<<<< @<<<<<<<<<<< @>>>>>>> @>>>>>>> @>>>>>> @>>>>>> @>>>>>> @>>>>>> >++@<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @>>>>>>> @>>>>>>> @>>>>>> @>>>>>> @>>>>>> @>>>>>> >+ $name,$router, $ratein, $rateout, $maxratein, $maxrateout, $nfratein, $nfrateout >+ . >diff -ruN net/rtg.orig/files/patch-etc_Makefile.in net/rtg/files/patch-etc_Makefile.in >--- net/rtg.orig/files/patch-etc_Makefile.in 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-etc_Makefile.in 2018-04-02 21:54:36.216395000 +0100 >@@ -0,0 +1,49 @@ >+--- etc/Makefile.in.orig 2003-10-02 15:59:32 UTC >++++ etc/Makefile.in >+@@ -84,19 +84,19 @@ am__quote = @am__quote@ >+ install_sh = @install_sh@ >+ >+ top_builddir = .. >+-etcdir = /etc >+-webdir = /web >+-reportsdir = /bin >++etcdir = @etcdir@ >++webdir = @webdir@ >++reportsdir = @bindir@ >+ >+-ETC = rtg.conf rtgtargmkr.pl routers createdb BER.pm \ >++ETC = rtg.conf.sample rtgtargmkr.pl routers.sample createdb BER.pm \ >+ SNMP_Session.pm SNMP_util.pm >+ >+ WEB = rtg.php 95.php view.php common.php rtg.png rtgback.png >+ REPORTS = report.pl 95.pl >+ >+ EXTRA_DIST = rtgtargmkr.pl.in report.pl 95.pl createdb.in \ >+- BER.pm SNMP_Session.pm SNMP_util.pm rtg.conf \ >+- routers rtg.php 95.php view.php common.php.in rtg.png rtgback.png >++ BER.pm SNMP_Session.pm SNMP_util.pm rtg.conf.sample \ >++ routers.sample rtg.php 95.php view.php common.php.in rtg.png rtgback.png >+ >+ subdir = etc >+ mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs >+@@ -220,14 +220,14 @@ uninstall-am: uninstall-info-am >+ all: >+ >+ install: installdirs >+- @for i in $(ETC) ; do $(INSTALL) $(srcdir)/$$i $(prefix)$(etcdir) ; echo "install: installed $$i in $(prefix)$(etcdir)" ; done >+- @for i in $(WEB) ; do $(INSTALL) $(srcdir)/$$i $(prefix)$(webdir) ; echo "install: installed $$i in $(prefix)$(webdir)" ; done >+- @for i in $(REPORTS) ; do $(INSTALL) $(srcdir)/$$i $(prefix)$(reportsdir) ; echo "install: installed $$i in $(prefix)$(reportsdir)" ; done >++ @for i in $(ETC) ; do $(INSTALL) $(srcdir)/$$i $(DESTDIR)$(etcdir) ; echo "install: installed $$i in $(DESTDIR)$(etcdir)" ; done >++ @for i in $(WEB) ; do $(INSTALL) $(srcdir)/$$i $(DESTDIR)$(webdir) ; echo "install: installed $$i in $(DESTDIR)$(webdir)" ; done >++ @for i in $(REPORTS) ; do $(INSTALL) $(srcdir)/$$i $(DESTDIR)$(reportsdir) ; echo "install: installed $$i in $(DESTDIR)$(reportsdir)" ; done >+ >+ installdirs: >+- $(mkinstalldirs) $(prefix)$(etcdir) >+- $(mkinstalldirs) $(prefix)$(webdir) >+- $(mkinstalldirs) $(prefix)$(reportsdir) >++ $(mkinstalldirs) $(DESTDIR)$(etcdir) >++ $(mkinstalldirs) $(DESTDIR)$(webdir) >++ $(mkinstalldirs) $(DESTDIR)$(reportsdir) >+ # Tell versions [3.59,3.63) of GNU make to not export all variables. >+ # Otherwise a system limit (for SysV at least) may be exceeded. >+ .NOEXPORT: >diff -ruN net/rtg.orig/files/patch-etc_SNMP__util.pm net/rtg/files/patch-etc_SNMP__util.pm >--- net/rtg.orig/files/patch-etc_SNMP__util.pm 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-etc_SNMP__util.pm 2018-04-02 23:56:13.096427000 +0100 >@@ -0,0 +1,22 @@ >+--- etc/SNMP_util.pm.orig 2018-04-02 22:51:02 UTC >++++ etc/SNMP_util.pm >+@@ -1129,16 +1129,16 @@ sub snmpMIB_to_OID ($) { >+ $buf =~ s/OBJECT-GROUP/OBJECT IDENTIFIER/; >+ $buf =~ s/MODULE-IDENTITY/OBJECT IDENTIFIER/; >+ $buf =~ s/ IMPORTS .*\;//; >+- $buf =~ s/ SEQUENCE {.*}//; >++ $buf =~ s/ SEQUENCE \{.*}//; >+ $buf =~ s/ SYNTAX .*//; >+ $buf =~ s/ [\w-]+ ::= OBJECT IDENTIFIER//; >+- $buf =~ s/ OBJECT IDENTIFIER .* ::= {/ OBJECT IDENTIFIER ::= {/; >++ $buf =~ s/ OBJECT IDENTIFIER .* ::= \{/ OBJECT IDENTIFIER ::= {/; >+ $buf =~ s/".*"//; >+ if ($buf =~ /"/) { >+ $quote = 1; >+ } >+ >+- if ($buf =~ / ([\w\-]+) OBJECT IDENTIFIER ::= {([^}]+)}/) { >++ if ($buf =~ / ([\w\-]+) OBJECT IDENTIFIER ::= \{([^}]+)}/) { >+ $var = $1; >+ $buf = $2; >+ undef $val; >diff -ruN net/rtg.orig/files/patch-etc_common.php.in net/rtg/files/patch-etc_common.php.in >--- net/rtg.orig/files/patch-etc_common.php.in 2017-04-11 08:17:49.000000000 +0100 >+++ net/rtg/files/patch-etc_common.php.in 2018-04-08 16:47:03.467270000 +0100 >@@ -1,5 +1,11 @@ > --- etc/common.php.in.orig 2003-09-26 15:52:29 UTC > +++ etc/common.php.in >+@@ -1,4 +1,4 @@ >+-<? >++<?php >+ /* Begin with reasonable defaults */ >+ $VERSION = "@VERSION@"; >+ $host="localhost"; > @@ -6,10 +6,13 @@ > $pass="rtgdefault"; > $db="rtg"; >diff -ruN net/rtg.orig/files/patch-etc_createdb.in net/rtg/files/patch-etc_createdb.in >--- net/rtg.orig/files/patch-etc_createdb.in 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-etc_createdb.in 2018-04-02 23:56:13.104109000 +0100 >@@ -0,0 +1,146 @@ >+--- etc/createdb.in.orig 2018-04-02 22:52:32 UTC >++++ etc/createdb.in >+@@ -23,11 +23,8 @@ echo "" >+ >+ # Create the necessary SQL in two /tmp files >+ cat <<EOT >/tmp/mysql.sql >+-INSERT INTO user (Host, User, Password) VALUES ('$HOST','$USER',PASSWORD("$RTGPASS")); >+-INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, >+-Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv) >+-VALUES ('$HOST','$DATABASE','$USER','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); >+-FLUSH PRIVILEGES; >++CREATE USER '$USER'@'$HOST' IDENTIFIED BY '$RTG_PASS'; >++GRANT ALL ON '$DATABASE'.* TO '$USER'@'$HOST'; >+ EOT >+ >+ cat <<EOT >/tmp/rtg.sql >+@@ -35,81 +32,81 @@ cat <<EOT >/tmp/rtg.sql >+ # Table structure for table 'router' >+ # >+ >+-CREATE TABLE router ( >+- rid int(11) unsigned NOT NULL auto_increment, >+- name char(120) NOT NULL default '', >+- pop char(10) NOT NULL default '', >+- popid tinyint(3) unsigned NOT NULL default '0', >+- PRIMARY KEY (rid) >++CREATE TABLE `router` ( >++ `rid` int(11) unsigned NOT NULL auto_increment, >++ `name` char(120) NOT NULL default '', >++ `pop` char(10) NOT NULL default '', >++ `popid` tinyint(3) unsigned NOT NULL default '0', >++ PRIMARY KEY (`rid`) >+ ); >+ >+ # >+ # Table structure for table 'interface' >+ # >+ >+-CREATE TABLE interface ( >+- id int(11) unsigned NOT NULL auto_increment, >+- name char(255) NOT NULL default '', >+- rid int(11) NOT NULL default '0', >+- speed bigint(11) default NULL, >+- description char(255) default NULL, >+- status enum('active','inactive') default 'active', >+- PRIMARY KEY (id) >++CREATE TABLE `interface` ( >++ `id` int(11) unsigned NOT NULL auto_increment, >++ `name` char(255) NOT NULL default '', >++ `rid` int(11) NOT NULL default '0', >++ `speed` bigint(11) default NULL, >++ `description` char(255) default NULL, >++ `status` enum('active','inactive') default 'active', >++ PRIMARY KEY (`id`) >+ ); >+ >+ # >+ # Table structure for table 'ifInOctets' >+ # >+ >+-CREATE TABLE ifInOctets ( >+- id int(11) NOT NULL default '0', >+- dtime datetime NOT NULL default '0000-00-00 00:00:00', >+- counter bigint(20) NOT NULL default '0', >+- KEY ifInOctets_idx (dtime) >++CREATE TABLE `ifInOctets` ( >++ `id` int(11) NOT NULL default '0', >++ `dtime` datetime NOT NULL default '0000-00-00 00:00:00', >++ `counter` bigint(20) NOT NULL default '0', >++ KEY `ifInOctets_idx` (`dtime`) >+ ); >+ >+ # >+ # Table structure for table 'ifOutOctets' >+ # >+ >+-CREATE TABLE ifOutOctets ( >+- id int(11) NOT NULL default '0', >+- dtime datetime NOT NULL default '0000-00-00 00:00:00', >+- counter bigint(20) NOT NULL default '0', >+- KEY ifOutOctets_idx (dtime) >++CREATE TABLE `ifOutOctets` ( >++ `id` int(11) NOT NULL default '0', >++ `dtime` datetime NOT NULL default '0000-00-00 00:00:00', >++ `counter` bigint(20) NOT NULL default '0', >++ KEY `ifOutOctets_idx` (`dtime`) >+ ); >+ >+ # >+ # Table structure for table 'ifInUcastPkts' >+ # >+ >+-CREATE TABLE ifInUcastPkts ( >+- id int(11) NOT NULL default '0', >+- dtime datetime NOT NULL default '0000-00-00 00:00:00', >+- counter bigint(20) NOT NULL default '0', >+- KEY ifInUcastPkts_idx (dtime) >++CREATE TABLE `ifInUcastPkts` ( >++ `id` int(11) NOT NULL default '0', >++ `dtime` datetime NOT NULL default '0000-00-00 00:00:00', >++ `counter` bigint(20) NOT NULL default '0', >++ KEY `ifInUcastPkts_idx` (`dtime`) >+ ); >+ >+ # >+ # Table structure for table 'ifOutUcastPkts' >+ # >+ >+-CREATE TABLE ifOutUcastPkts ( >+- id int(11) NOT NULL default '0', >+- dtime datetime NOT NULL default '0000-00-00 00:00:00', >+- counter bigint(20) NOT NULL default '0', >+- KEY ifOutUcastPkts_idx (dtime) >++CREATE TABLE `ifOutUcastPkts` ( >++ `id` int(11) NOT NULL default '0', >++ `dtime` datetime NOT NULL default '0000-00-00 00:00:00', >++ `counter` bigint(20) NOT NULL default '0', >++ KEY `ifOutUcastPkts_idx` (`dtime`) >+ ); >+ >+ # >+ # Table structure for table 'ifInErrors' >+ # >+ >+-CREATE TABLE ifInErrors ( >+- id int(11) NOT NULL default '0', >+- dtime datetime NOT NULL default '0000-00-00 00:00:00', >+- counter bigint(20) NOT NULL default '0', >+- KEY ifInErrors_idx (dtime) >++CREATE TABLE `ifInErrors` ( >++ `id` int(11) NOT NULL default '0', >++ `dtime` datetime NOT NULL default '0000-00-00 00:00:00', >++ `counter` bigint(20) NOT NULL default '0', >++ KEY `ifInErrors_idx` (`dtime`) >+ ); >+ EOT >+ >+@@ -117,8 +114,6 @@ echo "Adding user \"$USER\" to MySQL dat >+ cat /tmp/mysql.sql | $MYSQLBIN/mysql -u root -p$ROOTPASS mysql >+ echo "Creating RTG database \"$DATABASE\"..." >+ $MYSQLBIN/mysqladmin -u root -p$ROOTPASS create $DATABASE >+-echo "Reloading MySQL privileges..." >+-$MYSQLBIN/mysqladmin -u root -p$ROOTPASS flush-privileges >+ echo "Creating RTG tables..." >+ cat /tmp/rtg.sql | $MYSQLBIN/mysql -u $USER -p$RTGPASS $DATABASE >+ echo "Done." >diff -ruN net/rtg.orig/files/patch-etc_report.pl net/rtg/files/patch-etc_report.pl >--- net/rtg.orig/files/patch-etc_report.pl 2017-04-11 08:17:49.000000000 +0100 >+++ net/rtg/files/patch-etc_report.pl 2018-04-08 16:47:46.570704000 +0100 >@@ -1,4 +1,4 @@ >---- etc/report.pl.orig 2016-11-04 16:36:08 UTC >+--- etc/report.pl.orig 2018-04-02 20:14:41 UTC > +++ etc/report.pl > @@ -30,7 +30,7 @@ $pass="rtgdefault"; > $onedaysec=60*60*24; >@@ -9,3 +9,52 @@ > foreach $conf (@configs) { > if (open CONF, "<$conf") { > print "Reading [$conf].\n" if $DEBUG; >+@@ -192,13 +192,13 @@ print "Period: [", format_dt($startdate) >+ write; >+ ($router,$name,$bytesin, $bytesout, $ratein, $rateout, $utilin, $utilout, $maxratein, $maxrateout, $maxutilin, $maxutilout) = ("","Connection", "MBytes", "MBytes", "Mbps", "Mbps", "In %", "Out%", "Mbps", "Mbps", "In%", "Out%"); >+ write; >+-print "----------------------------------------------------------------------------------------------------------\n"; >++print "------------------------------------------------------------------------------------------------------------------------------\n"; >+ >+ $dbh= DBI->connect("DBI:mysql:$db:host=$host", $user, $pass); >+ $dbh2= DBI->connect("DBI:mysql:$db:host=$host", $user, $pass); >+-$range="dtime>$startdate and dtime<=$enddate"; >++$range="`dtime`>$startdate and `dtime`<=$enddate"; >+ >+-$statement="SELECT id FROM interface WHERE description LIKE \"%$cust%\""; >++$statement="SELECT `id` FROM `interface` WHERE `description` LIKE \"%$cust%\""; >+ $sth = $dbh->prepare($statement) >+ or die "Can't prepare $statement: $dbh->errstr\n"; >+ $rv = $sth->execute >+@@ -209,19 +209,19 @@ while (@row = $sth->fetchrow_array ()) >+ } >+ >+ foreach $interface (@interfaces) { >+- $statement="SELECT rid, name, speed FROM interface WHERE id=$interface"; >++ $statement="SELECT `rid`, `name`, `speed` FROM `interface` WHERE `id`=$interface"; >+ &run_query($statement); >+ ($rid, $name, $speed) = @row; >+ >+- $statement="SELECT rid, name FROM router WHERE rid=$rid"; >++ $statement="SELECT `rid`, `name` FROM `router` WHERE `rid`=$rid"; >+ &run_query($statement); >+ ($rid, $router) = @row; >+ >+- $statement="SELECT counter, UNIX_TIMESTAMP(dtime), dtime FROM ifInOctets_".$rid." WHERE $range AND id=$interface ORDER BY dtime"; >++ $statement="SELECT `counter`, UNIX_TIMESTAMP(`dtime`), `dtime` FROM `ifInOctets_".$rid."` WHERE $range AND `id`=$interface ORDER BY `dtime`"; >+ ($intbytes_in, $maxin, $avgin) = &interface_stats($statement); >+ $bytesin = int($intbytes_in/1000000 + .5); >+ >+- $statement="SELECT counter, UNIX_TIMESTAMP(dtime), dtime FROM ifOutOctets_".$rid." WHERE $range AND id=$interface ORDER BY dtime"; >++ $statement="SELECT `counter`, UNIX_TIMESTAMP(`dtime`), `dtime` FROM `ifOutOctets_".$rid."` WHERE $range AND `id`=$interface ORDER BY `dtime`"; >+ ($intbytes_out, $maxout, $avgout) = &interface_stats($statement); >+ $bytesout = int($intbytes_out/1000000 + .5); >+ >+@@ -267,6 +267,6 @@ $rc = $dbh->disconnect; >+ exit; >+ >+ format STDOUT = >+-@<<<<<<<<<<< @<<<<<<<<<<< @>>>>>>> @>>>>>>> @>>>>>> @>>>>>> @>>>>> @>>>>> @>>>>>> @>>>>>> @>>>>> @>>>>> >++@<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @>>>>>>> @>>>>>>> @>>>>>> @>>>>>> @>>>>> @>>>>> @>>>>>> @>>>>>> @>>>>> @>>>>> >+ $name,$router,&commify($bytesin), &commify($bytesout), $ratein, $rateout, $utilin, $utilout, $maxratein, $maxrateout, $maxutilin, $maxutilout >+ . >diff -ruN net/rtg.orig/files/patch-etc_rtg.conf net/rtg/files/patch-etc_rtg.conf >--- net/rtg.orig/files/patch-etc_rtg.conf 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-etc_rtg.conf 2018-04-03 00:07:52.574124000 +0100 >@@ -0,0 +1,10 @@ >+--- etc/rtg.conf.orig 2018-04-02 23:07:32 UTC >++++ etc/rtg.conf >+@@ -12,3 +12,7 @@ DB_Database rtg >+ DB_User snmp >+ DB_Pass rtgdefault >+ Threads 5 >++# Set Update_desc to 1 to cause rtgtargmkr.pl to auto-update descriptions from >++# SNMP port data >++Update_desc 0 >++ >diff -ruN net/rtg.orig/files/patch-etc_rtg.php net/rtg/files/patch-etc_rtg.php >--- net/rtg.orig/files/patch-etc_rtg.php 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-etc_rtg.php 2018-04-03 00:01:53.244265000 +0100 >@@ -0,0 +1,389 @@ >+--- etc/rtg.php.orig 2003-09-24 20:42:03 UTC >++++ etc/rtg.php >+@@ -1,146 +1,152 @@ >+ <?php >+ include('./common.php'); >+ >+- print "<HTML>\n<!-- RTG Version $VERSION -->\n<HEAD>\n"; >++ print "<html>\n<!-- RTG Version $VERSION -->\n<head>\n"; >+ >+ /* Connect to RTG MySQL Database */ >+- $dbc=@mysql_connect ($host, $user, $pass) or >+- $dbc=@mysql_connect ("$host:/var/lib/mysql/mysql.sock", $user, $pass) or >++ $dbc=@mysqli_connect ($host, $user, $pass, $db) or >+ die ("MySQL Connection Failed, Check Configuration."); >+- mysql_select_db($db,$dbc); >+ >+- if ($PHP_SELF == "") { >++ if (!isset($PHP_SELF) || $PHP_SELF == "") { >+ $PHP_SELF = "rtg.php"; >+- $errors = $_GET['errors']; >+- $scalex = $_GET['scalex']; >+- $scaley = $_GET['scaley']; >+- $aggr = $_GET['aggr']; >+- $percentile = $_GET['percentile']; >+- $nth = $_GET['nth']; >+- $xplot = $_GET['xplot']; >+- $yplot = $_GET['yplot']; >+- $borderb = $_GET['borderb']; >+- $iid = $_GET['iid']; >+- $rid = $_GET['rid']; >+- $syear = $_GET['syear']; >+- $eyear = $_GET['eyear']; >+- $smonth = $_GET['smonth']; >+- $emonth = $_GET['emonth']; >+- $sday = $_GET['sday']; >+- $eday = $_GET['eday']; >+- $shour = $_GET['shour']; >+- $ehour = $_GET['ehour']; >+- $smin = $_GET['smin']; >+- $emin = $_GET['emin']; >++ $errors = isset($_GET['errors'])?$_GET['errors']:""; >++ $scalex = isset($_GET['scalex'])?$_GET['scalex']:""; >++ $scaley = isset($_GET['scaley'])?$_GET['scaley']:""; >++ $aggr = isset($_GET['aggr'])?$_GET['aggr']:""; >++ $percentile = isset($_GET['percentile'])?$_GET['percentile']:""; >++ $nth = isset($_GET['nth'])?$_GET['nth']:""; >++ $xplot = isset($_GET['xplot'])?$_GET['xplot']:""; >++ $yplot = isset($_GET['yplot'])?$_GET['yplot']:""; >++ $borderb = isset($_GET['borderb'])?$_GET['borderb']:""; >++ $iid = isset($_GET['iid'])?$_GET['iid']:""; >++ $rid = isset($_GET['rid'])?$_GET['rid']:""; >++ $syear = isset($_GET['syear'])?$_GET['syear']:""; >++ $eyear = isset($_GET['eyear'])?$_GET['eyear']:""; >++ $smonth = isset($_GET['smonth'])?$_GET['smonth']:""; >++ $emonth = isset($_GET['emonth'])?$_GET['emonth']:""; >++ $sday = isset($_GET['sday'])?$_GET['sday']:""; >++ $eday = isset($_GET['eday'])?$_GET['eday']:""; >++ $shour = isset($_GET['shour'])?$_GET['shour']:""; >++ $ehour = isset($_GET['ehour'])?$_GET['ehour']:""; >++ $smin = isset($_GET['smin'])?$_GET['smin']:""; >++ $emin = isset($_GET['emin'])?$_GET['emin']:""; >+ } >+ >+ # Determine router, interface names as necessary >+- if ($rid && $iid) { >+- $selectQuery="SELECT a.name, a.description, a.speed, b.name AS router FROM interface a, router b WHERE a.rid=b.rid AND a.rid=$rid AND a.id=$iid[0]"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- $selectRow=mysql_fetch_object($selectResult); >+- $interfaces = mysql_num_rows($selectResult); >++ if (($rid != "") && ($iid != "")) { >++ $selectQuery="SELECT `a`.`name`, `a`.`description`, `a`.`speed`, `b`.`name` " . >++ "AS `router` FROM `interface` `a`, `router` `b` WHERE `a`.`rid`=`b`.`rid` " . >++ "AND `a`.`rid`=" . mysqli_real_escape_string($dbc, $rid) . " AND `a`.`id`=" . >++ mysqli_real_escape_string($dbc, $iid[0]); >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ $selectRow=mysqli_fetch_object($selectResult); >++ $interfaces = mysqli_num_rows($selectResult); >+ $name = $selectRow->name; >+ $description = $selectRow->description; >+ $speed = ($selectRow->speed)/1000000; >+ $router = $selectRow->router; >+- } else if ($rid && !$iid) { >+- $selectQuery="SELECT name AS router from router where rid=$rid"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- $selectRow=mysql_fetch_object($selectResult); >++ } else if (($rid != "") && ($iid == "")) { >++ $selectQuery="SELECT `name` AS `router` FROM `router` WHERE `rid`=" . >++ mysqli_real_escape_string($dbc, $rid); >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ $selectRow=mysqli_fetch_object($selectResult); >+ $router = $selectRow->router; >+ } >+ >+ # Generate Title >+- echo "<TITLE>RTG: "; >+- if ($rid && $iid) echo "$router: $name"; >+- else if ($rid && !$iid) echo "$router"; >+- echo "</TITLE>\n"; >++ echo "<title>RTG: "; >++ if (($rid != "") && ($iid != "")) echo "$router: $name"; >++ else if (($rid != "") && ($iid == "")) echo "$router"; >++ echo "</title>\n"; >+ ?> >+ >+-</HEAD> >+-<BODY BACKGROUND="rtgback.png" BGCOLOR="ffffff"> >+-<A HREF="http://rtg.sourceforge.net" ALT="[RTG Home Page]"> >+-<IMG SRC="rtg.png" BORDER="0"> >+-</A> >+-<P> >++</head> >++<body background="rtgback.png" bgcolor="ffffff"> >++<a href="http://rtg.sourceforge.net" alt="[RTG Home Page]"><img src="rtg.png" border="0" /></a> >++<p> >+ >+ <?php >+-echo "<FORM ACTION=\"$PHP_SELF\" METHOD=\"get\">\n"; >++echo "<form action=\"$PHP_SELF\" method=\"get\">\n"; >+ >+-if (!$rid && !$iid) { >+- echo "<SELECT NAME=\"rid\" SIZE=10>\n"; >+- $selectQuery="SELECT DISTINCT name, rid FROM router ORDER BY name"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- while ($selectRow=mysql_fetch_object($selectResult)){ >+- echo "<OPTION VALUE=\"$selectRow->rid\">$selectRow->name\n"; >++if (($rid == "") && ($iid == "")) { >++ echo "<select name=\"rid\" size=\"10\">\n"; >++ $selectQuery="SELECT DISTINCT `name`, `rid` FROM `router` ORDER BY `name`"; >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ while ($selectRow=mysqli_fetch_object($selectResult)){ >++ echo "<option value=\"$selectRow->rid\">$selectRow->name</option>\n"; >+ } >+- echo "</SELECT>\n"; >++ echo "</select>\n"; >+ } >+ >+-if ($smonth != "" && $iid == "") { >+- echo "<BLOCKQUOTE><FONT SIZE=+1><STRONG>\n"; >++if (($smonth != "") && ($iid == "")) { >++ echo "<blockquote><font size=\"+1\"><b>\n"; >+ echo "Please select an interface!\n"; >+- echo "</FONT></STRONG></BLOCKQUOTE>\n"; >++ echo "</b></font></blockquote>\n"; >+ } >+ >+-if ($rid && !$iid) { >+- echo "<SELECT NAME=\"rid\" SIZE=10>\n"; >+- echo "<OPTION SELECTED VALUE=\"$rid\">$router\n"; >+- echo "</SELECT>\n"; >++if (($rid != "") && ($iid == "")) { >++ echo "<select name=\"rid\" size=\"10\">\n"; >++ echo "<option selected value=\"$rid\">$router</option>\n"; >++ echo "</select>\n"; >+ >+- echo "<SELECT MULTIPLE NAME=\"iid[]\" SIZE=10>\n"; >+- $selectQuery="SELECT id, name, description FROM interface WHERE rid=$rid ORDER BY name"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- while ($selectRow=mysql_fetch_object($selectResult)){ >+- echo "<OPTION VALUE=\"$selectRow->id\">$selectRow->name ($selectRow->description)\n"; >++ echo "<select multiple name=\"iid[]\" size=\"10\">\n"; >++ $selectQuery="SELECT `id`, `name`, `description` FROM `interface` WHERE " . >++ "`rid`=" . mysqli_real_escape_string($dbc, $rid) . " ORDER BY `name`"; >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ while ($selectRow=mysqli_fetch_object($selectResult)){ >++ echo "<option value=\"$selectRow->id\">$selectRow->name ($selectRow->description)</option>\n"; >+ } >+- echo "</SELECT>\n"; >++ echo "</select>\n"; >+ >+- echo "<P><TABLE>\n"; >+- echo "<TD>From: \n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"smonth\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "<p><table>\n"; >++ echo "<tr><td>From: </td>\n"; >++ echo "<td><input type=\"text\" name=\"smonth\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("m")); >+- echo "\"> / \n"; >+- echo "<INPUT TYPE=TEXT NAME=\"sday\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "\" /> / \n"; >++ echo "<input type=\"text\" name=\"sday\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("d")); >+- echo "\"> / \n"; >+- echo "<INPUT TYPE=TEXT NAME=\"syear\" SIZE=5 MAXLENGTH=4 VALUE=\""; >++ echo "\" /> / \n"; >++ echo "<input type=\"text\" name=\"syear\" size=\"5\" maxlength=\"4\" value=\""; >+ print (date("Y")); >+- echo "\">\n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"shour\" SIZE=3 MAXLENGTH=2 VALUE=\"00\">:\n"; >+- echo "<INPUT TYPE=TEXT NAME=\"smin\" SIZE=3 MAXLENGTH=2 VALUE=\"00\">\n"; >++ echo "\" />\n"; >++ echo "</td>"; >++ echo "<td><input type=\"text\" name=\"shour\" size=\"3\" maxlength=\"2\" value=\"00\" />:\n"; >++ echo "<input type=\"text\" name=\"smin\" size=\"3\" maxlength=\"2\" value=\"00\" />\n"; >++ echo "</td></tr>\n"; >+ >+- echo "<TR><TD>To: \n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"emonth\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "<tr><td>To: </td>\n"; >++ echo "<td><input type=\"text\" name=\"emonth\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("m")); >+- echo "\"> / \n"; >+- echo "<INPUT TYPE=TEXT NAME=\"eday\" SIZE=3 MAXLENGTH=2 VALUE=\""; >++ echo "\" /> / \n"; >++ echo "<input type=\"text\" name=\"eday\" size=\"3\" maxlength=\"2\" value=\""; >+ print (date("d")); >+- echo "\"> / \n"; >+- echo "<INPUT TYPE=TEXT NAME=\"eyear\" SIZE=5 MAXLENGTH=4 VALUE=\""; >++ echo "\" /> / \n"; >++ echo "<input type=\"text\" name=\"eyear\" size=\"5\" maxlength=\"4\" value=\""; >+ print (date("Y")); >+- echo "\">\n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"ehour\" SIZE=3 MAXLENGTH=2 VALUE=\"23\">:\n"; >+- echo "<INPUT TYPE=TEXT NAME=\"emin\" SIZE=3 MAXLENGTH=2 VALUE=\"59\">\n"; >+- echo "<TR><TD>Aggregate Interfaces: \n"; >+- echo "<TD><INPUT TYPE=CHECKBOX NAME=\"aggr\">\n"; >+- echo "<TR><TD><INPUT TYPE=TEXT NAME=\"nth\" SIZE=2 MAXLENGTH=2 VALUE=\"95\">th Percentile: \n"; >+- echo "<TD><INPUT TYPE=CHECKBOX NAME=\"percentile\">\n"; >+- echo "<TR><TD>Fit to Data: \n"; >+- echo "<TD><INPUT TYPE=CHECKBOX NAME=\"scalex\">\n"; >+- echo "<TR><TD>Fit to Speed: \n"; >+- echo "<TD><INPUT TYPE=CHECKBOX NAME=\"scaley\">\n"; >+- echo "<TR><TD>X Size: \n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"xplot\" SIZE=3 VALUE=\"500\">\n"; >+- echo "<TR><TD>Y Size: \n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"yplot\" SIZE=3 VALUE=\"150\">\n"; >+- echo "<TR><TD>BorderB: \n"; >+- echo "<TD><INPUT TYPE=TEXT NAME=\"borderb\" SIZE=3 VALUE=\"70\">\n"; >+- echo "</TABLE>\n"; >++ echo "\" />\n"; >++ echo "</td>"; >++ echo "<td><input type=\"text\" name=\"ehour\" size=\"3\" maxlength=\"2\" value=\"23\" />:\n"; >++ echo "<input type=\"text\" name=\"emin\" size=\"3\" maxlength=\"2\" value=\"59\" />\n"; >++ echo "</td></tr>\n"; >++ >++ echo "<tr><td>Aggregate Interfaces: </td>\n"; >++ echo "<td><input type=\"checkbox\" name=\"aggr\" /></td></tr>\n"; >++ echo "<tr><td><input type=\"text\" name=\"nth\" size=\"2\" maxlength=\"2\" value=\"95\" />th Percentile: </td>\n"; >++ echo "<td><input type=\"checkbox\" name=\"percentile\" /></td></tr>\n"; >++ echo "<tr><td>Fit to Data: </td>\n"; >++ echo "<td><input type=\"checkbox\" name=\"scalex\" /></td></tr>\n"; >++ echo "<tr><td>Fit to Speed: </td>\n"; >++ echo "<td><input type=\"checkbox\" name=\"scaley\" /></td></tr>\n"; >++ echo "<tr><td>X Size: </td>\n"; >++ echo "<td><input type=\"text\" name=\"xplot\" size=\"3\" value=\"500\" /></td></tr>\n"; >++ echo "<tr><td>Y Size: </td>\n"; >++ echo "<td><input type=\"text\" name=\"yplot\" size=\"3\" value=\"150\" /></td></tr>\n"; >++ echo "<tr><td>BorderB: </td>\n"; >++ echo "<td><input type=\"text\" name=\"borderb\" size=\"3\" value=\"70\" /></td></tr>\n"; >++ echo "</table>\n"; >+ } >+ >+-if (($bt || $smonth) && $iid) { >++if (($bt != "" || $smonth != "") && ($iid != "")) { >+ >+ /* Format into GNU date syntax */ >+ if ($bt == "") { >+@@ -148,67 +154,84 @@ if (($bt || $smonth) && $iid) { >+ $et = strtotime("$eyear-$emonth-$eday $ehour:$emin:59"); >+ } >+ >+- $range="dtime>FROM_UNIXTIME($bt) AND dtime<=FROM_UNIXTIME($et)"; >+- $range="$range AND id=$iid[0]"; >++ $range="`dtime`>FROM_UNIXTIME(" . mysqli_real_escape_string($dbc, $bt) . ") AND " . >++ "`dtime`<=FROM_UNIXTIME(" . mysqli_real_escape_string($dbc, $et) . ") " . >++ "AND `id`=" . mysqli_real_escape_string($dbc, $iid[0]); >+ >+- $selectQuery="SELECT description, name, speed FROM interface WHERE rid=$rid AND id=$iid[0]"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- $selectRow=mysql_fetch_object($selectResult); >+- echo "<TABLE BORDER=0>\n"; >+- echo "<TD><I>Device</I>:</TD><TD>$router ($rid)</TD><TR>\n"; >+- echo "<TD><I>Interface</I>:</TD><TD>$selectRow->name ($iid[0])</TD><TR>\n"; >+- printf ("<TD><I>Speed</I>:</TD><TD>%2.3f Mbps</TD><TR>\n", $selectRow->speed / 1000000); >+- echo "<TD><I>Description</I>:</TD><TD>$selectRow->description</TD><TR>\n"; >+- print strftime("<TD><I>Period</I>:</TD><TD>%m/%d/%Y %H:%M - ", $bt); >+- print strftime("%m/%d/%Y %H:%M</TD>\n", $et); >+- echo "</TABLE>\n"; >+- echo "<P>\n"; >++ $selectQuery="SELECT `description`, `name`, `speed` FROM `interface` WHERE " . >++ "`rid`=" . mysqli_real_escape_string($dbc, $rid) . " AND `id`=" . >++ mysqli_real_escape_string($dbc, $iid[0]); >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ $selectRow=mysqli_fetch_object($selectResult); >++ echo "<table border=\"0\">\n"; >++ echo "<tr><td><i>Device</i>:</td><td>$router ($rid)</td></tr>\n"; >++ echo "<tr><td><i>Interface</i>:</td><td>$selectRow->name ($iid[0])</td></tr>\n"; >++ printf ("<tr><td><i>Speed</i>:</td><td>%2.3f Mbps</td></tr>\n", $selectRow->speed / 1000000); >++ echo "<tr><td><i>Description</i>:</td><td>$selectRow->description</td></tr>\n"; >++ print strftime("<tr><td><i>Period</i>:</td><td>%m/%d/%Y %H:%M - ", $bt); >++ print strftime("%m/%d/%Y %H:%M</td>\n", $et); >++ echo "</tr>\n"; >++ echo "</table>\n"; >++ echo "<p>\n"; >+ >+ #$selectQuery="SELECT DISTINCT id FROM ifInOctets_$rid WHERE $range"; >+- #$selectResult=mysql_query($selectQuery, $dbc); >+- #if (mysql_num_rows($selectResult) <= 0) { >++ #$selectResult=mysqli_query($dbc, $selectQuery); >++ #if (mysqli_num_rows($selectResult) <= 0) { >+ # print "<BR>No Data Found on Interface for Given Range.<BR>\n"; >+ #} >+ #else { >+- $args = "t1=ifInOctets_$rid&t2=ifOutOctets_$rid&begin=$bt&end=$et&units=bits/s&factor=8"; >++ $args = "t1=ifInOctets_$rid&t2=ifOutOctets_$rid&begin=$bt&"; >++ $args .= "end=$et&units=bits/s&factor=8"; >++ $args .= "&title=" . urlencode($selectRow->description); >++ $args .= "&t1_name=" . urlencode("Input Octets"); >++ $args .= "&t2_name=" . urlencode("Output Octets"); >+ foreach ($iid as $value) { >+- $args="$args&iid=$value"; >++ $args="$args&iid=" . urlencode($value); >+ } >+- if ($scalex) $args = "$args&scalex=yes"; >+- if ($scaley) $args = "$args&scaley=yes"; >+- if ($xplot) $args = "$args&xplot=$xplot"; >+- if ($yplot) $args = "$args&yplot=$yplot"; >+- if ($borderb) $args = "$args&borderb=$borderb"; >+- if ($aggr) $args = "$args&aggr=yes"; >+- if ($percentile) $args = "$args&percentile=$nth"; >+- print "<IMG SRC=rtgplot.cgi?$args><BR>\n"; >+- $args = "t1=ifInUcastPkts_$rid&t2=ifOutUcastPkts_$rid&begin=$bt&end=$et&units=pkts/s"; >++ if ($scalex != "") $args = "$args&scalex=yes"; >++ if ($scaley != "") $args = "$args&scaley=yes"; >++ if ($xplot != "") $args = "$args&xplot=$xplot"; >++ if ($yplot != "") $args = "$args&yplot=$yplot"; >++ if ($borderb != "") $args = "$args&borderb=$borderb"; >++ if ($aggr != "") $args = "$args&aggr=yes"; >++ if ($percentile != "") $args = "$args&percentile=$nth"; >++ print "<img src=\"/cgi-bin/rtgplot.cgi?$args\" alt=\"graph\" /><br />\n"; >++ $args = "t1=ifInUcastPkts_$rid&t2=ifOutUcastPkts_$rid&begin=$bt&"; >++ $args .= "end=$et&units=pkts/s"; >++ $args .= "&title=" . urlencode($selectRow->description); >++ $args .= "&t1_name=" . urlencode("Input Packets"); >++ $args .= "&t2_name=" . urlencode("Output Packets"); >+ foreach ($iid as $value) { >+- $args="$args&iid=$value"; >++ $args="$args&iid=" . urlencode($value); >++ } >++ if ($scalex != "") $args = "$args&scalex=yes"; >++ if ($xplot != "") $args = "$args&xplot=$xplot"; >++ if ($yplot != "") $args = "$args&yplot=$yplot"; >++ if ($borderb != "") $args = "$args&borderb=$borderb"; >++ if ($aggr != "") $args = "$args&aggr=yes"; >++ if ($percentile != "") $args = "$args&percentile=$nth"; >++ print "<img src=\"/cgi-bin/rtgplot.cgi?$args\" alt=\"graph\" /><br />\n"; >++ if ($errors != "") >++ { >++ print "<img src=\"/cgi-bin/rtgplot.cgi?t1=ifInErrors_$rid&begin=$bt"; >++ print "&end=$et&units=errors&impulses=yes"; >++ print "&title=" . urlencode($selectRow->description); >++ print "&t1_name=" . urlencode("Errors") . "\" alt=\"graph\" />\n"; >+ } >+- if ($scalex) $args = "$args&scalex=yes"; >+- if ($xplot) $args = "$args&xplot=$xplot"; >+- if ($yplot) $args = "$args&yplot=$yplot"; >+- if ($borderb) $args = "$args&borderb=$borderb"; >+- if ($aggr) $args = "$args&aggr=yes"; >+- if ($percentile) $args = "$args&percentile=$nth"; >+- print "<IMG SRC=rtgplot.cgi?$args><BR>\n"; >+- if ($errors) >+- print "<IMG SRC=rtgplot.cgi?t1=ifInErrors_$rid&begin=$bt&end=$et&units=errors&impulses=yes>\n"; >+ # } >+ } >+ >+-mysql_close($dbc); >++mysqli_close($dbc); >+ ?> >+ >+-<P> >+-<INPUT TYPE="SUBMIT" VALUE="Ok"> >+-</FORM> >+-<BR> >+-<HR> >+-<FONT FACE="Arial" SIZE="2"> >++<p> >++<input type="submit" value="Ok" /> >++</form> >++<br /> >++<hr /> >++<font face="Arial" size="2"> >+ <?php >+- print "<A HREF=\"http://rtg.sourceforge.net\">RTG</A> Version $VERSION</FONT>"; >+-?> >+-</BODY> >+-</HTML> >++ print "<a href=\"http://rtg.sourceforge.net\">RTG</a> Version $VERSION</font>"; >++?></p> >++</body> >++</html> >diff -ruN net/rtg.orig/files/patch-etc_rtgtargmkr.pl.in net/rtg/files/patch-etc_rtgtargmkr.pl.in >--- net/rtg.orig/files/patch-etc_rtgtargmkr.pl.in 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-etc_rtgtargmkr.pl.in 2018-04-02 21:54:36.231920000 +0100 >@@ -0,0 +1,110 @@ >+--- etc/rtgtargmkr.pl.in.orig 2018-04-02 20:14:41 UTC >++++ etc/rtgtargmkr.pl.in >+@@ -10,10 +10,11 @@ >+ # Local customization >+ >+ $community = "public"; # Default SNMP community >+-$defbits = 32; # Default OID bits: 32/64 >++$defbits = 64; # Default OID bits: 32/64 >+ $output = "targets.cfg"; # Output target file name >+ $router_file = "routers"; # Input list of devices to poll >+ $conf_file = "rtg.conf"; # RTGpoll and RTGplot configurations >++$update_desc = 0; # Update interface descriptions >+ $INFO = 1; # Print informational messages >+ $DEBUG = 0; # Print debug messages >+ $DBOFF = 0; # Turn database queries off (debug) >+@@ -77,7 +78,7 @@ $catalyst = [ >+ ); >+ >+ # Default locations to find RTG configuration file >+-@configs = ("rtg.conf", "/usr/local/rtg/etc/rtg.conf", "/etc/rtg.conf"); >++@configs = ("rtg.conf", "@RTG_HOME@/etc/rtg.conf", "/usr/local/rtg/etc/rtg.conf", "/etc/rtg.conf"); >+ foreach $conf (@configs) { >+ if (open CONF, "<$conf") { >+ print "Reading [$conf].\n" if $DEBUG; >+@@ -93,7 +94,9 @@ foreach $conf (@configs) { >+ $db_db=$cVals[1]; >+ } elsif ($cVals[0] =~ /Interval/) { >+ $interval=$cVals[1]; >+- } >++ } elsif ($cVals[0] =~ /Update_desc/) { >++ $update_desc=$cVals[1]; >++ } >+ } >+ last; >+ } >+@@ -113,7 +116,7 @@ sub sql_insert { >+ # exist, create a new entry and corresponding tables. >+ sub find_router_id { >+ ($router) = @_; >+- $sql = "SELECT DISTINCT rid FROM router WHERE name=\"$router\""; >++ $sql = "SELECT DISTINCT `rid` FROM `router` WHERE `name`=\"$router\""; >+ print "SQL: $sql\n" if $DEBUG; >+ my $sth = $dbh->prepare($sql) >+ or die "Can't prepare $sql: $dbh->errstr\n"; >+@@ -121,12 +124,12 @@ sub find_router_id { >+ or die "can't execute the query: $sth->errstr\n"; >+ if ( $sth->rows == 0 ) { >+ print "No router id found for $router..."; >+- $sql = "INSERT INTO router (name) VALUES(\"$router\")"; >++ $sql = "INSERT INTO `router` (`name`) VALUES(\"$router\")"; >+ print "adding.\n"; >+ &sql_insert($sql); >+ $rid = &find_router_id($router); >+ foreach $mib ( keys %mibs_of_interest ) { >+- $sql = "CREATE TABLE $mib"."_$rid (id INT NOT NULL, dtime DATETIME NOT NULL, counter BIGINT NOT NULL, KEY $mib"."_$rid". "_idx (dtime))"; >++ $sql = "CREATE TABLE `$mib"."_$rid` (`id` INT NOT NULL, `dtime` DATETIME NOT NULL, `counter` BIGINT NOT NULL, KEY `$mib"."_$rid". "_idx` (`dtime`), KEY `id_dtime_idx` (`id`,`dtime`))"; >+ &sql_insert($sql); >+ } >+ } >+@@ -143,7 +146,7 @@ sub find_router_id { >+ sub find_interface_id { >+ ( $rid, $int, $desc, $speed ) = @_; >+ $desc =~ s/ +$//g; #remove trailing whitespace >+- $sql = "SELECT id, description FROM interface WHERE rid=$rid AND name=\"$int\""; >++ $sql = "SELECT `id`, `description` FROM `interface` WHERE `rid`=$rid AND `name`=\"$int\""; >+ print "SQL: $sql\n" if $DEBUG; >+ my $sth = $dbh->prepare($sql) >+ or die "Can't prepare $sql: $dbh->errstr\n"; >+@@ -152,7 +155,7 @@ sub find_interface_id { >+ if ( $sth->rows == 0 ) { >+ print "No id found for $int on device $rid..."; >+ $desc =~ s/\"/\\\"/g; # Fix " in desc >+- $sql = "INSERT INTO interface (name, rid, speed, description) VALUES(\"$int\", $rid, $speed, \"$desc\")"; >++ $sql = "INSERT INTO `interface` (`name`, `rid`, `speed`, `description`) VALUES(\"$int\", $rid, $speed, \"$desc\")"; >+ print "adding.\n"; >+ &sql_insert($sql); >+ $iid = &find_interface_id( $rid, $int, $desc, $speed ); >+@@ -164,7 +167,13 @@ sub find_interface_id { >+ print "Interface description changed.\n"; >+ print "Was: \"$row[1]\"\n"; >+ print "Now: \"$desc\"\n"; >+- print "Suggest: UPDATE interface SET description='$desc' WHERE id=$iid\n"; >++ if ( $update_desc == 1 ) { >++ $sql = "UPDATE `interface` SET `description`='$desc' WHERE `id`=$iid"; >++ &sql_insert($sql); >++ print "Updated.\n"; >++ } else { >++ print "Suggest: UPDATE `interface` SET `description`='$desc' WHERE `id`=$iid\n"; >++ } >+ } >+ } >+ $sth->finish; >+@@ -289,7 +298,7 @@ sub main { >+ $year + 1900, $hour, $min; >+ print CFG "# Host\tOID\tBits\tCommunity\tTable\tID\tDescription\n"; >+ >+- foreach $router (@routers) { >++ POKE: foreach $router (@routers) { >+ $bits = $counterBits{$router}; >+ # Sanity check bits >+ $bits = $defbits if ( ( $bits != 32 ) && ( $bits != 64 ) ); >+@@ -304,7 +313,7 @@ sub main { >+ $system = join ( ' ', @result ); >+ print "System: $system\n" if $DEBUG; >+ $session = SNMP_Session->open( $router, $communities{$router}, 161 ) >+- || die "Error opening SNMP session to $router"; >++ || ( print "Error opening SNMP session to $router" and next POKE ); >+ if ( $system =~ /.*Cisco.*WS-.*/ ) { >+ $system = "Catalyst"; >+ $session->map_table( $catalyst, \&process ); >diff -ruN net/rtg.orig/files/patch-etc_view.php net/rtg/files/patch-etc_view.php >--- net/rtg.orig/files/patch-etc_view.php 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-etc_view.php 2018-04-02 23:34:48.789232000 +0100 >@@ -0,0 +1,258 @@ >+--- etc/view.php.orig 2003-09-26 15:58:34 UTC >++++ etc/view.php >+@@ -8,154 +8,163 @@ >+ header("Cache-Control: no-cache, must-revalidate"); >+ header("Pragma: no-cache"); >+ >+- print "<HTML>\n<!-- RTG Version $VERSION -->\n<HEAD>\n"; >++ print "<html>\n<!-- RTG Version $VERSION -->\n<head>\n"; >+ >+ /* Connect to RTG MySQL Database */ >+- $dbc=@mysql_connect ($host, $user, $pass) or >+- $dbc=@mysql_connect ("$host:/var/lib/mysql/mysql.sock", $user, $pass) or >++ $dbc=@mysqli_connect ($host, $user, $pass, $db) or >+ die ("MySQL Connection Failed, Check Configuration."); >+- mysql_select_db($db,$dbc); >+ >+ # Global variables off by default in newer versions of PHP >+- if (!$PHP_SELF) { >++ if (!isset($PHP_SELF) || ($PHP_SELF == "")) { >+ $PHP_SELF = "view.php"; >+- $rid = $_GET['rid']; >+- $iid = $_GET['iid']; >++ $rid = isset($_GET['rid'])?$_GET['rid']:""; >++ $iid = isset($_GET['iid'])?$_GET['iid']:""; >+ } >+ >+ # Determine router, interface names as necessary >+- if ($rid && $iid) { >+- $selectQuery="SELECT a.name, a.description, a.speed, b.name AS router FROM interface a, router b WHERE a.rid=b.rid AND a.rid=$rid AND a.id=$iid"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- $selectRow=mysql_fetch_object($selectResult); >+- $interfaces = mysql_num_rows($selectResult); >++ if (($rid != "") && ($iid != "")) { >++ $selectQuery="SELECT `a`.`name`, `a`.`description`, `a`.`speed`, `b`.`name` " . >++ "AS `router` FROM `interface` `a`, `router` `b` WHERE `a`.`rid`=`b`.`rid` " . >++ "AND `a`.`rid`=" . mysqli_real_escape_string($dbc, $rid) . " AND `a`.`id`=" . >++ mysqli_real_escape_string($dbc, $iid); >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ $selectRow=mysqli_fetch_object($selectResult); >++ $interfaces = mysqli_num_rows($selectResult); >+ $name = $selectRow->name; >+ $description = $selectRow->description; >+ $speed = ($selectRow->speed)/1000000; >+ $router = $selectRow->router; >+- } else if ($rid && !$iid) { >+- $selectQuery="SELECT name AS router from router where rid=$rid"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- $selectRow=mysql_fetch_object($selectResult); >++ } else if (($rid != "")&& ($iid == "")) { >++ $selectQuery="SELECT `name` AS `router` FROM `router` WHERE `rid`=" . >++ mysqli_real_escape_string($dbc, $rid); >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ $selectRow=mysqli_fetch_object($selectResult); >+ $router = $selectRow->router; >+ } >+ >+ # Generate Title >+- echo "<TITLE>RTG: "; >+- if ($rid && $iid) echo "$router: $name"; >+- else if ($rid && !$iid) echo "$router"; >+- echo "</TITLE>\n"; >++ echo "<title>RTG: "; >++ if (($rid != "") && ($iid != "")) echo "$router: $name"; >++ else if (($rid != "")&& ($iid == "")) echo "$router"; >++ echo "</title>\n"; >+ >+- print "<meta HTTP-EQUIV=\"Refresh\" CONTENT=\"300\">\n"; >+- print "<meta HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">\n"; >+- print "<meta HTTP-EQUIV=\"Cache-Control\" CONTENT=\"no-cache\">\n"; >+- print "<meta HTTP-EQUIV=\"Expires\" CONTENT=\"".gmdate('D, d M Y H:i:s \G\M\T', time() + 300)."\">\n"; >+- print "<meta HTTP-EQUIV=\"Generator\" CONTENT=\"RTG $VERSION\">\n"; >+- print "<meta HTTP-EQUIV=\"Date\" CONTENT=\"".gmdate('D, d M Y H:i:s \G\M\T', time())."\">\n"; >+- print "<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\">\n"; >++ print "<meta http-equiv=\"Refresh\" content=\"300\" />\n"; >++ print "<meta http-equiv=\"Pragma\" content=\"no-cache\" />\n"; >++ print "<meta http-equiv=\"Cache-Control\" content=\"no-cache\" />\n"; >++ print "<meta http-equiv=\"Expires\" content=\"".gmdate('D, d M Y H:i:s \G\M\T', time() + 300)."\" />\n"; >++ print "<meta http-equiv=\"Generator\" content=\"RTG $VERSION\" />\n"; >++ print "<meta http-equiv=\"Date\" content=\"".gmdate('D, d M Y H:i:s \G\M\T', time())."\" />\n"; >++ print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"; >+ ?> >+ >+-</HEAD> >+-<BODY BGCOLOR="ffffff"> >+-<A HREF="http://rtg.sourceforge.net" ALT="[RTG Home Page]"> >+-<IMG SRC="rtg.png" BORDER="0"></A><P><HR> >++</head> >++<body bgcolor="ffffff"> >++<a href="http://rtg.sourceforge.net"<img src="rtg.png" border="0" alt="[RTG Home Page]" /></a><p><hr /> >+ >+ <?php >+- echo "<FORM ACTION=\"$PHP_SELF\" METHOD=\"GET\">\n"; >++ echo "<form action=\"$PHP_SELF\" method=\"get\">\n"; >+ >+ $et = time(); >+ >+- if (!$rid) { >++ if ($rid == "") { >+ print "Monitored Devices: <P>\n"; >+- $selectQuery="SELECT rid, name FROM router"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- if (mysql_num_rows($selectResult) <= 0) >+- print "<BR>No Routers Found.<BR>\n"; >++ $selectQuery="SELECT `rid`, `name` FROM `router`"; >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ if (mysqli_num_rows($selectResult) <= 0) >++ print "<br />No Routers Found.<br />\n"; >+ else { >+- print "<UL>\n"; >+- while ($selectRow=mysql_fetch_object($selectResult)){ >+- print "<LI><A HREF=\"$PHP_SELF?rid=$selectRow->rid\">"; >+- print "$selectRow->name</A><BR>\n"; >++ print "<ul>\n"; >++ while ($selectRow=mysqli_fetch_object($selectResult)){ >++ print "<li><a href=\"$PHP_SELF?rid=$selectRow->rid\">"; >++ print "$selectRow->name</a></li><br />\n"; >+ } >+- print "</UL>\n"; >++ print "</ul>\n"; >+ } >+ } >+ >+- if ($rid && $iid) { >++ if (($rid != "") && ($iid != "")) { >+ if ($interfaces <= 0) >+- print "<BR>Interface $iid Not Found for Router $router (ID: $rid).<BR>\n"; >++ print "<br />Interface $iid Not Found for Router $router (ID: $rid).<br />\n"; >+ else { >+- print "<TABLE>\n"; >+- print "<TD>System:<TD>$router\n"; >+- print "<TR><TD>Interface:<TD>$name\n"; >+- print "<TR><TD>Description:<TD>$description\n"; >+- print "<TR><TD>Speed:<TD>$speed Mbps\n"; >+- print "<TR><TD>Page Generated:<TD>".gmdate('D, d M Y H:i:s \G\M\T', time())."\n"; >+- print "</TABLE><HR>\n"; >++ print "<table>\n"; >++ print "<tr><td>System:</td><td>$router</td></tr>\n"; >++ print "<tr><td>Interface:</td><td>$name</td></tr>\n"; >++ print "<tr><td>Description:</td><td>$description</td></tr>\n"; >++ print "<tr><td>Speed:</td><td>$speed Mbps</td></tr>\n"; >++ print "<tr><td>Page Generated:</td><td>".gmdate('D, d M Y H:i:s \G\M\T', time())."</td></tr>\n"; >++ print "</table><hr />\n"; >+ >+ $bt = $et - (60*60*24); >+- print "<B>Day View:</B><BR>\n"; >+- print "<IMG SRC=\"rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\">\n"; >+- print "<BR><B>$router: $name ($description)</B>\n"; >+- print "<BR><HR>\n"; >++ print "<b>Day View:</b><br />\n"; >++ print "<img src=\"/cgi-bin/rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes"; >++ print "&title=" . urlencode("$router: $name ($description)") . "&t1_name=" . urlencode("Input Octets") . "&t2_name=" . urlencode("Output Octets") . "\" />\n"; >++ print "<br /><b>$router: $name ($description)</b>\n"; >++ print "<br /><hr />\n"; >+ >+ $bt = $et - (60*60*24*7); >+- print "<B>Week View:</B><BR>\n"; >+- print "<IMG SRC=\"rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\">\n"; >+- print "<BR><B>$router: $name ($description)</B>\n"; >+- print "<BR><HR>\n"; >++ print "<b>Week View:</b><br />\n"; >++ print "<img src=\"/cgi-bin/rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes"; >++ print "&title=" . urlencode("$router: $name ($description)") . "&t1_name=" . urlencode("Input Octets") . "&t2_name=" . urlencode("Output Octets") . "\" />\n"; >++ print "<br /><b>$router: $name ($description)</b>\n"; >++ print "<br /><hr />\n"; >+ >+ $bt = $et - (60*60*24*30); >+- print "<B>Month View:</B><BR>\n"; >+- print "<IMG SRC=\"rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\">\n"; >+- print "<BR><B>$router: $name ($description)</B>\n"; >+- print "<BR><BR>\n"; >++ print "<b>Month View:</b><br />\n"; >++ print "<img src=\"/cgi-bin/rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes"; >++ print "&title=" . urlencode("$router: $name ($description)") . "&t1_name=" . urlencode("Input Octets") . "&t2_name=" . urlencode("Output Octets") . "\" />\n"; >++ print "<br /><b>$router: $name ($description)</b>\n"; >++ print "<br /><br />\n"; >+ } >+- print "<INPUT TYPE=\"SUBMIT\" VALUE=\"Back to Main\">\n"; >++ print "<input type=\"submit\" value=\"Back to Main\" />\n"; >+ } >+ >+- if ($rid && !$iid) { >+- $selectQuery="SELECT id, name, description FROM interface WHERE rid=$rid"; >+- $selectResult=mysql_query($selectQuery, $dbc); >+- $interfaces = mysql_num_rows($selectResult); >++ if (($rid != "") && ($iid == "")) { >++ $selectQuery="SELECT `id`, `name`, `description` FROM `interface` WHERE " . >++ "`rid`=" . mysqli_real_escape_string($dbc, $rid); >++ $selectResult=mysqli_query($dbc, $selectQuery); >++ $interfaces = mysqli_num_rows($selectResult); >+ if ($interfaces <= 0) >+- print "<BR>No Interfaces Found for Router $router (ID: $rid).<BR>\n"; >++ print "<br />No Interfaces Found for Router $router (ID: $rid).<br />\n"; >+ else { >+ $bt = $et - (60*60*12); >+- print "<TABLE>\n"; >+- print "<TD>System:<TD>$router\n"; >+- print "<TR><TD>Interfaces:<TD>$interfaces\n"; >+- print "<TR><TD>Page Generated:<TD>"; >+- print gmdate('D, d M Y H:i:s \G\M\T', time())."\n"; >+- print "</TABLE><HR>\n"; >+- print "<TABLE BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"10\">\n"; >+- while ($selectRow=mysql_fetch_object($selectResult)){ >++ print "<table>\n"; >++ print "<tr><td>System:</td><td>$router</td></tr>\n"; >++ print "<tr><td>Interfaces:</td><td>$interfaces</td></tr>\n"; >++ print "<tr><td>Page Generated:</td><td>"; >++ print gmdate('D, d M Y H:i:s \G\M\T', time())."</td></tr>\n"; >++ print "</table><hr />\n"; >++ print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"10\">\n"; >++ print "<tr>\n"; >++ while ($selectRow=mysqli_fetch_object($selectResult)){ >+ $ids[$selectRow->id] = $selectRow->name; >+ $desc[$selectRow->id] = $selectRow->description; >+ $iid = $selectRow->id; >+- print "<TD><A HREF=\"$PHP_SELF?rid=$rid&iid=$iid\">\n"; >+- print "<IMG HEIGHT=\"135\" WIDTH=\"500\" SRC=\"rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid."&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\" BORDER=\"0\">\n"; >+- print "</A><BR>\n"; >+- print "<B>$selectRow->name ($selectRow->description)</B>\n"; >+- if ($even) { >++ print "<td><a href=\"$PHP_SELF?rid=$rid&iid=$iid\">\n"; >++ print "<img height=\"135\" width=\"500\" src=\"/cgi-bin/rtgplot.cgi?t1=ifInOctets_".$rid."&t2=ifOutOctets_".$rid; >++ print "&title=" . urlencode("$router: " . $selectRow->name . " (" . $selectRow->description . ")"); >++ print "&t1_name=" . urlencode("Input Octets") . "&t2_name=" . urlencode("Output Octets"); >++ print "&iid=$iid&begin=$bt&end=$et&units=bits/s&factor=8&filled=yes\" border=\"0\" />\n"; >++ print "</a><br />\n"; >++ print "<b>$selectRow->name ($selectRow->description)</b>\n"; >++ if ($even == 1) { >+ $even = 0; >+- print "<TR>\n"; >++ print "</tr><tr>\n"; >+ } >+ else $even = 1; >+ } >+- print "</TABLE>\n"; >++ print "</tr></table>\n"; >+ } >+- print "<INPUT TYPE=\"SUBMIT\" VALUE=\"Back to Main\">\n"; >++ print "<input type=\"submit\" value=\"Back to Main\" />\n"; >+ } >+ >+- if ($dbc) mysql_close($dbc); >+- echo "</FORM>\n"; >++ if ($dbc) mysqli_close($dbc); >++ echo "</form>\n"; >+ ?> >+ >+-<HR> >+-<FONT FACE="Arial" SIZE="2"> >++<hr /> >++<font face="Arial" size="2"> >+ <?php >+- print "<A HREF=\"http://rtg.sourceforge.net\">RTG</A> Version $VERSION</FONT>"; >++ print "<a href=\"http://rtg.sourceforge.net\">RTG</a> Version $VERSION</font>"; >+ ?> >+-</BODY> >+-</HTML> >++</body> >++</html> >diff -ruN net/rtg.orig/files/patch-man-rtgplot.1 net/rtg/files/patch-man-rtgplot.1 >--- net/rtg.orig/files/patch-man-rtgplot.1 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-man-rtgplot.1 1970-01-01 01:00:00.000000000 +0100 >@@ -1,43 +0,0 @@ >---- man/rtgplot.1.orig 2003-09-25 04:10:36 UTC >-+++ man/rtgplot.1 >-@@ -10,7 +10,8 @@ >- -t tablename(s) -i interface(s) [options] begin end >- .br >- .B rtgplot.cgi >--?t1=tablename &t2=tablename &iid=interface &begin=unixtime &end=unixtime &[options] >-+?t1=tablename &t`_name=descname &t2=tablename &t2_name=descname &iid=interface >-+&begin=unixtime &end=unixtime &[options] >- .SH DESCRIPTION >- .I rtgplot >- generates traffic plots of RTG data in PNG format. It operates in >-@@ -82,14 +83,19 @@ pixels. >- Set plot bottom border to >- .RI <size> >- pixels. >-+.TP >-+.IR "title=<title>" >-+Set graph title to >-+.RI <title> >- .PP >- .SH "EXAMPLES" >- .PP >- .br >- Example HTML IMG TAG: >- .PP >--<IMG SRC="rtgplot.cgi? t1=ifInOctets_2& t2=ifOutOctets_2& iid=4& >--begin=1046754000& end=1046840399& units=bits/s& factor=8& scalex=yes"> >-+<IMG SRC="rtgplot.cgi? t1=ifInOctets_2& t1_name=Input& t2=ifOutOctets_2& >-+t2_name=Output& iid=4& begin=1046754000& end=1046840399& units=bits/s& >-+factor=8& scalex=yes& title=Bandwidth+Graph"> >- .PP >- will plot two lines from the MySQL tables ifInOctets_2 and ifOutOctets_2 >- corresponding to interface 4 on router 2 for the time span 1046754000 to >-@@ -97,6 +103,8 @@ corresponding to interface 4 on router 2 >- second; the units argument is displayed as the Y-axis label on the plot. >- The scalex argument auto-adjusts the X time axis according to the available >- data samples rather than according to the actual time span given. >-+It will have a graph title of "Bandwidth Graph" and legend tags of "Input" >-+and "Output" for t1 and t2 respectively. >- .PP >- Draw a 95th percentile line: >- .PP >diff -ruN net/rtg.orig/files/patch-man-rtgpoll.1 net/rtg/files/patch-man-rtgpoll.1 >--- net/rtg.orig/files/patch-man-rtgpoll.1 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-man-rtgpoll.1 1970-01-01 01:00:00.000000000 +0100 >@@ -1,12 +0,0 @@ >---- man/rtgpoll.1.orig 2003-09-24 17:26:57 UTC >-+++ man/rtgpoll.1 >-@@ -31,6 +31,9 @@ Disable database inserts. >- .IR "\-m" >- Skip checking for multiple instances. >- .TP >-+.IR "\-p file" >-+PID file. Process ID file. >-+.TP >- .IR "\-z" >- Force database insertion of zero deltas. >- .TP >diff -ruN net/rtg.orig/files/patch-man_rtgplot.1 net/rtg/files/patch-man_rtgplot.1 >--- net/rtg.orig/files/patch-man_rtgplot.1 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-man_rtgplot.1 2018-04-02 21:54:36.238733000 +0100 >@@ -0,0 +1,43 @@ >+--- man/rtgplot.1.orig 2003-09-25 04:10:36 UTC >++++ man/rtgplot.1 >+@@ -10,7 +10,8 @@ >+ -t tablename(s) -i interface(s) [options] begin end >+ .br >+ .B rtgplot.cgi >+-?t1=tablename &t2=tablename &iid=interface &begin=unixtime &end=unixtime &[options] >++?t1=tablename &t`_name=descname &t2=tablename &t2_name=descname &iid=interface >++&begin=unixtime &end=unixtime &[options] >+ .SH DESCRIPTION >+ .I rtgplot >+ generates traffic plots of RTG data in PNG format. It operates in >+@@ -82,14 +83,19 @@ pixels. >+ Set plot bottom border to >+ .RI <size> >+ pixels. >++.TP >++.IR "title=<title>" >++Set graph title to >++.RI <title> >+ .PP >+ .SH "EXAMPLES" >+ .PP >+ .br >+ Example HTML IMG TAG: >+ .PP >+-<IMG SRC="rtgplot.cgi? t1=ifInOctets_2& t2=ifOutOctets_2& iid=4& >+-begin=1046754000& end=1046840399& units=bits/s& factor=8& scalex=yes"> >++<IMG SRC="rtgplot.cgi? t1=ifInOctets_2& t1_name=Input& t2=ifOutOctets_2& >++t2_name=Output& iid=4& begin=1046754000& end=1046840399& units=bits/s& >++factor=8& scalex=yes& title=Bandwidth+Graph"> >+ .PP >+ will plot two lines from the MySQL tables ifInOctets_2 and ifOutOctets_2 >+ corresponding to interface 4 on router 2 for the time span 1046754000 to >+@@ -97,6 +103,8 @@ corresponding to interface 4 on router 2 >+ second; the units argument is displayed as the Y-axis label on the plot. >+ The scalex argument auto-adjusts the X time axis according to the available >+ data samples rather than according to the actual time span given. >++It will have a graph title of "Bandwidth Graph" and legend tags of "Input" >++and "Output" for t1 and t2 respectively. >+ .PP >+ Draw a 95th percentile line: >+ .PP >diff -ruN net/rtg.orig/files/patch-man_rtgpoll.1 net/rtg/files/patch-man_rtgpoll.1 >--- net/rtg.orig/files/patch-man_rtgpoll.1 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-man_rtgpoll.1 2018-04-02 21:54:36.241945000 +0100 >@@ -0,0 +1,12 @@ >+--- man/rtgpoll.1.orig 2003-09-24 17:26:57 UTC >++++ man/rtgpoll.1 >+@@ -31,6 +31,9 @@ Disable database inserts. >+ .IR "\-m" >+ Skip checking for multiple instances. >+ .TP >++.IR "\-p file" >++PID file. Process ID file. >++.TP >+ .IR "\-z" >+ Force database insertion of zero deltas. >+ .TP >diff -ruN net/rtg.orig/files/patch-src-rtg.h net/rtg/files/patch-src-rtg.h >--- net/rtg.orig/files/patch-src-rtg.h 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-src-rtg.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,13 +0,0 @@ >---- src/rtg.h.orig 2003-09-25 15:56:04 UTC >-+++ src/rtg.h >-@@ -42,9 +42,7 @@ >- #define DEFAULT_DB_PASS "rtgdefault" >- #define DEFAULT_SNMP_VER 1 >- #define DEFAULT_SNMP_PORT 161 >-- >--/* PID File */ >--#define PIDFILE "/tmp/rtgpoll.pid" >-+#define DEFAULT_PIDFILE "/tmp/rtgpoll.pid" >- >- #define STAT_DESCRIP_ERROR 99 >- #define HASHSIZE 5000 >diff -ruN net/rtg.orig/files/patch-src-rtgplot.c net/rtg/files/patch-src-rtgplot.c >--- net/rtg.orig/files/patch-src-rtgplot.c 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-src-rtgplot.c 1970-01-01 01:00:00.000000000 +0100 >@@ -1,74 +0,0 @@ >---- src/rtgplot.c.orig 2003-10-02 15:27:52 UTC >-+++ src/rtgplot.c >-@@ -221,7 +221,10 @@ int main(int argc, char **argv) { >- plot_line(data[i][j], &img, &graph, colors->shade, TRUE); >- else >- plot_line(data[i][j], &img, &graph, colors->shade, FALSE); >-- snprintf(intname, sizeof(intname), "%s%d", arguments.table[i], arguments.iid[j]); >-+ if (arguments.tablename[i]) >-+ snprintf(intname, sizeof(intname), "%s", arguments.tablename[i]); >-+ else >-+ snprintf(intname, sizeof(intname), "%s%d", arguments.table[i], arguments.iid[j]); >- plot_legend(&img, rate[i][j], &graph, colors->shade, intname, offset); >- offset++; >- } >-@@ -629,15 +632,15 @@ void plot_legend(gdImagePtr * img, rate_ >- if (set.verbose >= HIGH) >- fprintf(dfp, "Plotting legend (%s).\n", __FUNCTION__); >- >-- gdImageFilledRectangle(*img, BORDER_L, >-+ gdImageFilledRectangle(*img, BORDER_L - 10, >- BORDER_T + graph->image.yplot_area + 37 + 10 * offset, >-- BORDER_L + 7, BORDER_T + graph->image.yplot_area + 44 + 10 * offset, color); >-- gdImageRectangle(*img, BORDER_L, BORDER_T + graph->image.yplot_area + 37 + 10 * offset, >-- BORDER_L + 7, BORDER_T + graph->image.yplot_area + 44 + 10 * offset, >-+ BORDER_L - 3, BORDER_T + graph->image.yplot_area + 44 + 10 * offset, color); >-+ gdImageRectangle(*img, BORDER_L - 10, BORDER_T + graph->image.yplot_area + 37 + 10 * offset, >-+ BORDER_L - 3, BORDER_T + graph->image.yplot_area + 44 + 10 * offset, >- std_colors[black]); >- >-- if (strlen(interface) > 17) { >-- interface[17] = '\0'; >-+ if (strlen(interface) > 15) { >-+ interface[15] = '\0'; >- } >- snprintf(string, sizeof(string), "%s", interface); >- for (i = 0; i < (17 - strlen(interface)); i++) { >-@@ -662,7 +665,7 @@ void plot_legend(gdImagePtr * img, rate_ >- units(rate.cur, cur), graph->units, >- units((float)rate.total, total)); >- } >-- gdImageString(*img, gdFontSmall, BORDER_L + 10, >-+ gdImageString(*img, gdFontSmall, BORDER_L, >- BORDER_T + graph->image.yplot_area + 33 + (10 * offset), string, std_colors[black]); >- } >- >-@@ -866,6 +869,13 @@ void plot_labels(gdImagePtr * img, graph >- title_offset = 1 - (0.01 * (strlen(VERSION) + strlen(COPYRIGHT) + 2)); >- snprintf(string, sizeof(string), "%s %s", COPYRIGHT, VERSION); >- gdImageString(*img, gdFontSmall, BORDER_L + (graph->image.xplot_area * title_offset), BORDER_T - 15, string, std_colors[black]); >-+ >-+ /* title */ >-+ if (graph->titlestr) >-+ { >-+ snprintf(string, sizeof(string), "%s", graph->titlestr); >-+ gdImageString(*img, gdFontMediumBold, BORDER_L + 5, BORDER_T - 16, string, std_colors[black]); >-+ } >- } >- >- >-@@ -1342,10 +1352,14 @@ void parseWeb(arguments_t *arguments, gr >- } >- } >- /* XXX REB - Warning: Deprecated, tN argument will go away in RTG 0.8 XXX */ >-+ snprintf(var, sizeof(var), "title"); >-+ graph->titlestr = cgiGetValue(cgiArg, var); >- for (i = 0; i < MAXTABLES; i++) { >- snprintf(var, sizeof(var), "t%d", i + 1); >- if ((arguments->table[i] = cgiGetValue(cgiArg, var))) >- arguments->tables_to_plot++; >-+ snprintf(var, sizeof(var), "t%d_name", i + 1); >-+ arguments->tablename[i] = cgiGetValue(cgiArg, var); >- } >- if ((graph->units = cgiGetValue(cgiArg, "units")) == NULL) { >- graph->units = malloc(sizeof(DEFAULT_UNITS)); >diff -ruN net/rtg.orig/files/patch-src-rtgplot.h net/rtg/files/patch-src-rtgplot.h >--- net/rtg.orig/files/patch-src-rtgplot.h 2014-01-22 17:40:44.000000000 +0000 >+++ net/rtg/files/patch-src-rtgplot.h 1970-01-01 01:00:00.000000000 +0100 >@@ -1,26 +0,0 @@ >---- src/rtgplot.h 2003-09-24 15:43:39.000000000 +0100 >-+++ src/rtgplot.h.new 2010-04-20 21:41:37.131774833 +0100 >-@@ -11,6 +11,7 @@ >- >- #include <gd.h> >- #include <gdfonts.h> >-+#include <gdfontmb.h> >- #include <strings.h> >- >- #define XPLOT_AREA 500 >-@@ -95,6 +96,7 @@ >- int scaley; >- range_t range; >- image_t image; >-+ char *titlestr; >- } graph_t; >- >- /* A linked list of colors that we iterate through each line */ >-@@ -106,6 +108,7 @@ >- >- typedef struct arguments_struct { >- char *table[MAXTABLES]; >-+ char *tablename[MAXTABLES]; >- int iid[MAXIIDS]; >- int tables_to_plot; >- int iids_to_plot; >diff -ruN net/rtg.orig/files/patch-src-rtgpoll.c net/rtg/files/patch-src-rtgpoll.c >--- net/rtg.orig/files/patch-src-rtgpoll.c 2016-10-26 08:01:15.000000000 +0100 >+++ net/rtg/files/patch-src-rtgpoll.c 1970-01-01 01:00:00.000000000 +0100 >@@ -1,65 +0,0 @@ >---- src/rtgpoll.c.orig 2003-09-25 15:56:04 UTC >-+++ src/rtgpoll.c >-@@ -13,6 +13,7 @@ >- stats_t stats = >- {PTHREAD_MUTEX_INITIALIZER, 0, 0, 0, 0, 0, 0, 0, 0, 0.0}; >- char *target_file = NULL; >-+char *pidfile = NULL; >- target_t *current = NULL; >- MYSQL mysql; >- int entries = 0; >-@@ -41,7 +42,7 @@ int main(int argc, char *argv[]) { >- config_defaults(&set); >- >- /* Parse the command-line. */ >-- while ((ch = getopt(argc, argv, "c:dhmt:vz")) != EOF) >-+ while ((ch = getopt(argc, argv, "c:dhmp:t:vz")) != EOF) >- switch ((char) ch) { >- case 'c': >- conf_file = optarg; >-@@ -55,6 +56,9 @@ int main(int argc, char *argv[]) { >- case 'm': >- set.multiple++; >- break; >-+ case 'p': >-+ pidfile = optarg; >-+ break; >- case 't': >- target_file = optarg; >- break; >-@@ -66,6 +70,9 @@ int main(int argc, char *argv[]) { >- break; >- } >- >-+ if (!pidfile) >-+ pidfile = DEFAULT_PIDFILE; >-+ >- if (set.verbose >= LOW) >- printf("RTG version %s starting.\n", VERSION); >- >-@@ -78,7 +85,7 @@ int main(int argc, char *argv[]) { >- sigaddset(&signal_set, SIGINT); >- sigaddset(&signal_set, SIGQUIT); >- if (!set.multiple) >-- checkPID(PIDFILE); >-+ checkPID(pidfile); >- >- if (pthread_sigmask(SIG_BLOCK, &signal_set, NULL) != 0) >- printf("pthread_sigmask error\n"); >-@@ -244,7 +251,7 @@ void *sig_handler(void *arg) >- if (set.verbose >= LOW) >- printf("Quiting: received signal %d.\n", sig_number); >- rtg_dbdisconnect(&mysql); >-- unlink(PIDFILE); >-+ unlink(pidfile); >- exit(1); >- break; >- } >-@@ -259,6 +266,7 @@ void usage(char *prog) >- printf("\nOptions:\n"); >- printf(" -c <file> Specify configuration file\n"); >- printf(" -d Disable database inserts\n"); >-+ printf(" -p <file> Specify pid file (defaults to /tmp/rtgpoll.pid)\n"); >- printf(" -t <file> Specify target file\n"); >- printf(" -v Increase verbosity\n"); >- printf(" -m Allow multiple instances\n"); >diff -ruN net/rtg.orig/files/patch-src_rtg.h net/rtg/files/patch-src_rtg.h >--- net/rtg.orig/files/patch-src_rtg.h 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-src_rtg.h 2018-04-02 21:56:45.406158000 +0100 >@@ -0,0 +1,16 @@ >+--- src/rtg.h.orig 2003-09-25 15:56:04 UTC >++++ src/rtg.h >+@@ -40,11 +40,9 @@ >+ #define DEFAULT_DB_DB "rtg" >+ #define DEFAULT_DB_USER "snmp" >+ #define DEFAULT_DB_PASS "rtgdefault" >+-#define DEFAULT_SNMP_VER 1 >++#define DEFAULT_SNMP_VER 2 >+ #define DEFAULT_SNMP_PORT 161 >+- >+-/* PID File */ >+-#define PIDFILE "/tmp/rtgpoll.pid" >++#define DEFAULT_PIDFILE "/tmp/rtgpoll.pid" >+ >+ #define STAT_DESCRIP_ERROR 99 >+ #define HASHSIZE 5000 >diff -ruN net/rtg.orig/files/patch-src_rtgplot.c net/rtg/files/patch-src_rtgplot.c >--- net/rtg.orig/files/patch-src_rtgplot.c 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-src_rtgplot.c 2018-04-02 21:54:36.248793000 +0100 >@@ -0,0 +1,74 @@ >+--- src/rtgplot.c.orig 2003-10-02 15:27:52 UTC >++++ src/rtgplot.c >+@@ -221,7 +221,10 @@ int main(int argc, char **argv) { >+ plot_line(data[i][j], &img, &graph, colors->shade, TRUE); >+ else >+ plot_line(data[i][j], &img, &graph, colors->shade, FALSE); >+- snprintf(intname, sizeof(intname), "%s%d", arguments.table[i], arguments.iid[j]); >++ if (arguments.tablename[i]) >++ snprintf(intname, sizeof(intname), "%s", arguments.tablename[i]); >++ else >++ snprintf(intname, sizeof(intname), "%s%d", arguments.table[i], arguments.iid[j]); >+ plot_legend(&img, rate[i][j], &graph, colors->shade, intname, offset); >+ offset++; >+ } >+@@ -629,15 +632,15 @@ void plot_legend(gdImagePtr * img, rate_ >+ if (set.verbose >= HIGH) >+ fprintf(dfp, "Plotting legend (%s).\n", __FUNCTION__); >+ >+- gdImageFilledRectangle(*img, BORDER_L, >++ gdImageFilledRectangle(*img, BORDER_L - 10, >+ BORDER_T + graph->image.yplot_area + 37 + 10 * offset, >+- BORDER_L + 7, BORDER_T + graph->image.yplot_area + 44 + 10 * offset, color); >+- gdImageRectangle(*img, BORDER_L, BORDER_T + graph->image.yplot_area + 37 + 10 * offset, >+- BORDER_L + 7, BORDER_T + graph->image.yplot_area + 44 + 10 * offset, >++ BORDER_L - 3, BORDER_T + graph->image.yplot_area + 44 + 10 * offset, color); >++ gdImageRectangle(*img, BORDER_L - 10, BORDER_T + graph->image.yplot_area + 37 + 10 * offset, >++ BORDER_L - 3, BORDER_T + graph->image.yplot_area + 44 + 10 * offset, >+ std_colors[black]); >+ >+- if (strlen(interface) > 17) { >+- interface[17] = '\0'; >++ if (strlen(interface) > 15) { >++ interface[15] = '\0'; >+ } >+ snprintf(string, sizeof(string), "%s", interface); >+ for (i = 0; i < (17 - strlen(interface)); i++) { >+@@ -662,7 +665,7 @@ void plot_legend(gdImagePtr * img, rate_ >+ units(rate.cur, cur), graph->units, >+ units((float)rate.total, total)); >+ } >+- gdImageString(*img, gdFontSmall, BORDER_L + 10, >++ gdImageString(*img, gdFontSmall, BORDER_L, >+ BORDER_T + graph->image.yplot_area + 33 + (10 * offset), string, std_colors[black]); >+ } >+ >+@@ -866,6 +869,13 @@ void plot_labels(gdImagePtr * img, graph >+ title_offset = 1 - (0.01 * (strlen(VERSION) + strlen(COPYRIGHT) + 2)); >+ snprintf(string, sizeof(string), "%s %s", COPYRIGHT, VERSION); >+ gdImageString(*img, gdFontSmall, BORDER_L + (graph->image.xplot_area * title_offset), BORDER_T - 15, string, std_colors[black]); >++ >++ /* title */ >++ if (graph->titlestr) >++ { >++ snprintf(string, sizeof(string), "%s", graph->titlestr); >++ gdImageString(*img, gdFontMediumBold, BORDER_L + 5, BORDER_T - 16, string, std_colors[black]); >++ } >+ } >+ >+ >+@@ -1342,10 +1352,14 @@ void parseWeb(arguments_t *arguments, gr >+ } >+ } >+ /* XXX REB - Warning: Deprecated, tN argument will go away in RTG 0.8 XXX */ >++ snprintf(var, sizeof(var), "title"); >++ graph->titlestr = cgiGetValue(cgiArg, var); >+ for (i = 0; i < MAXTABLES; i++) { >+ snprintf(var, sizeof(var), "t%d", i + 1); >+ if ((arguments->table[i] = cgiGetValue(cgiArg, var))) >+ arguments->tables_to_plot++; >++ snprintf(var, sizeof(var), "t%d_name", i + 1); >++ arguments->tablename[i] = cgiGetValue(cgiArg, var); >+ } >+ if ((graph->units = cgiGetValue(cgiArg, "units")) == NULL) { >+ graph->units = malloc(sizeof(DEFAULT_UNITS)); >diff -ruN net/rtg.orig/files/patch-src_rtgplot.h net/rtg/files/patch-src_rtgplot.h >--- net/rtg.orig/files/patch-src_rtgplot.h 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-src_rtgplot.h 2018-04-02 21:15:02.081928000 +0100 >@@ -0,0 +1,26 @@ >+--- src/rtgplot.h.orig 2003-09-24 14:43:39 UTC >++++ src/rtgplot.h >+@@ -11,6 +11,7 @@ >+ >+ #include <gd.h> >+ #include <gdfonts.h> >++#include <gdfontmb.h> >+ #include <strings.h> >+ >+ #define XPLOT_AREA 500 >+@@ -95,6 +96,7 @@ typedef struct graph_struct { >+ int scaley; >+ range_t range; >+ image_t image; >++ char *titlestr; >+ } graph_t; >+ >+ /* A linked list of colors that we iterate through each line */ >+@@ -106,6 +108,7 @@ typedef struct color_struct { >+ >+ typedef struct arguments_struct { >+ char *table[MAXTABLES]; >++ char *tablename[MAXTABLES]; >+ int iid[MAXIIDS]; >+ int tables_to_plot; >+ int iids_to_plot; >diff -ruN net/rtg.orig/files/patch-src_rtgpoll.c net/rtg/files/patch-src_rtgpoll.c >--- net/rtg.orig/files/patch-src_rtgpoll.c 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-src_rtgpoll.c 2018-04-02 21:54:36.267961000 +0100 >@@ -0,0 +1,65 @@ >+--- src/rtgpoll.c.orig 2003-09-25 15:56:04 UTC >++++ src/rtgpoll.c >+@@ -13,6 +13,7 @@ >+ stats_t stats = >+ {PTHREAD_MUTEX_INITIALIZER, 0, 0, 0, 0, 0, 0, 0, 0, 0.0}; >+ char *target_file = NULL; >++char *pidfile = NULL; >+ target_t *current = NULL; >+ MYSQL mysql; >+ int entries = 0; >+@@ -41,7 +42,7 @@ int main(int argc, char *argv[]) { >+ config_defaults(&set); >+ >+ /* Parse the command-line. */ >+- while ((ch = getopt(argc, argv, "c:dhmt:vz")) != EOF) >++ while ((ch = getopt(argc, argv, "c:dhmp:t:vz")) != EOF) >+ switch ((char) ch) { >+ case 'c': >+ conf_file = optarg; >+@@ -55,6 +56,9 @@ int main(int argc, char *argv[]) { >+ case 'm': >+ set.multiple++; >+ break; >++ case 'p': >++ pidfile = optarg; >++ break; >+ case 't': >+ target_file = optarg; >+ break; >+@@ -66,6 +70,9 @@ int main(int argc, char *argv[]) { >+ break; >+ } >+ >++ if (!pidfile) >++ pidfile = DEFAULT_PIDFILE; >++ >+ if (set.verbose >= LOW) >+ printf("RTG version %s starting.\n", VERSION); >+ >+@@ -78,7 +85,7 @@ int main(int argc, char *argv[]) { >+ sigaddset(&signal_set, SIGINT); >+ sigaddset(&signal_set, SIGQUIT); >+ if (!set.multiple) >+- checkPID(PIDFILE); >++ checkPID(pidfile); >+ >+ if (pthread_sigmask(SIG_BLOCK, &signal_set, NULL) != 0) >+ printf("pthread_sigmask error\n"); >+@@ -244,7 +251,7 @@ void *sig_handler(void *arg) >+ if (set.verbose >= LOW) >+ printf("Quiting: received signal %d.\n", sig_number); >+ rtg_dbdisconnect(&mysql); >+- unlink(PIDFILE); >++ unlink(pidfile); >+ exit(1); >+ break; >+ } >+@@ -259,6 +266,7 @@ void usage(char *prog) >+ printf("\nOptions:\n"); >+ printf(" -c <file> Specify configuration file\n"); >+ printf(" -d Disable database inserts\n"); >++ printf(" -p <file> Specify pid file (defaults to /tmp/rtgpoll.pid)\n"); >+ printf(" -t <file> Specify target file\n"); >+ printf(" -v Increase verbosity\n"); >+ printf(" -m Allow multiple instances\n"); >diff -ruN net/rtg.orig/files/patch-src_rtgutil.c net/rtg/files/patch-src_rtgutil.c >--- net/rtg.orig/files/patch-src_rtgutil.c 1970-01-01 01:00:00.000000000 +0100 >+++ net/rtg/files/patch-src_rtgutil.c 2018-04-03 00:05:24.250388000 +0100 >@@ -0,0 +1,10 @@ >+--- src/rtgutil.c.orig 2018-04-02 23:03:54 UTC >++++ src/rtgutil.c >+@@ -37,6 +37,7 @@ int read_rtg_config(char *file, config_t >+ else if (!strcasecmp(p1, "DB_Database")) strncpy(set->dbdb, p2, sizeof(set->dbdb)); >+ else if (!strcasecmp(p1, "DB_User")) strncpy(set->dbuser, p2, sizeof(set->dbuser)); >+ else if (!strcasecmp(p1, "DB_Pass")) strncpy(set->dbpass, p2, sizeof(set->dbpass)); >++ else if (!strcasecmp(p1, "Update_desc")) ; // no-op >+ >+ /* Long longs not ANSI C. If OS doesn't support atoll() use default. */ >+ else if (!strcasecmp(p1, "OutOfRange"))
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
koobs
:
maintainer-approval-
Actions:
View
|
Diff
Attachments on
bug 227376
:
192343
|
192348
|
198406
|
198418
|
204165