assemblyline-core 4.5.1.dev182__tar.gz → 4.5.1.dev184__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.dev182 → assemblyline-core-4.5.1.dev184}/PKG-INFO +1 -1
- assemblyline-core-4.5.1.dev184/assemblyline_core/VERSION +1 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/ingester/ingester.py +11 -1
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/updater/helper.py +18 -7
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core.egg-info/PKG-INFO +1 -1
- assemblyline-core-4.5.1.dev182/assemblyline_core/VERSION +0 -1
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/LICENCE.md +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/README.md +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/dispatching/__main__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/dispatching/client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/dispatching/timeout.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/expiry/run_expiry.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/ingester/__main__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/plumber/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/plumber/run_plumber.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/scaler/scaler_server.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/server_base.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/signature_client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/submission_client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/tasking_client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/updater/run_updater.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/setup.cfg +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/setup.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_alerter.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_badlist_client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_dispatcher.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_expiry.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_plumber.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_replay.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_safelist_client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_scaler.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_scheduler.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_signature_client.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_simulation.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_vacuum.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_worker_ingest.py +0 -0
- {assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_worker_submit.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.5.1.dev184
|
|
@@ -36,6 +36,7 @@ from assemblyline.remote.datatypes.queues.priority import PriorityQueue
|
|
|
36
36
|
from assemblyline.remote.datatypes.queues.comms import CommsQueue
|
|
37
37
|
from assemblyline.remote.datatypes.queues.multi import MultiQueue
|
|
38
38
|
from assemblyline.remote.datatypes.hash import Hash
|
|
39
|
+
from assemblyline.remote.datatypes.user_quota_tracker import UserQuotaTracker
|
|
39
40
|
from assemblyline import odm
|
|
40
41
|
from assemblyline.odm.models.submission import SubmissionParams, Submission as DatabaseSubmission
|
|
41
42
|
from assemblyline.odm.models.alert import EXTENDED_SCAN_VALUES
|
|
@@ -180,6 +181,9 @@ class Ingester(ThreadedCoreBase):
|
|
|
180
181
|
# Utility object to handle post-processing actions
|
|
181
182
|
self.postprocess_worker = ActionWorker(cache=True, config=self.config, datastore=self.datastore,
|
|
182
183
|
redis_persist=self.redis_persist)
|
|
184
|
+
# Async Submission quota tracker
|
|
185
|
+
self.async_submission_tracker = UserQuotaTracker('async_submissions', timeout=24 * 60 * 60, # 1 day timeout
|
|
186
|
+
redis=self.redis_persist)
|
|
183
187
|
|
|
184
188
|
if self.config.core.metrics.apm_server.server_url is not None:
|
|
185
189
|
self.log.info(f"Exporting application metrics to: {self.config.core.metrics.apm_server.server_url}")
|
|
@@ -640,7 +644,7 @@ class Ingester(ThreadedCoreBase):
|
|
|
640
644
|
'archived': False,
|
|
641
645
|
'archive_ts': None,
|
|
642
646
|
'classification': task.params.classification,
|
|
643
|
-
'expiry_ts':now_as_iso(task.params.ttl * 24 * 60 * 60),
|
|
647
|
+
'expiry_ts': now_as_iso(task.params.ttl * 24 * 60 * 60),
|
|
644
648
|
'from_archive': False,
|
|
645
649
|
'metadata': task.submission.metadata,
|
|
646
650
|
'params': task.params.as_primitives(),
|
|
@@ -863,6 +867,9 @@ class Ingester(ThreadedCoreBase):
|
|
|
863
867
|
return True
|
|
864
868
|
|
|
865
869
|
def _notify_drop(self, task: IngestTask):
|
|
870
|
+
if self.config.ui.enforce_quota:
|
|
871
|
+
self.async_submission_tracker.end(task.params.submitter)
|
|
872
|
+
|
|
866
873
|
self.send_notification(task)
|
|
867
874
|
|
|
868
875
|
c12n = task.params.classification
|
|
@@ -936,4 +943,7 @@ class Ingester(ThreadedCoreBase):
|
|
|
936
943
|
task.extended_scan = 'submitted'
|
|
937
944
|
task.params.psid = None
|
|
938
945
|
|
|
946
|
+
if self.config.ui.enforce_quota:
|
|
947
|
+
self.async_submission_tracker.end(task.params.submitter)
|
|
948
|
+
|
|
939
949
|
self.send_notification(task)
|
|
@@ -87,9 +87,6 @@ class AzureContainerRegistry(ContainerRegistry):
|
|
|
87
87
|
headers["Authorization"] = f"Bearer {token}"
|
|
88
88
|
|
|
89
89
|
resp = self._perform_request(url, headers, verify, proxies)
|
|
90
|
-
if not resp:
|
|
91
|
-
# Fetching tag list failed
|
|
92
|
-
return []
|
|
93
90
|
|
|
94
91
|
# At this point, we should have a response from the API
|
|
95
92
|
if resp and resp.ok:
|
|
@@ -218,7 +215,7 @@ def get_latest_tag_for_service(
|
|
|
218
215
|
|
|
219
216
|
# Pre-filter tags to only consider 'compatible' tags relative to the running system
|
|
220
217
|
tags = [t for t in tags
|
|
221
|
-
if re.match(f"({FRAMEWORK_VERSION})
|
|
218
|
+
if re.match(f"({FRAMEWORK_VERSION})\.({SYSTEM_VERSION})\.\\d+\.({update_channel})\\d+", t)]
|
|
222
219
|
|
|
223
220
|
if not tags:
|
|
224
221
|
logger.warning(f"{prefix}Cannot fetch latest tag for service {service_name} - {image_name}"
|
|
@@ -253,14 +250,28 @@ def _get_dockerhub_tags(image_name, update_channel, proxies=None):
|
|
|
253
250
|
# Find latest tag for each types
|
|
254
251
|
rv = []
|
|
255
252
|
namespace, repository = image_name.split('/', 1)
|
|
256
|
-
url = f"https://{DEFAULT_DOCKER_REGISTRY}/v2/namespaces/{namespace}/repositories/{repository}/tags"
|
|
257
|
-
|
|
253
|
+
url = f"https://{DEFAULT_DOCKER_REGISTRY}/v2/namespaces/{namespace}/repositories/{repository}/tags" \
|
|
254
|
+
f"?page_size=50&page=1&name={update_channel}&ordering=last_updated"
|
|
258
255
|
|
|
259
256
|
while True:
|
|
260
257
|
resp = requests.get(url, proxies=proxies)
|
|
261
258
|
if resp.ok:
|
|
262
259
|
resp_data = resp.json()
|
|
263
|
-
|
|
260
|
+
if namespace == "cccs":
|
|
261
|
+
# The tags are coming from a repository managed by the Assemblyline team
|
|
262
|
+
for x in resp_data['results']:
|
|
263
|
+
tag_name = x['name']
|
|
264
|
+
if tag_name == f"{FRAMEWORK_VERSION}.{SYSTEM_VERSION}.{update_channel}":
|
|
265
|
+
# Ignore tag aliases containing the update_channel
|
|
266
|
+
continue
|
|
267
|
+
|
|
268
|
+
if tag_name.startswith(f"{FRAMEWORK_VERSION}.{SYSTEM_VERSION}"):
|
|
269
|
+
# Because the order of paging is based on `last_updated`,
|
|
270
|
+
# we can return the first valid candidate
|
|
271
|
+
return [tag_name]
|
|
272
|
+
else:
|
|
273
|
+
# The tags are coming from another repository, so we're don't know the ordering of tags
|
|
274
|
+
rv.extend([x['name'] for x in resp_data['results']])
|
|
264
275
|
# Page until there are no results left
|
|
265
276
|
url = resp_data.get('next', None)
|
|
266
277
|
if url is None:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.5.1.dev182
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/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.dev182 → assemblyline-core-4.5.1.dev184}/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.dev182 → assemblyline-core-4.5.1.dev184}/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.dev182 → assemblyline-core-4.5.1.dev184}/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
|
{assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/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.dev182 → assemblyline-core-4.5.1.dev184}/test/test_badlist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_safelist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_signature_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_worker_ingest.py
RENAMED
|
File without changes
|
{assemblyline-core-4.5.1.dev182 → assemblyline-core-4.5.1.dev184}/test/test_worker_submit.py
RENAMED
|
File without changes
|