Source of file api.dhcpzen.php
Size: 3,980 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.dhcpzen.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 | <?php /** * Just meditative dhcp-log viewer */ class DHCPZen { /** * Contains billing.ini config as key=>value * * @var array */ protected $billCfg = array(); /** * Default datasource file to read * * @var string */ protected $logPath = '/var/log/messages'; /** * Default flow identifier to ignore self requests * * @var string */ protected $flowId = 'dhzjcb'; /** * Count of lines to read from log * * @var int */ protected $linesRead = 200; /** * Count of lines to render in viewport * * @var int */ protected $linesRender = 40; /** * Default container refresh timeout in ms. * * @var int */ protected $timeout = 1000; /** * Contains system grep path * * @var string */ protected $grep = ''; /** * Contains system tail path * * @var string */ protected $tail = ''; /** * Contains sudo command path * * @var string */ protected $sudo = ''; /** * Dynamic view-port default style * * @var string */ protected $renderStyle = 'font-family: monospace;'; /** * owls are not what they seem */ public function __construct() { $this->loadConfigs(); } /** * Predefined routes etc.. */ const URL_ME = '?module=dhcpdzen'; /** * Preloads required configs for further usage * * @global object $ubillingConfig * * @return void */ protected function loadConfigs() { global $ubillingConfig; $this->billCfg = $ubillingConfig->getBilling(); $this->sudo = $this->billCfg['SUDO']; $this->grep = $this->billCfg['GREP']; $this->tail = $this->billCfg['TAIL']; $this->logPath = $ubillingConfig->getAlterParam('NMLEASES'); } /** * Checks is datasource file exists * * @return bool */ protected function dataSourceExists() { $result = false; if (file_exists($this->logPath)) { $result = true; } return($result); } /** * Renders the few last lines from data source. * * @return string */ public function render() { $result = ''; if ($this->dataSourceExists()) { $command = $this->sudo . ' ' . $this->tail . ' -n ' . $this->linesRead . ' ' . $this->logPath . ' | ' . $this->tail . ' -n ' . $this->linesRender; $resultRaw = shell_exec($command); if (!empty($resultRaw)) { $rows = ''; $resultRaw = explodeRows($resultRaw); $resultRaw = array_reverse($resultRaw); if (!empty($resultRaw)) { foreach ($resultRaw as $io => $eachLine) { if (!empty($eachLine)) { $cells = wf_TableCell(htmlentities(strip_tags($eachLine))); $rows .= wf_TableRow($cells, 'row5'); } } } $result .= wf_TableBody($rows, '100%', 0, '', 'style="' . $this->renderStyle . '"'); } else { $messages = new UbillingMessageHelper(); $result .= $messages->getStyledMessage(__('Nothing to show'), 'warning'); } } else { $messages = new UbillingMessageHelper(); $result .= $messages->getStyledMessage(__('File not exist') . ': ' . $this->logPath, 'error'); } return($result); } /** * Returns current container flowID * * @return string */ public function getFlowId() { return($this->flowId); } /** * Returns current instance refresh timeout * * @return int */ public function getTimeout() { return($this->timeout); } } |