diff options
Diffstat (limited to 'src/openwrt_logger.py')
-rwxr-xr-x | src/openwrt_logger.py | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/src/openwrt_logger.py b/src/openwrt_logger.py deleted file mode 100755 index 82f11ac..0000000 --- a/src/openwrt_logger.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env python3 -import os - -from datetime import datetime -from typing import Tuple, List, Optional -from argparse import ArgumentParser -from home.config import config, AppConfigUnit -from home.database import SimpleState -from home.api import WebApiClient - - -class OpenwrtLoggerConfig(AppConfigUnit): - @classmethod - def schema(cls) -> Optional[dict]: - return dict( - database_name_template=dict(type='string', required=True) - ) - - -def parse_line(line: str) -> Tuple[int, str]: - space_pos = line.index(' ') - - date = line[:space_pos] - rest = line[space_pos+1:] - - return ( - int(datetime.strptime(date, "%Y-%m-%dT%H:%M:%S%z").timestamp()), - rest - ) - - -if __name__ == '__main__': - parser = ArgumentParser() - parser.add_argument('--file', type=str, required=True, - help='openwrt log file') - parser.add_argument('--access-point', type=int, required=True, - help='access point number') - - arg = config.load_app(OpenwrtLoggerConfig, parser=parser) - - state = SimpleState(name=config.app_config['database_name_template'].replace('{ap}', str(arg.access_point)), - default=dict(seek=0, size=0)) - fsize = os.path.getsize(arg.file) - if fsize < state['size']: - state['seek'] = 0 - - with open(arg.file, 'r') as f: - if state['seek']: - # jump to the latest read position - f.seek(state['seek']) - - # read till the end of the file - content = f.read() - - # save new position - state['seek'] = f.tell() - state['size'] = fsize - - lines: List[Tuple[int, str]] = [] - - if content != '': - for line in content.strip().split('\n'): - if not line: - continue - - try: - lines.append(parse_line(line)) - except ValueError: - lines.append((0, line)) - - api = WebApiClient() - api.log_openwrt(lines, arg.access_point) |