diff --git a/html/js/version.js b/html/js/version.js index 983330a..4adbbe9 100644 --- a/html/js/version.js +++ b/html/js/version.js @@ -1 +1 @@ -var dashboard_version = "2021-02-14 17:19:22"; +var dashboard_version = "2021-02-16 20:36:01"; diff --git a/logtailer.ini b/logtailer.ini index a1c3dad..c5702b4 100644 --- a/logtailer.ini +++ b/logtailer.ini @@ -8,7 +8,7 @@ Host=0.0.0.0 Port=5678 # This defines the maximum amount of loglines to be sent on initial opening of the dashboard -MaxLines=2500 +MaxLines=500 # Keep this parameter synchrone to Filerotate in MMDVM.ini/DMRHost.ini - if 0 then False, if 1 then True Filerotate=True diff --git a/logtailer.py b/logtailer.py index 51c995a..7afd7b7 100644 --- a/logtailer.py +++ b/logtailer.py @@ -40,33 +40,84 @@ callsigns = {} logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO) conv = Ansi2HTMLConverter(inline=True) -def getMMDVMVersion(port): +def getMMDVMVersion(): + mmdvm_version = "Actually not available" + mmdvm_version = getMMDVMVersionFromLogfile() + if mmdvm_version == "Actually not available": + mmdvm_version = getMMDVMVersionFromModem() + if mmdvm_version == "Actually not available": + mmdvm_version = getMMDVMVersionFromCacheFile() + logging.info('Detected Modem-Version={}'.format(mmdvm_version)) + return mmdvm_version + + +def getMMDVMVersionFromLogfile(): + global config + now = datetime.datetime.now(datetime.timezone.utc) + year = str(now.year) + month = str(now.month) + if len(month) == 1: + month = "0" + month + day = str(now.day) + if len(day) == 1: + day = "0" + day + + file_path = "" + if config['DEFAULT']['Filerotate'] == "True": + file_path = config['MMDVMHost']['Logdir']+config['MMDVMHost']['Prefix']+"-"+year+"-"+month+"-"+day+".log" + else: + file_path = config['MMDVMHost']['Logdir']+config['MMDVMHost']['Prefix']+".log" + logging.info('Search version in log') + mmdvm_version = str(subprocess.Popen("grep -m 1 description " + file_path, shell=True, stdout=subprocess.PIPE).stdout.read().decode("utf-8")) + logging.info('Version from log: ' + mmdvm_version) + if len(mmdvm_version) > 0: + if mmdvm_version.index("description") > 0: + mmdvm_version = mmdvm_version[mmdvm_version.index("description") + 13:] + with open("/tmp/mmdvm-version", 'w') as out: + out.write(mmdvm_version + '\n') + return mmdvm_version + else: + return "Actually not available" + + +def getMMDVMVersionFromModem(): + global mmdvmhost_config try: - logging.info('Modem-Port={}'.format(port)) + port = mmdvmhost_config['Modem']['Port'] ser = serial.Serial(port, baudrate = 115200) logging.info('Connected!'); time.sleep(1) - logging.info('Querying version from modem'); + logging.info('Querying version from modem') ser.write(bytearray.fromhex("E0 03 00")) ch = "" while ch != bytearray.fromhex("01"): ch = ser.read() - version = "" + mmdvm_version = "" ch = "" while ch != bytearray.fromhex("00"): ch = ser.read() - version += ch.decode() + mmdvm_version += ch.decode() ser.close() - logging.info('Modem-Version={}'.format(version)) - - return version + logging.info('Modem-Version={}'.format(mmdvm_version)) + with open("/tmp/mmdvm-version", 'w') as out: + out.write(mmdvm_version + '\n') + return mmdvm_version except Exception as e: logging.info('Modem-Exception={}'.format(e)) return "Actually not available" pass +def getMMDVMVersionFromCacheFile(): + mmdvm_version = "Actually not available" + if os.path.isfile("/tmp/mmdvm-version"): + with open("/tmp/mmdvm-version") as fp: + mmdvm_version = fp.readline() + logging.info('Version from cache-file: ' + mmdvm_version) + return mmdvm_version + + async def process_request(sever_root, path, request_headers): """Serves a file when doing a GET request with a valid path.""" logging.info(request_headers) @@ -210,7 +261,7 @@ async def view_log(websocket, path): mmdvmhost_version = str(subprocess.Popen(config['MMDVMHost']['MMDVM_bin'] + " -v", shell=True, stdout=subprocess.PIPE).stdout.read().decode("utf-8")) mmdvmhost_ctime = time.ctime(os.path.getmtime(config['MMDVMHost']['MMDVM_bin'])) mmdvmhost_buildtime = datetime.datetime.strptime(mmdvmhost_ctime, "%a %b %d %H:%M:%S %Y") - mmdvm_version = getMMDVMVersion(mmdvmhost_config['Modem']['Port']) + mmdvm_version = getMMDVMVersion() callsign = mmdvmhost_config['General']['Callsign'] dmrid = mmdvmhost_config['General']['Id'] txqrg = mmdvmhost_config['Info']['TXFrequency']