From 64e720af63e30c9e0bd938a96183b3a118e20552 Mon Sep 17 00:00:00 2001 From: nan0 <49376203+devNan0@users.noreply.github.com> Date: Thu, 20 Feb 2020 15:01:45 +0100 Subject: [PATCH] Add log parser to display logs correctly (#1705) --- net/freeradius/Makefile | 2 +- net/freeradius/pkg-descr | 3 ++ .../systemhealth/logformats/freeradius.py | 49 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 net/freeradius/src/opnsense/scripts/systemhealth/logformats/freeradius.py diff --git a/net/freeradius/Makefile b/net/freeradius/Makefile index fcf7a8a36..2d667aa9e 100644 --- a/net/freeradius/Makefile +++ b/net/freeradius/Makefile @@ -1,5 +1,5 @@ PLUGIN_NAME= freeradius -PLUGIN_VERSION= 1.9.5 +PLUGIN_VERSION= 1.9.6 PLUGIN_COMMENT= RADIUS Authentication, Authorization and Accounting Server PLUGIN_DEPENDS= freeradius3 PLUGIN_MAINTAINER= m.muenz@gmail.com diff --git a/net/freeradius/pkg-descr b/net/freeradius/pkg-descr index 3a02d99bb..4d00cdad0 100644 --- a/net/freeradius/pkg-descr +++ b/net/freeradius/pkg-descr @@ -15,6 +15,9 @@ The server is fast, feature-rich, modular, and scalable. Plugin Changelog ================ +1.9.6 +* Fix log not properly parsed + 1.9.5 * Fix SQLite support diff --git a/net/freeradius/src/opnsense/scripts/systemhealth/logformats/freeradius.py b/net/freeradius/src/opnsense/scripts/systemhealth/logformats/freeradius.py new file mode 100644 index 000000000..23fc0d739 --- /dev/null +++ b/net/freeradius/src/opnsense/scripts/systemhealth/logformats/freeradius.py @@ -0,0 +1,49 @@ +""" + Copyright (c) 2020 Ad Schellevis + Copyright (c) 2020 devNan0 + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +""" +import re +import datetime +from . import BaseLogFormat +freeradius_timeformat = r'^([A-Za-z]{3}\s[A-Za-z]{3}\s\d{1,2}\s\d{2}:\d{2}:\d{2}\s\d{4}\s[:]).*' + + +class FreeRADIUSLogFormat(BaseLogFormat): + def __init__(self, filename): + super(FreeRADIUSLogFormat, self).__init__(filename) + self._priority = 100 + + def match(self, line): + return self._filename.find('radius') > -1 and re.match(freeradius_timeformat, line) is not None + + @staticmethod + def timestamp(line): + tmp = re.match(freeradius_timeformat, line) + grp = tmp.group(1) + return datetime.datetime.strptime(grp, "%a %b %d %H:%M:%S %Y :").isoformat() + + @staticmethod + def line(line): + return line[26:].strip()