summaryrefslogtreecommitdiff
path: root/src/openwrt_logger.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/openwrt_logger.py')
-rwxr-xr-xsrc/openwrt_logger.py37
1 files changed, 13 insertions, 24 deletions
diff --git a/src/openwrt_logger.py b/src/openwrt_logger.py
index 97fe7a9..82f11ac 100755
--- a/src/openwrt_logger.py
+++ b/src/openwrt_logger.py
@@ -2,29 +2,19 @@
import os
from datetime import datetime
-from typing import Tuple, List
+from typing import Tuple, List, Optional
from argparse import ArgumentParser
-from home.config import config
+from home.config import config, AppConfigUnit
from home.database import SimpleState
-from home.api import WebAPIClient
+from home.api import WebApiClient
-f"""
-This script is supposed to be run by cron every 5 minutes or so.
-It looks for new lines in log file and sends them to remote server.
-OpenWRT must have remote logging enabled (UDP; IP of host this script is launched on; port 514)
-
-/etc/rsyslog.conf contains following (assuming 192.168.1.1 is the router IP):
-
-$ModLoad imudp
-$UDPServerRun 514
-:fromhost-ip, isequal, "192.168.1.1" /var/log/openwrt.log
-& ~
-
-Also comment out the following line:
-$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
-
-"""
+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]:
@@ -46,11 +36,10 @@ if __name__ == '__main__':
parser.add_argument('--access-point', type=int, required=True,
help='access point number')
- arg = config.load_app('openwrt_logger', parser=parser)
-
- state = SimpleState(file=config['simple_state']['file'].replace('{ap}', str(arg.access_point)),
- default={'seek': 0, 'size': 0})
+ 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
@@ -79,5 +68,5 @@ if __name__ == '__main__':
except ValueError:
lines.append((0, line))
- api = WebAPIClient()
+ api = WebApiClient()
api.log_openwrt(lines, arg.access_point)