/** * */ function smarty_function_mrtgScale($params, &$smarty) { $strFormat = isset($params['format']) ? $params['format'] : 'bits'; $intDem = isset($params['decimals']) ? $params['decimals'] : 3; $intReturn = isset($params['return']) ? $params['return'] : 0; return IXP_Mrtg::scale($params['value'], $strFormat, $intDem, $intReturn); }
/** * Generate a URL for an Mrtg image. * */ function smarty_function_genMrtgGraphBox($params, &$smarty) { $url = IXP_Mrtg::generateZendFrontendUrl($params); $box = <<<END_BOX <table width="506" cellspacing="1" cellpadding="1"> <tr> <td colspan="8" style="width: 500; height: 135;"> <img width="500" height="135" border="0" src="{$url}" /> </td> </tr> <tr> <td width="10%"> </td> <td width="25%" align="right"> <strong>Max </strong> </td> <td width="25%" align="right"> <strong>Average </strong> </td> <td width="25%" align="right"> <strong>Current </strong> </td> <td width="15%"></td> </tr> <tr> <td style="color: #00cc00; font-weight: bold;" align="left"> In </td> <td align="right"> {$params['values']['maxin']} </td> <td align="right"> {$params['values']['averagein']} </td> <td align="right"> {$params['values']['curin']} </td> <td></td> </tr> <tr> <td style="color: #0000ff; font-weight: bold;" align="left"> Out </td> <td align="right"> {$params['values']['maxout']} </td> <td align="right"> {$params['values']['averageout']} </td> <td align="right"> {$params['values']['curout']} </td> <td></td> </tr> </table> END_BOX; return $box; }
/** * Get public peering graphs * */ private function _publicPeeringGraphs() { // only do this once every five minutes if ($admin_home_stats = $this->getD2Cache()->fetch('admin_home_stats')) { $this->view->graphs = $admin_home_stats['graphs']; $this->view->stats = $admin_home_stats['stats']; } else { $admin_home_stats = []; $graphs = []; $stats = []; if ($this->multiIXP()) { $ixps = $this->getD2R('\\Entities\\IXP')->findAll(); foreach ($ixps as $ixp) { if ($ixp->getAggregateGraphName()) { $graphs[$ixp->getId()]['name'] = $ixp->getAggregateGraphName(); $graphs[$ixp->getId()]['title'] = $ixp->getName(); $mrtg = new IXP_Mrtg($ixp->getMrtgPath() . DIRECTORY_SEPARATOR . 'ixp_peering-' . $ixp->getAggregateGraphName() . '-' . IXP_Mrtg::CATEGORY_BITS . '.log'); $stats[$ixp->getId()] = $mrtg->getValues(IXP_Mrtg::PERIOD_MONTH, IXP_Mrtg::CATEGORY_BITS); } } } else { $ixp = $this->getD2R('\\Entities\\IXP')->getDefault(); if ($ixp->getAggregateGraphName()) { $graphs[$ixp->getId()]['name'] = $ixp->getAggregateGraphName(); $graphs[$ixp->getId()]['title'] = 'IXP Aggregate Graph'; $mrtg = new IXP_Mrtg($ixp->getMrtgPath() . DIRECTORY_SEPARATOR . 'ixp_peering-' . $ixp->getAggregateGraphName() . '-' . IXP_Mrtg::CATEGORY_BITS . '.log'); $stats[$ixp->getId()] = $mrtg->getValues(IXP_Mrtg::PERIOD_MONTH, IXP_Mrtg::CATEGORY_BITS); } foreach ($ixp->getInfrastructures() as $inf) { if ($inf->getAggregateGraphName()) { $graphs[$ixp->getId() . '-' . $inf->getId()]['name'] = $inf->getAggregateGraphName(); $graphs[$ixp->getId() . '-' . $inf->getId()]['title'] = $inf->getName(); $mrtg = new IXP_Mrtg($ixp->getMrtgPath() . DIRECTORY_SEPARATOR . 'ixp_peering-' . $inf->getAggregateGraphName() . '-' . IXP_Mrtg::CATEGORY_BITS . '.log'); $stats[$ixp->getId() . '-' . $inf->getId()] = $mrtg->getValues(IXP_Mrtg::PERIOD_MONTH, IXP_Mrtg::CATEGORY_BITS); } } } $admin_home_stats['graphs'] = $this->view->graphs = $graphs; $admin_home_stats['stats'] = $this->view->stats = $stats; $this->getD2Cache()->save('admin_home_stats', $admin_home_stats, 300); } }
/** * Generate a HTML img tag for an Mrtg image. * */ function smarty_function_genMrtgImgUrlTag($params, &$smarty) { $url = IXP_Mrtg::generateZendFrontendUrl($params); return '<img width="500" height="135" border="0" src="' . $url . '" />'; }
function retrieveP2pImageAction() { $cust = $this->view->cust = $this->resolveCustomerByShortnameParam(); // includes security checks $this->setIXP($cust); $category = $this->setCategory('category', false); $period = $this->setPeriod(); $proto = $this->setProtocol(); // Find the possible VLAN interfaces that this customer has for the given IXP // and ensure we have a valid svli $srcVlis = $this->getD2R('\\Entities\\VlanInterface')->getForCustomer($cust, $this->ixp); if (!($svli = $this->getParam('svli', false)) || !isset($svli, $srcVlis)) { $this->getLogger()->alert("P2P file request with illegal svli={$svli} for {$cust->getShortname()}/{$this->getUser()->getUsername()}"); die; } // Find the possible interfaces that this customer peers with and ensure we have a valid dvli $dstVlis = $this->getD2R('\\Entities\\VlanInterface')->getObjectsForVlan($srcVlis[$svli]->getVlan()); unset($dstVlis[$svli]); if (!($dvli = $this->getParam('dvli', false)) || !isset($dvli, $dstVlis)) { $this->getLogger()->alert("P2P file request with illegal dvli={$dvli} for {$cust->getShortname()}/{$this->getUser()->getUsername()}"); die; } $filename = IXP_Mrtg::getMrtgP2pFilePath($this->ixp->getMrtgP2pPath(), $svli, $dvli, $category, $period, $proto); $this->getLogger()->debug("Serving P2P {$filename} to {$this->getUser()->getUsername()}"); if (@readfile($filename) === false) { $this->getLogger()->notice('Could not load ' . $filename . ' for mrtg/retrieveImageAction'); @readfile(APPLICATION_PATH . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . '300x1.png'); } }
/** * With the introduction of LAG graphs in 3.6.14, we wanted to merge past * traffic data form individual ports into the new lag files * * This CLI action just lists the files to merge to and from. * * Use a merger such as: http://bangbangsoundslikemachinery.blogspot.ie/2012/02/mrtg-log-aggregator.html * And set $MERGER and $MRTGPATH accordingly before running the resultant commands. */ public function cliLagHistoryToFromAction() { // get all active trafficing customers $custs = $this->getD2R('\\Entities\\Customer')->getCurrentActive(false, true, false, $this->getD2R('\\Entities\\IXP')->getDefault()); foreach ($custs as $c) { foreach ($c->getVirtualInterfaces() as $vi) { if (count($vi->getPhysicalInterfaces()) <= 1) { continue; } foreach (IXP_Mrtg::$CATEGORIES as $category) { echo '$MERGER'; foreach ($vi->getPhysicalInterfaces() as $pi) { echo ' $MRTGPATH/' . IXP_Mrtg::getMrtgFilePath('members', 'LOG', $pi->getMonitorIndex(), $category, $c->getShortname()); } echo ' >'; echo ' $MRTGPATH/' . IXP_Mrtg::getMrtgFilePath('members', 'LOG', 'lag-viid-' . $vi->getId(), $category, $c->getShortname()); echo "\n"; } } } }
/** * Generate a URL for an Mrtg image. * */ function smarty_function_genMrtgImgUrl($params, &$smarty) { return IXP_Mrtg::generateZendFrontendUrl($params); }
private function emailPortsWithCounts($type, $category, $inField, $outField) { $this->view->day = $day = date('Y-m-d', strtotime('-1 days')); $data = $this->getD2R('\\Entities\\TrafficDaily')->load($day, $category); $mail = $this->getMailer(); $mail->setFrom($this->_options['cli']['ports_with_counts']['from_email'], $this->_options['cli']['ports_with_counts']['from_name'])->setSubject(sprintf($this->_options['cli']['ports_with_counts']['subject'], $type))->setType(Zend_Mime::MULTIPART_RELATED); foreach ($this->_options['cli']['ports_with_counts']['recipients'] as $r) { $mail->addTo($r); } $this->view->type = $type; $mailHtml = $this->view->render('statistics-cli/email/counts-header.phtml'); $numWithCounts = 0; foreach ($data as $d) { if ($d[$inField] == 0 && $d[$outField] == 0) { continue; } $numWithCounts++; if ($this->isVerbose() || $this->isDebug()) { echo "{$d['Customer']['name']}\t\tIN / OUT: {$d[$inField]} / {$d[$outField]}\n"; } $mrtg = $mail->createAttachment(file_get_contents(IXP_Mrtg::getMrtgFilePath($this->getD2R('\\Entities\\IXP')->getDefault()->getMrtgPath() . '/members', 'PNG', 'aggregate', $category, $d['Customer']['shortname'], IXP_Mrtg::PERIOD_DAY)), "image/png", Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, "{$d['Customer']['shortname']}-aggregate.png"); $this->view->mrtg_id = $mrtg->id = "{$d['Customer']['shortname']}-aggregate"; $this->view->ecust = $d['Customer']; $this->view->in = $d[$inField]; $this->view->out = $d[$outField]; $mailHtml .= $this->view->render('statistics-cli/email/counts-member.phtml'); } if ($numWithCounts) { $this->view->numWithCounts = $numWithCounts; $mailHtml .= $this->view->render('statistics-cli/email/counts-footer.phtml'); $mail->setBodyHtml($mailHtml); $mail->send(); } }
public function switchesAction() { $eSwitches = $this->getD2EM()->getRepository('\\Entities\\Switcher')->getAndCache(true, \Entities\Switcher::TYPE_SWITCH); $switches = []; foreach ($eSwitches as $s) { // if we're not doing infrastructure aggregates, we're probably not doing swicth aggregates: if ($s->getInfrastructure()->getAggregateGraphName()) { $switches[$s->getId()]['name'] = $s->getName(); $switches[$s->getId()]['mrtg'] = $s->getInfrastructure()->getIXP()->getMrtgPath(); } } $this->view->switches = $switches; $switch = $this->getParam('switch', array_keys($switches)[0]); if (!in_array($switch, array_keys($switches))) { $switch = array_keys($switches)[0]; } $this->view->switch = $switch; $category = $this->setCategory(); // override allowed categories as some aren't available here $this->view->categories = IXP_Mrtg::$CATEGORIES_AGGREGATE; $this->setPeriod(); $stats = array(); foreach (IXP_Mrtg::$PERIODS as $period) { $mrtg = new IXP_Mrtg($switches[$switch]['mrtg'] . '/switches/' . 'switch-aggregate-' . $switches[$switch]['name'] . '-' . $category . '.log'); $stats[$period] = $mrtg->getValues($period, $category); } $this->view->stats = $stats; }
/** * Generate a URL for an Mrtg image. * */ function smarty_function_genMrtgP2pImgUrl($params, &$smarty) { $params['p2p'] = true; return IXP_Mrtg::generateZendFrontendUrl($params); }