. * * @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 searchFields($request) { return ['msg']; } public function rules() { return [ 'device' => 'nullable|int', 'program' => 'nullable|string', 'priority' => 'nullable|string', 'to' => 'nullable|date', 'from' => 'nullable|date', ]; } /** * 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 */ $query = Syslog::hasAccess($request->user())->with('device'); if ($device_id = $request->get('device')) { $query->where('device_id', $device_id); } if ($program = $request->get('program')) { $query->where('program', $program); } if ($priority = $request->get('priority')) { $query->where('priority', $priority); } if ($from = $request->get('from')) { $query->where('timestamp', '>=', $from); } if ($to = $request->get('to')) { $query->where('timestamp', '<=', $to); } return $query; } public function formatItem($syslog) { $device = $syslog->device; return [ '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), ]; } }