. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Table; use App\Models\Syslog; use Illuminate\Database\Eloquent\Builder; class SyslogController extends TableController { public function rules() { return [ 'device' => 'nullable|int', 'device_group' => 'nullable|int', 'program' => 'nullable|string', 'priority' => 'nullable|string', 'to' => 'nullable|date', 'from' => 'nullable|date', ]; } public function searchFields($request) { return ['msg']; } public function filterFields($request) { return [ 'device_id' => 'device', 'program' => 'program', 'priority' => 'priority', ]; } /** * Defines the base query for this resource * * @param \Illuminate\Http\Request $request * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder */ public function baseQuery($request) { /** @var Builder $query */ return Syslog::hasAccess($request->user()) ->with('device') ->when($request->device_group, function ($query) use ($request) { $query->inDeviceGroup($request->device_group); }) ->when($request->from, function ($query) use ($request) { $query->where('timestamp', '>=', $request->from); }) ->when($request->to, function ($query) use ($request) { $query->where('timestamp', '<=', $request->to); }); } public function formatItem($syslog) { $device = $syslog->device; return [ 'label' => $this->setLabel($syslog), 'timestamp' => $syslog->timestamp, 'level' => htmlentities($syslog->level), 'device_id' => $device ? \LibreNMS\Util\Url::deviceLink($device, $device->shortDisplayName()) : '', 'program' => htmlentities($syslog->program), 'msg' => htmlentities($syslog->msg), 'priority' => htmlentities($syslog->priority), ]; } private function setLabel($syslog) { $output = ""; $output .= ""; return $output; } /** * @param int $syslog_priority * @return string $syslog_priority_icon */ private function priorityLabel($syslog_priority) { switch ($syslog_priority) { case "debug": return "label-default"; //Debug case "info": return "label-info"; //Informational case "notice": return "label-primary"; //Notice case "warning": return "label-warning"; //Warning case "err": return "label-danger"; //Error case "crit": return "label-danger"; //Critical case "alert": return "label-danger"; //Alert case "emerg": return "label-danger"; //Emergency } } // end syslog_priority }