Esempio n. 1
0
def configure_environment_standalone_daemons(request):
    """Configure a custom environment for testing with specific Wazuh daemons only. Stopping wazuh-service is needed."""

    def remove_logs():
        """Remove all Wazuh logs"""
        for root, dirs, files in os.walk(WAZUH_LOGS_PATH):
            for file in files:
                os.remove(os.path.join(root, file))

    # Stop wazuh-service and ensure all daemons are stopped
    control_service('stop')
    check_daemon_status(running=False)

    # Remove all remaining Wazuh sockets
    delete_sockets()

    # Start selected daemons in debug mode and ensure they are running
    for daemon in getattr(request.module, 'used_daemons'):
        control_service('start', daemon=daemon, debug_mode=True)
        check_daemon_status(running=True, daemon=daemon)

    # Clear all Wazuh logs
    truncate_file(LOG_FILE_PATH)

    # Call extra functions before yield
    if hasattr(request.module, 'extra_configuration_before_yield'):
        func = getattr(request.module, 'extra_configuration_before_yield')
        func()

    yield

    # Call extra functions after yield
    if hasattr(request.module, 'extra_configuration_after_yield'):
        func = getattr(request.module, 'extra_configuration_after_yield')
        func()

    # Stop selected daemons
    for daemon in getattr(request.module, 'used_daemons'):
        control_service('stop', daemon=daemon)

    # Remove all remaining Wazuh sockets
    delete_sockets()

    # Remove all Wazuh logs
    remove_logs()
        help='Specify how many modified events will be expected. Default 4080.',
        action='store')
    parser.add_argument('-d',
                        '--debug',
                        dest='debug_level',
                        default='ERROR',
                        choices=list_of_choices,
                        help='Specify debug level. Default "ERROR".',
                        action='store')
    return parser.parse_args()


if __name__ == '__main__':
    log_level = {'DEBUG': 10, 'ERROR': 40}

    options = get_script_arguments()
    events = options.n_events
    modified = options.dropped_events
    logger.setLevel(log_level[options.debug_level])

    try:
        mitm = generate_analysisd_yaml(n_events=events, modify_events=modified)
        mitm.shutdown()
    except (TimeoutError, FileNotFoundError):
        logger.error(
            'Could not generate the YAML. Please clean the environment.')
        delete_sockets()
    finally:
        kill_daemons()
        control_service('start')