howler-api 3.3.0.dev707__tar.gz → 3.3.0.dev710__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.3.0.dev707 → howler_api-3.3.0.dev710}/PKG-INFO +1 -1
- howler_api-3.3.0.dev710/howler/external/README.md +30 -0
- howler_api-3.3.0.dev710/howler/external/reindex_data.py +64 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/pyproject.toml +1 -1
- howler_api-3.3.0.dev707/howler/external/reindex_data.py +0 -66
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/README.md +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/add_label.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/add_to_bundle.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/change_field.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/demote.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/example_plugin.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/prioritization.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/promote.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/remove_from_bundle.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/remove_label.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/actions/transition.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/base.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/socket.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/action.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/analytic.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/auth.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/clue.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/configs.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/dossier.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/help.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/hit.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/notebook.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/overview.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/search.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/template.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/tool.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/user.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/api/v1/view.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/app.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/README.md +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/classification.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/classification.yml +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/exceptions.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/loader.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/logging/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/logging/audit.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/logging/format.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/net.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/net_static.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/random_user.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/common/swagger.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/config.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/cronjobs/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/cronjobs/retention.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/cronjobs/rules.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/cronjobs/view_cleanup.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/README.md +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/bulk.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/collection.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/constants.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/exceptions.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/howler_store.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/operations.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/schemas.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/store.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/support/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/support/build.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/support/schemas.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/datastore/types.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/error.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/external/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/external/generate_mitre.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/external/generate_tlds.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/external/wipe_databases.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/gunicorn_config.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/healthz.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/helper/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/helper/azure.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/helper/discover.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/helper/hit.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/helper/oauth.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/helper/search.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/helper/workflow.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/helper/ws.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/README.md +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/base.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/charter.txt +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/helper.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/howler_enum.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/action.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/analytic.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/aws.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/azure.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/cbs.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/clue.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/config.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/dossier.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/gcp.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/hit.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/howler_data.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/lead.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/localized_label.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/overview.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/pivot.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/template.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/user.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/models/view.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/random_data.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/odm/randomizer.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/patched.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/plugins/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/plugins/config.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/README.md +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/events.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/set.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/security/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/security/socket.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/security/utils.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/action_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/analytic_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/auth_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/config_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/dossier_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/event_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/hit_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/jwt_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/lucene_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/notebook_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/overview_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/template_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/services/user_service.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/__init__.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/annotations.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/chunk.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/dict_utils.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/isotime.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/list_utils.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/lucene.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/path.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/socket_utils.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/str_utils.py +0 -0
- {howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/utils/uid.py +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# External scripts
|
|
2
|
+
|
|
3
|
+
## reindex_data.py
|
|
4
|
+
|
|
5
|
+
Reindex one or more Elasticsearch indexes used by Howler.
|
|
6
|
+
|
|
7
|
+
### Usage
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Reindex specific indexes (confirms each one before proceeding)
|
|
11
|
+
python reindex_data.py hit user
|
|
12
|
+
|
|
13
|
+
# Reindex all indexes
|
|
14
|
+
python reindex_data.py --all
|
|
15
|
+
|
|
16
|
+
# Skip confirmation prompts and countdown
|
|
17
|
+
python reindex_data.py hit --force
|
|
18
|
+
|
|
19
|
+
# Print index schema before reindexing
|
|
20
|
+
python reindex_data.py hit --verbose
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Options
|
|
24
|
+
|
|
25
|
+
| Argument | Description |
|
|
26
|
+
|-------------|----------------------------------------------|
|
|
27
|
+
| `indexes` | One or more index names to reindex. |
|
|
28
|
+
| `--all` | Reindex all indexes. |
|
|
29
|
+
| `--force` | Skip confirmation prompts and countdown. |
|
|
30
|
+
| `--verbose` | Print the index schema before reindexing. |
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import json
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
DELAY = 5
|
|
6
|
+
INDEX_NAMES = ["analytic", "hit", "view", "template", "overview", "action", "user", "dossier"]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
if __name__ == "__main__":
|
|
10
|
+
parser = argparse.ArgumentParser(
|
|
11
|
+
description="Reindex elasticsearch indexes.",
|
|
12
|
+
epilog=f"Valid index names: {', '.join(INDEX_NAMES)}",
|
|
13
|
+
)
|
|
14
|
+
parser.add_argument("indexes", nargs="*", help="Indexes to reindex.")
|
|
15
|
+
parser.add_argument("--all", action="store_true", help="Reindex all indexes.")
|
|
16
|
+
parser.add_argument("--force", action="store_true", help="Skip confirmation prompts and countdown.")
|
|
17
|
+
parser.add_argument("--verbose", action="store_true", help="Print index schema before reindexing.")
|
|
18
|
+
args = parser.parse_args()
|
|
19
|
+
|
|
20
|
+
if args.all and args.indexes:
|
|
21
|
+
parser.error("--all cannot be combined with positional index arguments.")
|
|
22
|
+
|
|
23
|
+
if not args.indexes and not args.all:
|
|
24
|
+
parser.error("Provide index names as arguments, or use --all.")
|
|
25
|
+
|
|
26
|
+
invalid = [name for name in args.indexes if name not in INDEX_NAMES]
|
|
27
|
+
if invalid:
|
|
28
|
+
parser.error(f"Invalid index(es): {', '.join(invalid)}. Valid options: {', '.join(INDEX_NAMES)}")
|
|
29
|
+
|
|
30
|
+
from howler.datastore.collection import ESCollection
|
|
31
|
+
|
|
32
|
+
ESCollection.IGNORE_ENSURE_COLLECTION = True
|
|
33
|
+
|
|
34
|
+
if args.force:
|
|
35
|
+
ESCollection.ENSURE_COLLECTION_WARNED = True
|
|
36
|
+
|
|
37
|
+
from howler.common import loader
|
|
38
|
+
|
|
39
|
+
ds = loader.datastore(archive_access=False)
|
|
40
|
+
|
|
41
|
+
selected = list(dict.fromkeys(INDEX_NAMES if args.all else args.indexes))
|
|
42
|
+
|
|
43
|
+
for index_name in selected:
|
|
44
|
+
collection: ESCollection = getattr(ds, index_name)
|
|
45
|
+
|
|
46
|
+
if args.verbose:
|
|
47
|
+
print(f"Index schema for '{index_name}':")
|
|
48
|
+
print(json.dumps(collection._get_index_mappings(), indent=2))
|
|
49
|
+
|
|
50
|
+
print(f"Reindexing: {', '.join(collection.index_list_full)}")
|
|
51
|
+
|
|
52
|
+
if not args.force:
|
|
53
|
+
answer = input(f"Are you sure you want to reindex '{index_name}'? [yes/NO] ")
|
|
54
|
+
if not answer.startswith("y"):
|
|
55
|
+
print("Confirmation not provided, skipping.")
|
|
56
|
+
continue
|
|
57
|
+
|
|
58
|
+
for i in range(2 * DELAY):
|
|
59
|
+
print(f"Reindexing in {2 * DELAY - i}...", end="\r")
|
|
60
|
+
time.sleep(1)
|
|
61
|
+
print()
|
|
62
|
+
|
|
63
|
+
result = collection.reindex()
|
|
64
|
+
print(f"Reindex of '{index_name}' complete. Success: {result}.")
|
|
@@ -152,7 +152,7 @@ suppress-none-returning = true
|
|
|
152
152
|
[tool.poetry]
|
|
153
153
|
package-mode = true
|
|
154
154
|
name = "howler-api"
|
|
155
|
-
version = "3.3.0.
|
|
155
|
+
version = "3.3.0.dev710"
|
|
156
156
|
description = "Howler - API server"
|
|
157
157
|
authors = [
|
|
158
158
|
"Canadian Centre for Cyber Security <howler@cyber.gc.ca>",
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
import sys
|
|
3
|
-
import time
|
|
4
|
-
from typing import Callable
|
|
5
|
-
|
|
6
|
-
DELAY = 5
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if __name__ == "__main__":
|
|
10
|
-
print("This script will allow you to reindex all indexes in elasticsearch.")
|
|
11
|
-
print("For obvious reasons, be EXTREMELY CAREFUL running this code.")
|
|
12
|
-
print()
|
|
13
|
-
answer = input("Are you sure you want to reindex data for an index in this cluster? [yes/NO]\n")
|
|
14
|
-
|
|
15
|
-
if not answer.startswith("y"):
|
|
16
|
-
print("Confirmation not provided, stopping.")
|
|
17
|
-
sys.exit(1)
|
|
18
|
-
|
|
19
|
-
from howler.datastore.collection import ESCollection
|
|
20
|
-
|
|
21
|
-
ESCollection.IGNORE_ENSURE_COLLECTION = True
|
|
22
|
-
|
|
23
|
-
from howler.common import loader
|
|
24
|
-
|
|
25
|
-
ds = loader.datastore(archive_access=False)
|
|
26
|
-
|
|
27
|
-
indexes: dict[str, tuple[ESCollection, Callable]] = {
|
|
28
|
-
"analytic": (ds.analytic, ds.analytic.reindex),
|
|
29
|
-
"hit": (ds.hit, ds.hit.reindex),
|
|
30
|
-
"view": (ds.view, ds.view.reindex),
|
|
31
|
-
"template": (ds.template, ds.template.reindex),
|
|
32
|
-
"overview": (ds.overview, ds.overview.reindex),
|
|
33
|
-
"action": (ds.action, ds.action.reindex),
|
|
34
|
-
"user": (ds.user, ds.user.reindex),
|
|
35
|
-
"dossier": (ds.dossier, ds.dossier.reindex),
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
print("Which index will you reindex?")
|
|
39
|
-
index_answer = input(", ".join(indexes.keys()) + "\n> ")
|
|
40
|
-
|
|
41
|
-
if index_answer not in indexes:
|
|
42
|
-
print("Invalid index provided, stopping.")
|
|
43
|
-
sys.exit(1)
|
|
44
|
-
|
|
45
|
-
print("Index schema:")
|
|
46
|
-
print(json.dumps(indexes[index_answer][0]._get_index_mappings(), indent=2))
|
|
47
|
-
|
|
48
|
-
print("\nYou will be reindexing the following indexes:")
|
|
49
|
-
print("\n".join(indexes[index_answer][0].index_list_full))
|
|
50
|
-
|
|
51
|
-
answer = input(("\nAre you sure you want to reindex these indexes? [yes/NO]\n"))
|
|
52
|
-
print()
|
|
53
|
-
|
|
54
|
-
if not answer.startswith("y"):
|
|
55
|
-
print("Confirmation not provided, stopping.")
|
|
56
|
-
sys.exit(1)
|
|
57
|
-
|
|
58
|
-
for i in range(2 * DELAY):
|
|
59
|
-
print(f"Reindexing in {2 * DELAY - i}...", end="\r")
|
|
60
|
-
time.sleep(1)
|
|
61
|
-
|
|
62
|
-
print()
|
|
63
|
-
|
|
64
|
-
result = indexes[index_answer][1]()
|
|
65
|
-
|
|
66
|
-
print(f"Reindex complete. Success: {result}.")
|
|
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
|
|
File without changes
|
{howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/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.3.0.dev707 → howler_api-3.3.0.dev710}/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
|
|
File without changes
|
{howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/queues/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/howler/remote/datatypes/queues/priority.py
RENAMED
|
File without changes
|
|
File without changes
|
{howler_api-3.3.0.dev707 → howler_api-3.3.0.dev710}/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
|