scheduler fixes
This commit is contained in:
parent
f2db739fa1
commit
b984189e08
@ -41,7 +41,7 @@ class GraphManager:
|
|||||||
self.correlation_index = {}
|
self.correlation_index = {}
|
||||||
# Compile regex for date filtering for efficiency
|
# Compile regex for date filtering for efficiency
|
||||||
self.date_pattern = re.compile(r'^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}')
|
self.date_pattern = re.compile(r'^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}')
|
||||||
self.EXCLUDED_KEYS = ['confidence', 'provider', 'timestamp', 'type','crtsh_cert_validity_period_days','crtsh_cert_source']
|
self.EXCLUDED_KEYS = ['confidence', 'provider', 'timestamp', 'type','cert_validity_period_days','cert_source']
|
||||||
|
|
||||||
def __getstate__(self):
|
def __getstate__(self):
|
||||||
"""Prepare GraphManager for pickling, excluding compiled regex."""
|
"""Prepare GraphManager for pickling, excluding compiled regex."""
|
||||||
@ -73,7 +73,7 @@ class GraphManager:
|
|||||||
attr_provider = attr.get('provider', 'unknown')
|
attr_provider = attr.get('provider', 'unknown')
|
||||||
|
|
||||||
# Skip excluded attributes and invalid values
|
# Skip excluded attributes and invalid values
|
||||||
if attr_name in self.EXCLUDED_KEYS or not isinstance(attr_value, (str, int, float, bool)) or attr_value is None:
|
if any(excluded_key in attr_name for excluded_key in self.EXCLUDED_KEYS) or not isinstance(attr_value, (str, int, float, bool)) or attr_value is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if isinstance(attr_value, bool):
|
if isinstance(attr_value, bool):
|
||||||
|
|||||||
@ -373,6 +373,7 @@ class Scanner:
|
|||||||
|
|
||||||
task_tuple = (provider_name, target_item)
|
task_tuple = (provider_name, target_item)
|
||||||
if task_tuple in processed_tasks:
|
if task_tuple in processed_tasks:
|
||||||
|
self.indicators_completed += 1
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if depth > max_depth:
|
if depth > max_depth:
|
||||||
@ -661,7 +662,7 @@ class Scanner:
|
|||||||
target_node_type = NodeType.DOMAIN if node_type == 'domain' else NodeType.IP
|
target_node_type = NodeType.DOMAIN if node_type == 'domain' else NodeType.IP
|
||||||
self.graph.add_node(target, target_node_type)
|
self.graph.add_node(target, target_node_type)
|
||||||
|
|
||||||
attributes = {
|
attributes_dict = {
|
||||||
'count': len(targets),
|
'count': len(targets),
|
||||||
'nodes': targets,
|
'nodes': targets,
|
||||||
'node_type': node_type,
|
'node_type': node_type,
|
||||||
@ -669,9 +670,21 @@ class Scanner:
|
|||||||
'discovery_depth': current_depth,
|
'discovery_depth': current_depth,
|
||||||
'threshold_exceeded': self.config.large_entity_threshold,
|
'threshold_exceeded': self.config.large_entity_threshold,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
attributes_list = []
|
||||||
|
for key, value in attributes_dict.items():
|
||||||
|
attributes_list.append({
|
||||||
|
"name": key,
|
||||||
|
"value": value,
|
||||||
|
"type": "large_entity_info",
|
||||||
|
"provider": provider_name,
|
||||||
|
"confidence": 0.9,
|
||||||
|
"metadata": {}
|
||||||
|
})
|
||||||
|
|
||||||
description = f'Large entity created due to {len(targets)} relationships from {provider_name}'
|
description = f'Large entity created due to {len(targets)} relationships from {provider_name}'
|
||||||
|
|
||||||
self.graph.add_node(entity_id, NodeType.LARGE_ENTITY, attributes=attributes, description=description)
|
self.graph.add_node(entity_id, NodeType.LARGE_ENTITY, attributes=attributes_list, description=description)
|
||||||
|
|
||||||
# Create edge from source to large entity
|
# Create edge from source to large entity
|
||||||
if provider_result.relationships:
|
if provider_result.relationships:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user