From 868c9531cdc95a0d4ceef1f7f8306df194f03d6f Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Tue, 19 Jul 2022 20:13:00 +0200 Subject: [PATCH] system: remove last bits of clog (circular logging) support, closes https://github.com/opnsense/core/issues/5892 --- src/opnsense/scripts/filter/read_log.py | 8 ++------ src/opnsense/scripts/systemhealth/clearlog | 2 +- src/opnsense/scripts/systemhealth/queryLog.py | 12 ++++-------- src/opnsense/site-python/log_helper.py | 19 +------------------ 4 files changed, 8 insertions(+), 33 deletions(-) diff --git a/src/opnsense/scripts/filter/read_log.py b/src/opnsense/scripts/filter/read_log.py index d2a1f67c7..742e79f70 100755 --- a/src/opnsense/scripts/filter/read_log.py +++ b/src/opnsense/scripts/filter/read_log.py @@ -37,7 +37,7 @@ import argparse import ujson import subprocess sys.path.insert(0, "/usr/local/opnsense/site-python") -from log_helper import reverse_log_reader, fetch_clog +from log_helper import reverse_log_reader from params import update_params @@ -107,12 +107,8 @@ if __name__ == '__main__': if os.path.isfile('/var/log/filter.log'): filter_logs.append('/var/log/filter.log') - for filter_log in filter_logs: + for filename in filter_logs: do_exit = False - try: - filename = fetch_clog(filter_log) - except Exception as e: - filename = filter_log for record in reverse_log_reader(filename): if record['line'].find('filterlog') > -1: rule = dict() diff --git a/src/opnsense/scripts/systemhealth/clearlog b/src/opnsense/scripts/systemhealth/clearlog index 8d18e83ed..7bad0f78c 100755 --- a/src/opnsense/scripts/systemhealth/clearlog +++ b/src/opnsense/scripts/systemhealth/clearlog @@ -57,9 +57,9 @@ if (isset($opts['m']) && isset($opts['f'])) { system_syslog_start(); } + // non syslog files, in case service doesn't use our default syslog naming $filename = "{$basename}.log"; if (is_file($filename)) { - // remove legacy clog file @unlink($filename); system_syslog_start(); // XXX: should probably add some plugin hook for this. diff --git a/src/opnsense/scripts/systemhealth/queryLog.py b/src/opnsense/scripts/systemhealth/queryLog.py index c3712edef..2d8b74f94 100755 --- a/src/opnsense/scripts/systemhealth/queryLog.py +++ b/src/opnsense/scripts/systemhealth/queryLog.py @@ -39,7 +39,7 @@ import datetime import glob from logformats import FormatContainer, BaseLogFormat sys.path.insert(0, "/usr/local/opnsense/site-python") -from log_helper import reverse_log_reader, fetch_clog +from log_helper import reverse_log_reader import argparse if __name__ == '__main__': @@ -85,13 +85,9 @@ if __name__ == '__main__': filter_regexp = re.compile('.*') row_number = 0 - for log_filename in log_filenames: - if os.path.exists(log_filename): - format_container = FormatContainer(log_filename) - try: - filename = fetch_clog(log_filename) - except Exception as e: - filename = log_filename + for filename in log_filenames: + if os.path.exists(filename): + format_container = FormatContainer(filename) for rec in reverse_log_reader(filename): row_number += 1 if rec['line'] != "" and filter_regexp.match(('%s' % rec['line']).lower()): diff --git a/src/opnsense/site-python/log_helper.py b/src/opnsense/site-python/log_helper.py index 644c99c03..884ceadd5 100644 --- a/src/opnsense/site-python/log_helper.py +++ b/src/opnsense/site-python/log_helper.py @@ -1,5 +1,5 @@ """ - Copyright (c) 2015-2019 Ad Schellevis + Copyright (c) 2015-2022 Ad Schellevis All rights reserved. Redistribution and use in source and binary forms, with or without @@ -74,20 +74,3 @@ def reverse_log_reader(filename, block_size=81920, start_pos=None): if file_byte_start == 0 and bol == -1: yield {'line': data.strip().strip('\u0000'), 'pos': len(data)} - -def fetch_clog(input_log): - """ fetch clog file (circular log) - :param input_log: clog input file - :return: stringIO - """ - with open(input_log, 'r+b') as fd: - # clog to memory - mm = mmap.mmap(fd.fileno(), 0) - # unpack clog information struct - clog_footer = struct.unpack('iiii', mm[-16:]) # cf_magic, cf_wrap, cf_next, cf_max, cf_lock - if mm[-20:-16] != b'CLOG': - raise Exception('not a valid clog file') - # concat log file into new output stream, start at current wrap position - output_stream = StringIO(mm[clog_footer[1]:-20].decode() + mm[:clog_footer[1]].decode()) - output_stream.seek(0) - return output_stream