assemblyline-core 4.5.1.dev157__tar.gz → 4.5.1.dev159__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.
Potentially problematic release.
This version of assemblyline-core might be problematic. Click here for more details.
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/PKG-INFO +1 -1
- assemblyline-core-4.5.1.dev159/assemblyline_core/VERSION +1 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/dispatching/client.py +11 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core.egg-info/PKG-INFO +1 -1
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_dispatcher.py +39 -5
- assemblyline-core-4.5.1.dev157/assemblyline_core/VERSION +0 -1
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/LICENCE.md +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/README.md +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/dispatching/__main__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/dispatching/timeout.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/expiry/run_expiry.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/ingester/__main__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/ingester/ingester.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/plumber/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/plumber/run_plumber.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/scaler/scaler_server.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/server_base.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/signature_client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/submission_client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/tasking_client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/updater/helper.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/updater/run_updater.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/setup.cfg +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/setup.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_alerter.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_badlist_client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_expiry.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_plumber.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_replay.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_safelist_client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_scaler.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_scheduler.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_signature_client.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_simulation.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_vacuum.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_worker_ingest.py +0 -0
- {assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_worker_submit.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.5.1.dev159
|
|
@@ -279,6 +279,17 @@ class DispatchClient:
|
|
|
279
279
|
else:
|
|
280
280
|
result.expiry_ts = None
|
|
281
281
|
try:
|
|
282
|
+
if self.ds.result.exists(result_key):
|
|
283
|
+
# A result already exists for this key
|
|
284
|
+
# Regenerate entire result key based on result and modified task (ignore caching)
|
|
285
|
+
task.ignore_cache = True
|
|
286
|
+
result_key = Result.help_build_key(sha256=task.fileinfo.sha256,
|
|
287
|
+
service_name=result.response.service_name,
|
|
288
|
+
service_version=result.response.service_version,
|
|
289
|
+
service_tool_version=result.response.service_tool_version,
|
|
290
|
+
is_empty=False,
|
|
291
|
+
task=task)
|
|
292
|
+
version = "create"
|
|
282
293
|
self.ds.result.save(result_key, result, version=version)
|
|
283
294
|
break
|
|
284
295
|
except VersionConflictException as vce:
|
|
@@ -14,8 +14,8 @@ from assemblyline.odm.randomizer import random_model_obj, random_minimal_obj, ge
|
|
|
14
14
|
from assemblyline.odm import models
|
|
15
15
|
from assemblyline.common.metrics import MetricsFactory
|
|
16
16
|
|
|
17
|
-
from assemblyline_core.dispatching.client import DispatchClient
|
|
18
|
-
from assemblyline_core.dispatching.dispatcher import Dispatcher, Submission
|
|
17
|
+
from assemblyline_core.dispatching.client import DispatchClient, DISPATCH_RESULT_QUEUE
|
|
18
|
+
from assemblyline_core.dispatching.dispatcher import Dispatcher, ServiceTask, Submission
|
|
19
19
|
from assemblyline_core.dispatching.schedules import Scheduler as RealScheduler
|
|
20
20
|
|
|
21
21
|
# noinspection PyUnresolvedReferences
|
|
@@ -123,7 +123,7 @@ def test_simple(clean_redis, clean_datastore):
|
|
|
123
123
|
user: User = random_model_obj(User)
|
|
124
124
|
ds.user.save(user.uname, user)
|
|
125
125
|
|
|
126
|
-
sub: Submission = random_model_obj(
|
|
126
|
+
sub: Submission = random_model_obj(Submission)
|
|
127
127
|
sub.sid = sid = 'first-submission'
|
|
128
128
|
sub.params.ignore_cache = False
|
|
129
129
|
sub.params.max_extracted = 5
|
|
@@ -242,7 +242,7 @@ def test_dispatch_extracted(clean_redis, clean_datastore):
|
|
|
242
242
|
ds.file.save(fh, obj)
|
|
243
243
|
|
|
244
244
|
# Inject the fake submission
|
|
245
|
-
submission = random_model_obj(
|
|
245
|
+
submission = random_model_obj(Submission)
|
|
246
246
|
submission.to_be_deleted = False
|
|
247
247
|
submission.files = [dict(name='./file', sha256=file_hash)]
|
|
248
248
|
submission.params.submitter = user.uname
|
|
@@ -308,7 +308,7 @@ def test_dispatch_extracted_bypass_drp(clean_redis, clean_datastore):
|
|
|
308
308
|
ds.file.save(fh, obj)
|
|
309
309
|
|
|
310
310
|
# Inject the fake submission
|
|
311
|
-
submission = random_model_obj(
|
|
311
|
+
submission = random_model_obj(Submission)
|
|
312
312
|
submission.to_be_deleted = False
|
|
313
313
|
submission.params.ignore_dynamic_recursion_prevention = False
|
|
314
314
|
submission.params.services.selected = ['extract', 'sandbox']
|
|
@@ -417,3 +417,37 @@ def test_timeout():
|
|
|
417
417
|
|
|
418
418
|
# Expire nothing
|
|
419
419
|
assert len(table.timeouts()) == 0
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
def test_prevent_result_overwrite(clean_redis, clean_datastore):
|
|
423
|
+
client = DispatchClient(clean_datastore, clean_redis, clean_redis)
|
|
424
|
+
dispatcher_name = "test"
|
|
425
|
+
result_queue = client._get_queue_from_cache(DISPATCH_RESULT_QUEUE + dispatcher_name)
|
|
426
|
+
|
|
427
|
+
# Create a task and add it to set of running tasks
|
|
428
|
+
task = random_model_obj(ServiceTask)
|
|
429
|
+
task.metadata['dispatcher__'] = dispatcher_name
|
|
430
|
+
|
|
431
|
+
# Create a result that's not "empty"
|
|
432
|
+
result = random_model_obj(Result)
|
|
433
|
+
result.response.service_name = task.service_name
|
|
434
|
+
result.sha256 = task.fileinfo.sha256
|
|
435
|
+
result.result.score = 1
|
|
436
|
+
result_key = result.build_key()
|
|
437
|
+
|
|
438
|
+
# Submit result to be saved
|
|
439
|
+
client.running_tasks.add(task.key(), task.as_primitives())
|
|
440
|
+
client.service_finished(task.sid, result_key, result)
|
|
441
|
+
|
|
442
|
+
# Pop result from queue, we expect to get the same result key as earlier
|
|
443
|
+
message = result_queue.pop(blocking=False)
|
|
444
|
+
msg_result_key = message['result_summary']['key']
|
|
445
|
+
assert msg_result_key == result_key
|
|
446
|
+
|
|
447
|
+
# Save the same result again but we expect to be saved under another key
|
|
448
|
+
client.running_tasks.add(task.key(), task.as_primitives())
|
|
449
|
+
client.service_finished(task.sid, result_key, result)
|
|
450
|
+
message = result_queue.pop(blocking=False)
|
|
451
|
+
msg_result_key = message['result_summary']['key']
|
|
452
|
+
|
|
453
|
+
assert msg_result_key != result_key
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.5.1.dev157
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/__init__.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
|
{assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/replay/replay.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-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/server_base.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
|
{assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/assemblyline_core/vacuum/worker.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-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_badlist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_safelist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_signature_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_worker_ingest.py
RENAMED
|
File without changes
|
{assemblyline-core-4.5.1.dev157 → assemblyline-core-4.5.1.dev159}/test/test_worker_submit.py
RENAMED
|
File without changes
|