#!/usr/bin/python3

import json, os
from typing import Dict, Any
from pathlib import Path

if __name__ == '__main__':
    events_settings_dir = Path('/usr/share/syslog-ng-mod-astra/event-settings')
    override_config = Path('/etc/astra-syslog.conf')

    if override_config.exists():
        with override_config.open() as file:
            overrided_events: Dict[str, Any] = json.load(file)
        if overrided_events: 
            events = []
            for event_group_dir in events_settings_dir.iterdir():
                if not event_group_dir.is_dir():
                    continue
                for event_settings_file in event_group_dir.iterdir():
                    if not event_settings_file.is_file():
                        continue

                    # Exclude files named the same as the group directory (group settings)
                    if event_settings_file.name == event_group_dir.name:
                        continue
                    events.append(event_settings_file.name)
            deleted_events = [event for event in overrided_events if event not in events]
            if deleted_events:
                for event in deleted_events:
                    overrided_events.pop(event)
                with override_config.open('w') as file:
                    json.dump(overrided_events, file, indent=4)
                    file.write('\n')
                # it may be necessary to update audit rules and events
    # syslog-ng restarting needed in any case of changing events settings directory
    os.system('systemctl restart syslog-ng')