1<?php
2
3if ($_GET['legend']) {
4    $legend = $_GET['legend'];
5}
6
7$rrd_options = " --alt-autoscale-max -E --start $from --end " . ($to - 150) . " --width $width --height $height ";
8$rrd_options .= \LibreNMS\Config::get('rrdgraph_def_text') . ' -c FONT#' . ltrim(\LibreNMS\Config::get('rrdgraph_def_text_color'), '#');
9
10if ($height < '99') {
11    $rrd_options .= ' --only-graph';
12}
13
14$i = 1;
15
16foreach (explode(',', $_GET['id']) as $ifid) {
17    $int = dbFetchRow('SELECT `hostname` FROM `ports` AS I, devices as D WHERE I.port_id = ? AND I.device_id = D.device_id', [$ifid]);
18    $rrd_file = get_port_rrdfile_path($int['hostname'], $ifid);
19    if (Rrd::checkRrdExists($rrd_file)) {
20        if (strstr($inverse, 'a')) {
21            $in = 'OUT';
22            $out = 'IN';
23        } else {
24            $in = 'IN';
25            $out = 'OUT';
26        }
27
28        $rrd_options .= ' DEF:inoctets' . $i . '=' . $rrd_file . ':' . $in . 'OCTETS:AVERAGE';
29        $rrd_options .= ' DEF:outoctets' . $i . '=' . $rrd_file . ':' . $out . 'OCTETS:AVERAGE';
30        $in_thing .= $seperator . 'inoctets' . $i . ',UN,0,' . 'inoctets' . $i . ',IF';
31        $out_thing .= $seperator . 'outoctets' . $i . ',UN,0,' . 'outoctets' . $i . ',IF';
32        $pluses .= $plus;
33        $seperator = ',';
34        $plus = ',+';
35        $i++;
36    }
37}//end foreach
38
39unset($seperator);
40unset($plus);
41
42foreach (explode(',', $_GET['idb']) as $ifid) {
43    $int = dbFetchRow('SELECT `hostname` FROM `ports` AS I, devices as D WHERE I.port_id = ? AND I.device_id = D.device_id', [$ifid]);
44    $rrd_file = get_port_rrdfile_path($int['hostname'], $ifid);
45    if (Rrd::checkRrdExists($rrd_file)) {
46        if (strstr($inverse, 'b')) {
47            $in = 'OUT';
48            $out = 'IN';
49        } else {
50            $in = 'IN';
51            $out = 'OUT';
52        }
53
54        $rrd_options .= ' DEF:inoctetsb' . $i . '=' . $rrd_file . ':' . $in . 'OCTETS:AVERAGE';
55        $rrd_options .= ' DEF:outoctetsb' . $i . '=' . $rrd_file . ':' . $out . 'OCTETS:AVERAGE';
56        $in_thingb .= $seperator . 'inoctetsb' . $i . ',UN,0,' . 'inoctetsb' . $i . ',IF';
57        $out_thingb .= $seperator . 'outoctetsb' . $i . ',UN,0,' . 'outoctetsb' . $i . ',IF';
58        $plusesb .= $plus;
59        $seperator = ',';
60        $plus = ',+';
61        $i++;
62    }
63}//end foreach
64
65unset($seperator);
66unset($plus);
67
68foreach (explode(',', $_GET['idc']) as $ifid) {
69    $int = dbFetchRow('SELECT `hostname` FROM `ports` AS I, devices as D WHERE I.port_id = ? AND I.device_id = D.device_id', [$ifid]);
70    $rrd_file = get_port_rrdfile_path($int['hostname'], $ifid);
71    if (Rrd::checkRrdExists($rrd_file)) {
72        if (strstr($inverse, 'c')) {
73            $in = 'OUT';
74            $out = 'IN';
75        } else {
76            $in = 'IN';
77            $out = 'OUT';
78        }
79
80        $rrd_options .= ' DEF:inoctetsc' . $i . '=' . $rrd_file . ':' . $in . 'OCTETS:AVERAGE';
81        $rrd_options .= ' DEF:outoctetsc' . $i . '=' . $rrd_file . ':' . $out . 'OCTETS:AVERAGE';
82        $in_thingc .= $seperator . 'inoctetsc' . $i . ',UN,0,' . 'inoctetsc' . $i . ',IF';
83        $out_thingc .= $seperator . 'outoctetsc' . $i . ',UN,0,' . 'outoctetsc' . $i . ',IF';
84        $plusesc .= $plus;
85        $seperator = ',';
86        $plus = ',+';
87        $i++;
88    }
89}//end foreach
90
91$rrd_options .= ' CDEF:inoctets=' . $in_thing . $pluses;
92$rrd_options .= ' CDEF:outoctets=' . $out_thing . $pluses;
93$rrd_options .= ' CDEF:inoctetsb=' . $in_thingb . $plusesb;
94$rrd_options .= ' CDEF:outoctetsb=' . $out_thingb . $plusesb;
95$rrd_options .= ' CDEF:inoctetsc=' . $in_thingc . $plusesc;
96$rrd_options .= ' CDEF:outoctetsc=' . $out_thingc . $plusesc;
97$rrd_options .= ' CDEF:doutoctets=outoctets,-1,*';
98$rrd_options .= ' CDEF:inbits=inoctets,8,*';
99$rrd_options .= ' CDEF:outbits=outoctets,8,*';
100$rrd_options .= ' CDEF:doutbits=doutoctets,8,*';
101$rrd_options .= ' CDEF:doutoctetsb=outoctetsb,-1,*';
102$rrd_options .= ' CDEF:inbitsb=inoctetsb,8,*';
103$rrd_options .= ' CDEF:outbitsb=outoctetsb,8,*';
104$rrd_options .= ' CDEF:doutbitsb=doutoctetsb,8,*';
105$rrd_options .= ' CDEF:doutoctetsc=outoctetsc,-1,*';
106$rrd_options .= ' CDEF:inbitsc=inoctetsc,8,*';
107$rrd_options .= ' CDEF:outbitsc=outoctetsc,8,*';
108$rrd_options .= ' CDEF:doutbitsc=doutoctetsc,8,*';
109$rrd_options .= ' CDEF:inbits_tot=inbits,inbitsb,inbitsc,+,+';
110$rrd_options .= ' CDEF:outbits_tot=outbits,outbitsb,outbitsc,+,+';
111$rrd_options .= ' CDEF:inbits_stot=inbitsc,inbitsb,+';
112$rrd_options .= ' CDEF:outbits_stot=outbitsc,outbitsb,+';
113$rrd_options .= ' CDEF:doutbits_stot=outbits_stot,-1,*';
114$rrd_options .= ' CDEF:doutbits_tot=outbits_tot,-1,*';
115$rrd_options .= ' CDEF:nothing=outbits_tot,outbits_tot,-';
116
117if ($legend == 'no') {
118    $rrd_options .= ' AREA:inbits_tot#cdeb8b:';
119    $rrd_options .= ' AREA:doutbits_tot#cdeb8b:';
120    $rrd_options .= ' LINE1.25:inbits_tot#aacc77:';
121    $rrd_options .= ' LINE1.25:doutbits_tot#aacc88:';
122    $rrd_options .= ' AREA:inbits_stot#c3d9ff:';
123    $rrd_options .= ' AREA:doutbits_stot#c3d9ff:';
124    $rrd_options .= ' LINE1:inbits_stot#b3a9cf:';
125    $rrd_options .= ' LINE1:doutbits_stot#b3a9cf:';
126    $rrd_options .= ' AREA:inbitsc#ffcc99:';
127    $rrd_options .= ' AREA:doutbitsc#ffcc99:';
128    $rrd_options .= ' LINE1.25:inbitsc#ddaa88';
129    $rrd_options .= ' LINE1.25:doutbitsc#ddaa88';
130    $rrd_options .= ' LINE1:inbits#006600:';
131    $rrd_options .= ' LINE1:doutbits#006600:';
132    $rrd_options .= ' LINE1:inbitsb#000099:';
133    $rrd_options .= ' LINE1:doutbitsb#000099:';
134    $rrd_options .= ' LINE0.5:nothing#555555:';
135} else {
136    $rrd_options .= " COMMENT:bps\ \ \ \ \ \ \ \ \ \ \ \ Current\ \ \ Average\ \ \ \ \ \ Min\ \ \ \ \ \ Max\\\\n";
137    $rrd_options .= ' AREA:inbits_tot#cdeb8b:ATM\ \ In\ ';
138    $rrd_options .= ' GPRINT:inbits:LAST:%6.2lf%s';
139    $rrd_options .= ' GPRINT:inbits:AVERAGE:%6.2lf%s';
140    $rrd_options .= ' GPRINT:inbits:MIN:%6.2lf%s';
141    $rrd_options .= ' GPRINT:inbits:MAX:%6.2lf%s\l';
142    $rrd_options .= ' AREA:doutbits_tot#cdeb8b:';
143    $rrd_options .= ' COMMENT:\ \ \ \ \ \ \ Out';
144    $rrd_options .= ' GPRINT:outbits:LAST:%6.2lf%s';
145    $rrd_options .= ' GPRINT:outbits:AVERAGE:%6.2lf%s';
146    $rrd_options .= ' GPRINT:outbits:MIN:%6.2lf%s';
147    $rrd_options .= ' GPRINT:outbits:MAX:%6.2lf%s\l';
148    $rrd_options .= ' LINE1.25:inbits_tot#aacc77:';
149    $rrd_options .= ' LINE1.25:doutbits_tot#aacc88:';
150    $rrd_options .= ' AREA:inbits_stot#c3d9ff:NGN\ \ In\ ';
151    $rrd_options .= ' GPRINT:inbitsb:LAST:%6.2lf%s';
152    $rrd_options .= ' GPRINT:inbitsb:AVERAGE:%6.2lf%s';
153    $rrd_options .= ' GPRINT:inbitsb:MIN:%6.2lf%s';
154    $rrd_options .= ' GPRINT:inbitsb:MAX:%6.2lf%s\l';
155    $rrd_options .= ' AREA:doutbits_stot#c3d9ff:';
156    $rrd_options .= ' COMMENT:\ \ \ \ \ \ \ Out';
157    $rrd_options .= ' GPRINT:outbitsb:LAST:%6.2lf%s';
158    $rrd_options .= ' GPRINT:outbitsb:AVERAGE:%6.2lf%s';
159    $rrd_options .= ' GPRINT:outbitsb:MIN:%6.2lf%s';
160    $rrd_options .= ' GPRINT:outbitsb:MAX:%6.2lf%s\l';
161    $rrd_options .= ' LINE1:inbits_stot#b3a9cf:';
162    $rrd_options .= ' LINE1:doutbits_stot#b3a9cf:';
163    $rrd_options .= ' AREA:inbitsc#ffcc99:Wave\ In\ ';
164    $rrd_options .= ' GPRINT:inbitsc:LAST:%6.2lf%s';
165    $rrd_options .= ' GPRINT:inbitsc:AVERAGE:%6.2lf%s';
166    $rrd_options .= ' GPRINT:inbitsc:MIN:%6.2lf%s';
167    $rrd_options .= ' GPRINT:inbitsc:MAX:%6.2lf%s\l';
168    $rrd_options .= ' AREA:doutbitsc#ffcc99:';
169    $rrd_options .= ' COMMENT:\ \ \ \ \ \ \ Out';
170    $rrd_options .= ' GPRINT:outbitsc:LAST:%6.2lf%s';
171    $rrd_options .= ' GPRINT:outbitsc:AVERAGE:%6.2lf%s';
172    $rrd_options .= ' GPRINT:outbitsc:MIN:%6.2lf%s';
173    $rrd_options .= ' GPRINT:outbitsc:MAX:%6.2lf%s\l';
174    $rrd_options .= ' LINE1.25:inbitsc#ddaa88';
175    $rrd_options .= ' LINE1.25:doutbitsc#ddaa88';
176    $rrd_options .= ' LINE1:inbits#006600:';
177    $rrd_options .= ' LINE1:doutbits#006600:';
178    $rrd_options .= ' LINE1:inbitsb#000099:';
179    $rrd_options .= ' LINE1:doutbitsb#000099:';
180    $rrd_options .= ' LINE0.5:nothing#555555:';
181
182    $rrd_options .= ' COMMENT:Total\ \ In\ ';
183    $rrd_options .= ' GPRINT:inbits_tot:LAST:%6.2lf%s';
184    $rrd_options .= ' GPRINT:inbits_tot:AVERAGE:%6.2lf%s';
185    $rrd_options .= ' GPRINT:inbits_tot:MIN:%6.2lf%s';
186    $rrd_options .= ' GPRINT:inbits_tot:MAX:%6.2lf%s\l';
187    $rrd_options .= ' COMMENT:\ \ \ \ \ \ \ Out';
188    $rrd_options .= ' GPRINT:outbits_tot:LAST:%6.2lf%s';
189    $rrd_options .= ' GPRINT:outbits_tot:AVERAGE:%6.2lf%s';
190    $rrd_options .= ' GPRINT:outbits_tot:MIN:%6.2lf%s';
191    $rrd_options .= ' GPRINT:outbits_tot:MAX:%6.2lf%s\l';
192}//end if
193
194if ($width <= '300') {
195    $rrd_options .= ' --font LEGEND:7:' . \LibreNMS\Config::get('mono_font') . ' --font AXIS:6:' . \LibreNMS\Config::get('mono_font') . ' --font-render-mode normal';
196}
197