summaryrefslogtreecommitdiff
path: root/src/openwrt_log_analyzer.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/openwrt_log_analyzer.py')
-rwxr-xr-xsrc/openwrt_log_analyzer.py78
1 files changed, 0 insertions, 78 deletions
diff --git a/src/openwrt_log_analyzer.py b/src/openwrt_log_analyzer.py
deleted file mode 100755
index 96023cd..0000000
--- a/src/openwrt_log_analyzer.py
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/env python3
-import home.telegram as telegram
-
-from home.telegram.config import TelegramChatsConfig
-from home.util import validate_mac_address
-from typing import Optional
-from home.config import config, AppConfigUnit
-from home.database import BotsDatabase, SimpleState
-
-
-class OpenwrtLogAnalyzerConfig(AppConfigUnit):
- @classmethod
- def schema(cls) -> Optional[dict]:
- return {
- 'database_name': {'type': 'string', 'required': True},
- 'devices': {
- 'type': 'dict',
- 'keysrules': {'type': 'string'},
- 'valuesrules': {
- 'type': 'string',
- 'check_with': validate_mac_address
- }
- },
- 'limit': {'type': 'integer'},
- 'telegram_chat': {'type': 'string'},
- 'aps': {
- 'type': 'list',
- 'schema': {'type': 'integer'}
- }
- }
-
- @staticmethod
- def custom_validator(data):
- chats = TelegramChatsConfig()
- if data['telegram_chat'] not in chats:
- return ValueError(f'unknown telegram chat {data["telegram_chat"]}')
-
-
-def main(mac: str,
- title: str,
- ap: int) -> int:
- db = BotsDatabase()
-
- data = db.get_openwrt_logs(filter_text=mac,
- min_id=state['last_id'],
- access_point=ap,
- limit=config['openwrt_log_analyzer']['limit'])
- if not data:
- return 0
-
- max_id = 0
- for log in data:
- if log.id > max_id:
- max_id = log.id
-
- text = '\n'.join(map(lambda s: str(s), data))
- telegram.send_message(f'<b>{title} (AP #{ap})</b>\n\n' + text, config.app_config['telegram_chat'])
-
- return max_id
-
-
-if __name__ == '__main__':
- config.load_app(OpenwrtLogAnalyzerConfig)
- for ap in config.app_config['aps']:
- dbname = config.app_config['database_name']
- dbname = dbname.replace('.txt', f'-{ap}.txt')
-
- state = SimpleState(name=dbname,
- default={'last_id': 0})
-
- max_last_id = 0
- for name, mac in config['devices'].items():
- last_id = main(mac, title=name, ap=ap)
- if last_id > max_last_id:
- max_last_id = last_id
-
- if max_last_id:
- state['last_id'] = max_last_id