howler-api 3.2.0.dev430__tar.gz → 3.2.0.dev437__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/PKG-INFO +1 -1
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/howler_store.py +9 -0
- howler_api-3.2.0.dev437/howler/odm/models/clue.py +16 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/random_data.py +13 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/pyproject.toml +1 -1
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/README.md +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/add_label.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/add_to_bundle.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/change_field.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/demote.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/example_plugin.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/prioritization.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/promote.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/remove_from_bundle.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/remove_label.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/actions/transition.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/base.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/socket.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/action.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/analytic.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/auth.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/clue.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/configs.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/dossier.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/help.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/hit.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/notebook.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/overview.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/search.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/template.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/tool.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/user.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/api/v1/view.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/app.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/README.md +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/classification.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/classification.yml +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/exceptions.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/loader.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/logging/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/logging/audit.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/logging/format.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/net.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/net_static.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/random_user.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/common/swagger.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/config.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/cronjobs/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/cronjobs/retention.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/cronjobs/rules.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/cronjobs/view_cleanup.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/README.md +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/bulk.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/collection.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/constants.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/exceptions.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/operations.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/schemas.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/store.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/support/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/support/build.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/support/schemas.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/types.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/error.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/external/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/external/generate_mitre.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/external/generate_tlds.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/external/reindex_data.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/external/wipe_databases.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/gunicorn_config.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/healthz.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/helper/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/helper/azure.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/helper/discover.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/helper/hit.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/helper/oauth.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/helper/search.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/helper/workflow.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/helper/ws.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/README.md +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/base.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/charter.txt +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/helper.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/howler_enum.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/action.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/analytic.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/aws.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/azure.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/cbs.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/config.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/dossier.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/gcp.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/hit.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/howler_data.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/lead.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/localized_label.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/overview.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/pivot.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/template.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/user.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/view.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/randomizer.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/patched.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/plugins/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/plugins/config.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/README.md +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/events.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/set.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/security/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/security/socket.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/security/utils.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/action_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/analytic_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/auth_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/config_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/dossier_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/event_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/hit_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/jwt_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/lucene_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/notebook_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/overview_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/template_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/services/user_service.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/__init__.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/annotations.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/chunk.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/dict_utils.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/isotime.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/list_utils.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/lucene.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/path.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/socket_utils.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/str_utils.py +0 -0
- {howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/utils/uid.py +0 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
from typing import TYPE_CHECKING
|
|
2
2
|
|
|
3
3
|
from howler.common.exceptions import HowlerAttributeError
|
|
4
|
+
from howler.config import config
|
|
4
5
|
from howler.datastore.collection import ESCollection, logger
|
|
6
|
+
from howler.odm.base import Compound
|
|
5
7
|
from howler.odm.models.action import Action
|
|
6
8
|
from howler.odm.models.analytic import Analytic
|
|
9
|
+
from howler.odm.models.clue import Clue
|
|
7
10
|
from howler.odm.models.dossier import Dossier
|
|
8
11
|
from howler.odm.models.hit import Hit
|
|
9
12
|
from howler.odm.models.overview import Overview
|
|
@@ -41,6 +44,12 @@ class HowlerDatastore(object):
|
|
|
41
44
|
logger.info("Modifying %s odm with function from plugin %s", _index, plugin.name)
|
|
42
45
|
modify_odm(_odm)
|
|
43
46
|
|
|
47
|
+
if config.core.clue.enabled:
|
|
48
|
+
Hit.add_namespace(
|
|
49
|
+
"clue",
|
|
50
|
+
Compound(Clue, description="Clue-specific overrides for this alert", default=None, optional=True),
|
|
51
|
+
)
|
|
52
|
+
|
|
44
53
|
for _index, _odm in INDEXES:
|
|
45
54
|
self.ds.register(_index, _odm)
|
|
46
55
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from howler import odm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@odm.model(index=True, store=True, description="A mapping from a specific field in Howler to a clue type")
|
|
5
|
+
class TypeMap(odm.Model):
|
|
6
|
+
field: str = odm.Keyword(description="The field whose clue type to override")
|
|
7
|
+
type: str = odm.Keyword(description="The clue type to override the field as")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@odm.model(index=True, store=True, description="Clue-specific overrides for this alert")
|
|
11
|
+
class Clue(odm.Model):
|
|
12
|
+
types: list[TypeMap] = odm.List(
|
|
13
|
+
odm.Compound(TypeMap),
|
|
14
|
+
default=[],
|
|
15
|
+
description="A mapping of howler fields to clue types to augment/override system configuration.",
|
|
16
|
+
)
|
|
@@ -4,6 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
|
|
5
5
|
from dotenv import load_dotenv
|
|
6
6
|
|
|
7
|
+
from howler.odm.models.clue import Clue
|
|
7
8
|
from howler.plugins import get_plugins
|
|
8
9
|
|
|
9
10
|
load_dotenv()
|
|
@@ -529,6 +530,18 @@ def create_hits(ds: HowlerDatastore, hit_count: int = 200):
|
|
|
529
530
|
hit.howler.analytic = "SecretAnalytic"
|
|
530
531
|
hit.howler.detection = None
|
|
531
532
|
|
|
533
|
+
if config.core.clue.enabled:
|
|
534
|
+
hit.clue = Clue(
|
|
535
|
+
{
|
|
536
|
+
"types": [
|
|
537
|
+
{"field": "destination.user.group.id", "type": "domain"},
|
|
538
|
+
{"field": "dns.response_code", "type": "url"},
|
|
539
|
+
{"field": "file.name", "type": "url"},
|
|
540
|
+
{"field": "faas.name", "type": "domain"},
|
|
541
|
+
]
|
|
542
|
+
}
|
|
543
|
+
)
|
|
544
|
+
|
|
532
545
|
ds.hit.save(hit.howler.id, hit)
|
|
533
546
|
analytic_service.save_from_hit(hit, random.choice(users))
|
|
534
547
|
ds.analytic.commit()
|
|
@@ -148,7 +148,7 @@ suppress-none-returning = true
|
|
|
148
148
|
[tool.poetry]
|
|
149
149
|
package-mode = true
|
|
150
150
|
name = "howler-api"
|
|
151
|
-
version = "3.2.0.
|
|
151
|
+
version = "3.2.0.dev437"
|
|
152
152
|
description = "Howler - API server"
|
|
153
153
|
authors = [
|
|
154
154
|
"Canadian Centre for Cyber Security <howler@cyber.gc.ca>",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/datastore/migrations/fix_process.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/odm/models/ecs/autonomous_system.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/queues/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/queues/priority.py
RENAMED
|
File without changes
|
|
File without changes
|
{howler_api-3.2.0.dev430 → howler_api-3.2.0.dev437}/howler/remote/datatypes/user_quota_tracker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|