From 1bb8a37c34aee5848ce371d0e9a4ead3efcfcba6 Mon Sep 17 00:00:00 2001 From: Athanasius Date: Sun, 9 Jan 2022 13:09:04 +0000 Subject: [PATCH] scripts: Add eddn-report-log-errors This looks at gateway.log files for any 'ERROR' lines. The output should be any lines representing an error that hasn't yet been reported to the softwareName's developer. NB: Absolutely relies on the developer changing the softwareVersion after applying a fix. --- eddn-report-log-errors | 191 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100755 eddn-report-log-errors diff --git a/eddn-report-log-errors b/eddn-report-log-errors new file mode 100755 index 0000000..5d2186f --- /dev/null +++ b/eddn-report-log-errors @@ -0,0 +1,191 @@ +#!/usr/bin/env python3 +# vim: wrapmargin=0 textwidth=0 smarttab expandtab tabstop=2 shiftwidth=2 +"""Produce a report on the provided EDDN Gateway log file's ERRORs.""" + +import argparse +import re + + +def parse_cl_args() -> str: + """ + Check command-line arguments for input file name. + + :returns: str - input file name + """ + parser = argparse.ArgumentParser( + prog='eddn-report-log-errors', + description='Process an EDDN Gateway log file and report on any ERROR lines found' + ) + + parser.add_argument( + 'inputfile', + metavar='', + help='Name of an EDDN Gateway log file' + ) + + args = parser.parse_args() + + return args.inputfile + + +def process_file(input_file: str) -> None: + print(f'Input file: {input_file}') + + _RE_ERROR = re.compile( + r'^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}[\.,][0-9]{3} - ERROR - Gateway:[0-9]+:' + r' (?P.+)' + r' \((?P[0-9]+),' + r' "(?P[^"]*)",' + r' "(?P[^"]*)",' + r' "(?P[^"]*)",' + r' "(?P[^"]*)",' + r' "(?P[^"]*)"\)' + r' from (?P.+)$' + ) + # TODO: Make this handle gzipped files + with open(input_file, 'r') as input: + line = input.readline() + while line: + line = line.strip() + matches = _RE_ERROR.search(line) + if matches: + # print(matches.group('err_msg')) + # print(matches.group('request_size')) + # print(matches.group('uploader_id')) + # print(matches.group('software_name')) + # print(matches.group('software_version')) + # print(matches.group('schema_ref')) + # print(matches.group('journal_event')) + # print(matches.group('sender_ip')) + # print('') + + ################################################################### + # Issues we know about and HAVE already alerted their + # developers to. + ################################################################### + if matches.group('software_name') == 'EDDiscovery': + # https://github.com/EDDiscovery/EDDiscovery/releases/latest + if matches.group('software_version') == '12.1.7.0': + if matches.group('schema_ref') in ( + 'https://eddn.edcd.io/schemas/shipyard/2', + 'https://eddn.edcd.io/schemas/outfitting/2', + ): + # Reported via Discord PM to Robby 2022-01-07 + if matches.group('err_msg') != 'Failed Validation "[]"': + print(line) + + else: + print(line) + + elif matches.group('software_name') == 'EDDLite': + # https://github.com/EDDiscovery/EDDLite/releases/tag/latest + if matches.group('software_version') == '2.0.0': + if matches.group('schema_ref') in ( + 'https://eddn.edcd.io/schemas/shipyard/2', + 'https://eddn.edcd.io/schemas/outfitting/2', + ): + # Reported via Discord PM to Robby 2022-01-07 + if matches.group('err_msg') != 'Failed Validation "[]"': + print(line) + + else: + print(line) + + elif matches.group('software_name') == 'EDDI': + # https://github.com/EDCD/EDDI/releases/latest + if matches.group('software_version') == '4.0.1': + print(line) + + elif matches.group('software_name') == 'E:D Market Connector [Windows]': + # https://github.com/EDCD/EDMarketConnector/releases/latest + if matches.group('software_version') == '5.2.4': + if matches.group('schema_ref') == 'https://eddn.edcd.io/schemas/codexentry/1': + # + if matches.group('err_msg') != 'Failed Validation "[]"': + print(matches.group('err_msg')) + print(line) + + else: + print(line) + + elif matches.group('software_name') == 'Elite G19s Companion App': + # + if matches.group('software_version') == '3.7.7888.21039': + if matches.group('schema_ref') == 'https://eddn.edcd.io/schemas/commodity/3': + # Reported via Frontier forums: + if matches.group('err_msg') != 'Failed Validation "[]"': + print(matches.group('err_msg')) + print(line) + + else: + print(line) + + elif matches.group('software_name') == 'EDSM': + # It's in-browser, no public source/releases + if matches.group('software_version') == '1.0.1': + if matches.group('schema_ref') == 'https://eddn.edcd.io/schemas/journal/1': + if matches.group('journal_event') == 'Scan': + # + if not matches.group('err_msg').startswith( + 'Failed Validation "[ + if not matches.group('err_msg').startswith( + 'Failed Validation "[ + if not matches.group('err_msg').startswith( + 'Failed Validation "[