assemblyline-core 4.5.1.dev184__tar.gz → 4.5.1.dev187__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.

Files changed (88) hide show
  1. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/PKG-INFO +1 -1
  2. assemblyline-core-4.5.1.dev187/assemblyline_core/VERSION +1 -0
  3. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/dispatching/client.py +13 -18
  4. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/tasking_client.py +5 -4
  5. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core.egg-info/PKG-INFO +1 -1
  6. assemblyline-core-4.5.1.dev184/assemblyline_core/VERSION +0 -1
  7. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/LICENCE.md +0 -0
  8. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/README.md +0 -0
  9. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/__init__.py +0 -0
  10. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/alerter/__init__.py +0 -0
  11. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/alerter/processing.py +0 -0
  12. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/alerter/run_alerter.py +0 -0
  13. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/archiver/__init__.py +0 -0
  14. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/archiver/run_archiver.py +0 -0
  15. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/badlist_client.py +0 -0
  16. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/dispatching/__init__.py +0 -0
  17. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/dispatching/__main__.py +0 -0
  18. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/dispatching/dispatcher.py +0 -0
  19. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/dispatching/schedules.py +0 -0
  20. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/dispatching/timeout.py +0 -0
  21. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/expiry/__init__.py +0 -0
  22. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/expiry/run_expiry.py +0 -0
  23. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/ingester/__init__.py +0 -0
  24. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/ingester/__main__.py +0 -0
  25. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/ingester/constants.py +0 -0
  26. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/ingester/ingester.py +0 -0
  27. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/metrics/__init__.py +0 -0
  28. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/metrics/es_metrics.py +0 -0
  29. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  30. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/metrics/helper.py +0 -0
  31. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/metrics/metrics_server.py +0 -0
  32. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  33. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  34. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  35. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/plumber/__init__.py +0 -0
  36. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/plumber/run_plumber.py +0 -0
  37. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/__init__.py +0 -0
  38. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/client.py +0 -0
  39. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/creator/__init__.py +0 -0
  40. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/creator/run.py +0 -0
  41. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/creator/run_worker.py +0 -0
  42. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/loader/__init__.py +0 -0
  43. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/loader/run.py +0 -0
  44. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/loader/run_worker.py +0 -0
  45. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/replay/replay.py +0 -0
  46. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/safelist_client.py +0 -0
  47. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/scaler/__init__.py +0 -0
  48. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/scaler/collection.py +0 -0
  49. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  50. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  51. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/scaler/controllers/interface.py +0 -0
  52. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
  53. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/scaler/run_scaler.py +0 -0
  54. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/scaler/scaler_server.py +0 -0
  55. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/server_base.py +0 -0
  56. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/signature_client.py +0 -0
  57. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/submission_client.py +0 -0
  58. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/updater/__init__.py +0 -0
  59. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/updater/helper.py +0 -0
  60. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/updater/run_updater.py +0 -0
  61. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/vacuum/__init__.py +0 -0
  62. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/vacuum/crawler.py +0 -0
  63. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/vacuum/department_map.py +0 -0
  64. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/vacuum/safelist.py +0 -0
  65. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/vacuum/stream_map.py +0 -0
  66. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/vacuum/worker.py +0 -0
  67. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/workflow/__init__.py +0 -0
  68. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core/workflow/run_workflow.py +0 -0
  69. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  70. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  71. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core.egg-info/requires.txt +0 -0
  72. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/assemblyline_core.egg-info/top_level.txt +0 -0
  73. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/setup.cfg +0 -0
  74. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/setup.py +0 -0
  75. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_alerter.py +0 -0
  76. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_badlist_client.py +0 -0
  77. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_dispatcher.py +0 -0
  78. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_expiry.py +0 -0
  79. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_plumber.py +0 -0
  80. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_replay.py +0 -0
  81. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_safelist_client.py +0 -0
  82. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_scaler.py +0 -0
  83. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_scheduler.py +0 -0
  84. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_signature_client.py +0 -0
  85. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_simulation.py +0 -0
  86. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_vacuum.py +0 -0
  87. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_worker_ingest.py +0 -0
  88. {assemblyline-core-4.5.1.dev184 → assemblyline-core-4.5.1.dev187}/test/test_worker_submit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.5.1.dev184
3
+ Version: 4.5.1.dev187
4
4
  Summary: Assemblyline 4 - Core components
5
5
  Home-page: https://github.com/CybercentreCanada/assemblyline-core/
6
6
  Author: CCCS Assemblyline development team
@@ -0,0 +1 @@
1
+ 4.5.1.dev187
@@ -254,7 +254,8 @@ class DispatchClient:
254
254
 
255
255
  @elasticapm.capture_span(span_type='dispatch_client')
256
256
  def service_finished(self, sid: str, result_key: str, result: Result,
257
- temporary_data: Optional[dict[str, Any]] = None):
257
+ temporary_data: Optional[dict[str, Any]] = None,
258
+ version="create"):
258
259
  """Notifies the dispatcher of service completion, and possible new files to dispatch."""
259
260
  # Make sure the dispatcher knows we were working on this task
260
261
  task_key = ServiceTask.make_key(sid=sid, service_name=result.response.service_name, sha=result.sha256)
@@ -272,28 +273,22 @@ class DispatchClient:
272
273
  self.ds.emptyresult.save(result_key, {"expiry_ts": result.expiry_ts})
273
274
  else:
274
275
  while True:
275
- old, version = self.ds.result.get_if_exists(result_key, version=True)
276
- if old:
277
- if old.expiry_ts and result.expiry_ts:
278
- result.expiry_ts = max(result.expiry_ts, old.expiry_ts)
279
- else:
280
- result.expiry_ts = None
281
276
  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"
293
277
  self.ds.result.save(result_key, result, version=version)
294
278
  break
295
279
  except VersionConflictException as vce:
296
280
  self.log.info(f"Retrying to save results due to version conflict: {str(vce)}")
281
+ # A result already exists for this key
282
+ # Regenerate entire result key based on result and modified task (ignore caching)
283
+ version = "create"
284
+ result.created = now_as_iso()
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)
297
292
 
298
293
  # Send the result key to any watching systems
299
294
  msg = {'status': 'OK', 'cache_key': result_key}
@@ -24,6 +24,7 @@ from assemblyline.remote.datatypes.events import EventSender, EventWatcher
24
24
  from assemblyline.remote.datatypes.hash import ExpiringHash
25
25
  from assemblyline_core.dispatching.client import DispatchClient
26
26
 
27
+
27
28
  class TaskingClientException(Exception):
28
29
  pass
29
30
 
@@ -252,7 +253,7 @@ class TaskingClient:
252
253
  # If we are allowed, try to see if the result has been cached
253
254
  if not task.ignore_cache and not service_data.disable_cache:
254
255
  # Checking for previous results for this key
255
- result = self.datastore.result.get_if_exists(result_key)
256
+ result, version = self.datastore.result.get_if_exists(result_key, version=True)
256
257
  if result:
257
258
  metric_factory.increment('cache_hit')
258
259
  if result.result.score:
@@ -262,8 +263,8 @@ class TaskingClient:
262
263
 
263
264
  result.archive_ts = None
264
265
 
265
- if task.ttl:
266
- result.expiry_ts = now_as_iso(task.ttl * 24 * 60 * 60)
266
+ if task.ttl and result.expiry_ts:
267
+ result.expiry_ts = max(result.expiry_ts, now_as_iso(task.ttl * 24 * 60 * 60))
267
268
 
268
269
  # Create a list of files to freshen
269
270
  freshen_hashes = [task.fileinfo.sha256]
@@ -286,7 +287,7 @@ class TaskingClient:
286
287
  for sha256 in freshen_hashes:
287
288
  self.datastore.save_or_freshen_file(sha256, {}, result.expiry_ts, result.classification)
288
289
 
289
- self.dispatch_client.service_finished(task.sid, result_key, result)
290
+ self.dispatch_client.service_finished(task.sid, result_key, result, version=version)
290
291
  cache_found = True
291
292
 
292
293
  if not cache_found:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.5.1.dev184
3
+ Version: 4.5.1.dev187
4
4
  Summary: Assemblyline 4 - Core components
5
5
  Home-page: https://github.com/CybercentreCanada/assemblyline-core/
6
6
  Author: CCCS Assemblyline development team
@@ -1 +0,0 @@
1
- 4.5.1.dev184