assemblyline 4.7.5.dev13__tar.gz → 4.7.5.dev15__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.
- {assemblyline-4.7.5.dev13/assemblyline.egg-info → assemblyline-4.7.5.dev15}/PKG-INFO +1 -1
- assemblyline-4.7.5.dev15/assemblyline/VERSION +1 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/collection.py +17 -2
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/__init__.py +19 -1
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/azure.py +13 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/base.py +7 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/s3.py +23 -1
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15/assemblyline.egg-info}/PKG-INFO +1 -1
- assemblyline-4.7.5.dev13/assemblyline/VERSION +0 -1
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/LICENCE.md +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/MANIFEST.in +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/README.md +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/cachestore/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/archiving.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/attack_map.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/backupmanager.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/banner.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/bundling.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/caching.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/chunk.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/classification.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/classification.yml +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/cleanup_filestore.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/codec.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/comms.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/constants.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/custom.magic +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/custom.yara +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/dict_utils.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/digests.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/dispatcher.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/entropy.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/exceptions.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/file.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/forge.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/heuristics.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/hexdump.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/identify.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/identify_defaults.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/importing.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/iprange.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/isotime.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/log.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/logformat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/lucene.lark +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/memory_zip.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/metrics.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/net.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/net_static.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/null.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/path.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/postprocess.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/random_user.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/safe_archive.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/security.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/signaturing.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/str_utils.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/tag_safelist.yml +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/tagging.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/threading.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/uid.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/version.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datasource/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datasource/al.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datasource/alert.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datasource/common.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/bulk.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/exceptions.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/helper.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/store.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/support/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/support/build.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/support/schemas.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/ftp.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/http.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/local.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/sftp.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/base.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/common.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/alert.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/alerter_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/archive_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/changes.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/dispatcher_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/dispatching.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/elastic_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/expiry_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/ingest_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/metrics.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/retrohunt_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/scaler_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/scaler_status_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/service_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/service_timing_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/submission.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/task.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/vacuum_heartbeat.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/actions.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/alert.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/apikey.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/badlist.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/cached_file.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/config.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/emptyresult.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/error.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/file.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/filescore.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/heuristic.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/file.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/filetypes/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/filetypes/pe.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/ontology.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/results/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/results/antivirus.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/results/http.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/results/malware_config.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/results/network.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/results/process.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/results/sandbox.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/results/signature.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/replay.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/result.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/retrohunt.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/safelist.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/service.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/service_delta.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/signature.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/statistics.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/submission.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/submission_summary.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/submission_tree.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/tagging.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/user.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/user_favorites.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/user_settings.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/workflow.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/random_data/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/random_data/create_test_data.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/random_data/sample_rules.yar +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/random_data/sample_suricata.rules +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/randomizer.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/py.typed +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/cache.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/counters.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/daily_quota_tracker.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/events.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/exporting_counter.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/hash.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/lock.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/queues/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/queues/comms.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/queues/multi.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/queues/named.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/queues/priority.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/set.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/user_quota_tracker.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/run/__init__.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/run/cli.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/run/pubsub_reader.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/run/suricata_importer.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/run/yara_importer.py +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline.egg-info/SOURCES.txt +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline.egg-info/dependency_links.txt +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline.egg-info/entry_points.txt +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline.egg-info/requires.txt +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline.egg-info/top_level.txt +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/pyproject.toml +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/setup.cfg +0 -0
- {assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/setup.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.7.5.dev15
|
|
@@ -962,6 +962,8 @@ class ESCollection(Generic[ModelType]):
|
|
|
962
962
|
# If this index has an archive, check is the document was found in it.
|
|
963
963
|
if self.archive_name:
|
|
964
964
|
doc['_source']['from_archive'] = self.is_archive_index(index)
|
|
965
|
+
elif 'from_archive' in doc['_source']:
|
|
966
|
+
doc['_source']['from_archive'] = False
|
|
965
967
|
|
|
966
968
|
if version:
|
|
967
969
|
return self._normalize_output(doc['_source']), f"{doc['_seq_no']}---{doc['_primary_term']}"
|
|
@@ -1012,14 +1014,25 @@ class ESCollection(Generic[ModelType]):
|
|
|
1012
1014
|
|
|
1013
1015
|
@typing.overload
|
|
1014
1016
|
def get_if_exists(self, key: str, as_obj: typing.Literal[True] = True, index_type: typing.Optional[Index] = None,
|
|
1015
|
-
version=False) -> typing.Optional[ModelType]:
|
|
1017
|
+
version: typing.Literal[False] = False) -> typing.Optional[ModelType]:
|
|
1016
1018
|
...
|
|
1017
1019
|
|
|
1018
1020
|
@typing.overload
|
|
1019
1021
|
def get_if_exists(self, key: str, as_obj: typing.Literal[False], index_type: typing.Optional[Index] = None,
|
|
1020
|
-
version=False) -> typing.Optional[dict]:
|
|
1022
|
+
version: typing.Literal[False] = False) -> typing.Optional[dict]:
|
|
1021
1023
|
...
|
|
1022
1024
|
|
|
1025
|
+
@typing.overload
|
|
1026
|
+
def get_if_exists(self, key: str, as_obj: typing.Literal[True] = True, index_type: typing.Optional[Index] = None,
|
|
1027
|
+
version=True) -> tuple[typing.Optional[ModelType], str]:
|
|
1028
|
+
...
|
|
1029
|
+
|
|
1030
|
+
@typing.overload
|
|
1031
|
+
def get_if_exists(self, key: str, as_obj: typing.Literal[False], index_type: typing.Optional[Index] = None,
|
|
1032
|
+
version=True) -> tuple[typing.Optional[dict], str]:
|
|
1033
|
+
...
|
|
1034
|
+
|
|
1035
|
+
|
|
1023
1036
|
def get_if_exists(self, key, as_obj=True, index_type=None, version=False):
|
|
1024
1037
|
"""
|
|
1025
1038
|
Get a document from the datastore but do not retry if not found.
|
|
@@ -1378,6 +1391,8 @@ class ESCollection(Generic[ModelType]):
|
|
|
1378
1391
|
# If this index has an archive, check is the document was found in it.
|
|
1379
1392
|
if self.archive_name:
|
|
1380
1393
|
source_data['from_archive'] = self.is_archive_index(result['_index'])
|
|
1394
|
+
elif 'from_archive' in source_data:
|
|
1395
|
+
source_data['from_archive'] = False
|
|
1381
1396
|
|
|
1382
1397
|
if self.model_class:
|
|
1383
1398
|
if not fields:
|
|
@@ -128,7 +128,7 @@ def create_transport(url, connection_attempts=None):
|
|
|
128
128
|
|
|
129
129
|
elif scheme == 's3':
|
|
130
130
|
valid_str_keys = ['aws_region', 's3_bucket']
|
|
131
|
-
valid_bool_keys = ['use_ssl', 'verify', 'boto_defaults', 'read_only']
|
|
131
|
+
valid_bool_keys = ['use_ssl', 'verify', 'boto_defaults', 'read_only', 'use_batch_delete']
|
|
132
132
|
extras = _get_extras(parse_qs(parsed.query), valid_str_keys=valid_str_keys, valid_bool_keys=valid_bool_keys)
|
|
133
133
|
|
|
134
134
|
# If user/password not specified, access might be dictated by IAM roles
|
|
@@ -200,6 +200,24 @@ class FileStore(object):
|
|
|
200
200
|
trace = get_stacktrace_info(ex)
|
|
201
201
|
self.log.info('Transport problem: %s', trace)
|
|
202
202
|
|
|
203
|
+
@elasticapm.capture_span(span_type='filestore')
|
|
204
|
+
def delete_batch(self, file_list: list[str], location='all'):
|
|
205
|
+
# Don't even call into the transports if there are no files given
|
|
206
|
+
if not file_list:
|
|
207
|
+
return
|
|
208
|
+
|
|
209
|
+
with elasticapm.capture_span(name='delete_batch', span_type='filestore', labels={'batch_size': len(file_list)}):
|
|
210
|
+
for t in self.slice(location):
|
|
211
|
+
if t.read_only:
|
|
212
|
+
# Don't attempt to delete from read only transports
|
|
213
|
+
continue
|
|
214
|
+
|
|
215
|
+
try:
|
|
216
|
+
t.delete_batch(file_list)
|
|
217
|
+
except Exception as ex:
|
|
218
|
+
trace = get_stacktrace_info(ex)
|
|
219
|
+
self.log.info('Transport problem: %s', trace)
|
|
220
|
+
|
|
203
221
|
@elasticapm.capture_span(span_type='filestore')
|
|
204
222
|
def download(self, src_path: str, dest_path: str, location='any'):
|
|
205
223
|
successful = False
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/azure.py
RENAMED
|
@@ -15,6 +15,7 @@ from azure.core.exceptions import (
|
|
|
15
15
|
ServiceRequestError,
|
|
16
16
|
TooManyRedirectsError,
|
|
17
17
|
)
|
|
18
|
+
from azure.core.pipeline.transport import HttpResponse
|
|
18
19
|
from azure.identity import (
|
|
19
20
|
ClientSecretCredential,
|
|
20
21
|
DefaultAzureCredential,
|
|
@@ -22,6 +23,7 @@ from azure.identity import (
|
|
|
22
23
|
)
|
|
23
24
|
from azure.storage.blob import BlobServiceClient
|
|
24
25
|
|
|
26
|
+
from assemblyline.common import chunk
|
|
25
27
|
from assemblyline.common.exceptions import ChainAll
|
|
26
28
|
from assemblyline.filestore.transport.base import Transport, TransportException
|
|
27
29
|
|
|
@@ -144,6 +146,17 @@ class TransportAzure(Transport):
|
|
|
144
146
|
if not isinstance(error.cause, ResourceNotFoundError):
|
|
145
147
|
raise
|
|
146
148
|
|
|
149
|
+
def delete_batch(self, file_list: Iterable[str]):
|
|
150
|
+
"""Deletes a batch of files."""
|
|
151
|
+
container_client = self.service_client.get_container_client(self.blob_container)
|
|
152
|
+
keys = [self.normalize(path) for path in file_list]
|
|
153
|
+
for key_chunk in chunk.chunk(keys, 256):
|
|
154
|
+
responses: Iterable[HttpResponse] = self.with_retries(container_client.delete_blobs(*key_chunk))
|
|
155
|
+
for response in responses:
|
|
156
|
+
if response.status_code == 404:
|
|
157
|
+
continue
|
|
158
|
+
response.raise_for_status()
|
|
159
|
+
|
|
147
160
|
def exists(self, path):
|
|
148
161
|
key = self.normalize(path)
|
|
149
162
|
blob_client = self.service_client.get_blob_client(self.blob_container, key)
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/base.py
RENAMED
|
@@ -46,6 +46,13 @@ class Transport(object):
|
|
|
46
46
|
"""
|
|
47
47
|
raise TransportException("Not Implemented")
|
|
48
48
|
|
|
49
|
+
def delete_batch(self, file_list: Iterable[str]):
|
|
50
|
+
"""
|
|
51
|
+
Deletes a batch of files
|
|
52
|
+
"""
|
|
53
|
+
for path in file_list:
|
|
54
|
+
self.delete(path)
|
|
55
|
+
|
|
49
56
|
def exists(self, path: str) -> bool:
|
|
50
57
|
"""
|
|
51
58
|
Returns True if the path exists, False otherwise.
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/s3.py
RENAMED
|
@@ -12,6 +12,7 @@ from botocore.exceptions import (
|
|
|
12
12
|
EndpointConnectionError,
|
|
13
13
|
)
|
|
14
14
|
|
|
15
|
+
from assemblyline.common import chunk
|
|
15
16
|
from assemblyline.common.exceptions import ChainAll
|
|
16
17
|
from assemblyline.filestore.transport.base import Transport, TransportException
|
|
17
18
|
|
|
@@ -35,12 +36,14 @@ class TransportS3(Transport):
|
|
|
35
36
|
DEFAULT_HOST = "s3.amazonaws.com"
|
|
36
37
|
|
|
37
38
|
def __init__(self, base=None, accesskey=None, secretkey=None, aws_region=None, s3_bucket="al-storage",
|
|
38
|
-
host=None, port=None, use_ssl=None, verify=True, connection_attempts=None,
|
|
39
|
+
host=None, port=None, use_ssl=None, verify=True, connection_attempts=None,
|
|
40
|
+
boto_defaults=False, read_only=False, use_batch_delete: bool = False):
|
|
39
41
|
self.log = logging.getLogger('assemblyline.transport.s3')
|
|
40
42
|
self.base = base
|
|
41
43
|
self.bucket = s3_bucket
|
|
42
44
|
self.accesskey = accesskey
|
|
43
45
|
self.retry_limit: int = connection_attempts
|
|
46
|
+
self.use_batch_delete: bool = use_batch_delete
|
|
44
47
|
|
|
45
48
|
if use_ssl is None:
|
|
46
49
|
self.use_ssl = True
|
|
@@ -139,6 +142,25 @@ class TransportS3(Transport):
|
|
|
139
142
|
key = self.normalize(path)
|
|
140
143
|
self.with_retries(self.client.delete_object, Bucket=self.bucket, Key=key)
|
|
141
144
|
|
|
145
|
+
def delete_batch(self, file_list: Iterable[str]):
|
|
146
|
+
"""Deletes a batch of files."""
|
|
147
|
+
if not self.use_batch_delete:
|
|
148
|
+
return super().delete_batch(file_list)
|
|
149
|
+
|
|
150
|
+
keys = [self.normalize(path) for path in file_list]
|
|
151
|
+
for key_chunk in chunk.chunk(keys, 1000):
|
|
152
|
+
response = self.with_retries(
|
|
153
|
+
self.client.delete_objects,
|
|
154
|
+
Bucket=self.bucket,
|
|
155
|
+
Delete={
|
|
156
|
+
'Objects': [{'Key': key} for key in key_chunk],
|
|
157
|
+
'Quiet': True,
|
|
158
|
+
},
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
if response['Errors']:
|
|
162
|
+
raise TransportException('Could not delete some member of batch', response['Errors'][0]['Message'])
|
|
163
|
+
|
|
142
164
|
def exists(self, path):
|
|
143
165
|
# checks to see if KEY exists
|
|
144
166
|
key = self.normalize(path)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.7.5.dev13
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/classification.yml
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/cleanup_filestore.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
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/common/identify_defaults.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
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/support/__init__.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/support/build.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/datastore/support/schemas.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/__init__.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/ftp.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/http.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/local.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/filestore/transport/sftp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/alerter_heartbeat.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/archive_heartbeat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/dispatching.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/elastic_heartbeat.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/expiry_heartbeat.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/ingest_heartbeat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/scaler_heartbeat.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/service_heartbeat.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/submission.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/messages/vacuum_heartbeat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/cached_file.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/emptyresult.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/__init__.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/file.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/ontology/ontology.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
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/service_delta.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/submission_summary.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/submission_tree.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/user_favorites.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/models/user_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/random_data/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/odm/random_data/sample_rules.yar
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/__init__.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/cache.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/counters.py
RENAMED
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/events.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/queues/comms.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/queues/multi.py
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline/remote/datatypes/queues/named.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
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{assemblyline-4.7.5.dev13 → assemblyline-4.7.5.dev15}/assemblyline.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|