upgrades
This commit is contained in:
@@ -102,8 +102,10 @@ class GraphManager:
|
||||
#with self.lock:
|
||||
# Ensure both nodes exist
|
||||
if not self.graph.has_node(source_id) or not self.graph.has_node(target_id):
|
||||
return False
|
||||
|
||||
# If the target node is a subdomain, it should be added.
|
||||
# The scanner will handle this logic.
|
||||
pass
|
||||
|
||||
# Check if edge already exists
|
||||
if self.graph.has_edge(source_id, target_id):
|
||||
# Update confidence score if new score is higher
|
||||
@@ -241,6 +243,11 @@ class GraphManager:
|
||||
|
||||
node_color_config = type_colors.get(attributes.get('type', 'unknown'), type_colors['domain'])
|
||||
node_data['color'] = node_color_config
|
||||
|
||||
# Pass the has_valid_cert metadata for styling
|
||||
if 'metadata' in attributes and 'has_valid_cert' in attributes['metadata']:
|
||||
node_data['has_valid_cert'] = attributes['metadata']['has_valid_cert']
|
||||
|
||||
nodes.append(node_data)
|
||||
|
||||
# Format edges for visualization
|
||||
|
||||
@@ -626,6 +626,57 @@ class Scanner:
|
||||
for provider in self.providers:
|
||||
stats[provider.get_name()] = provider.get_statistics()
|
||||
return stats
|
||||
|
||||
def _is_valid_domain(self, domain: str) -> bool:
|
||||
"""
|
||||
Basic domain validation.
|
||||
|
||||
Args:
|
||||
domain: Domain string to validate
|
||||
|
||||
Returns:
|
||||
True if domain appears valid
|
||||
"""
|
||||
if not domain or len(domain) > 253:
|
||||
return False
|
||||
|
||||
# Check for valid characters and structure
|
||||
parts = domain.split('.')
|
||||
if len(parts) < 2:
|
||||
return False
|
||||
|
||||
for part in parts:
|
||||
if not part or len(part) > 63:
|
||||
return False
|
||||
if not part.replace('-', '').replace('_', '').isalnum():
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def _is_valid_ip(self, ip: str) -> bool:
|
||||
"""
|
||||
Basic IP address validation.
|
||||
|
||||
Args:
|
||||
ip: IP address string to validate
|
||||
|
||||
Returns:
|
||||
True if IP appears valid
|
||||
"""
|
||||
try:
|
||||
parts = ip.split('.')
|
||||
if len(parts) != 4:
|
||||
return False
|
||||
|
||||
for part in parts:
|
||||
num = int(part)
|
||||
if not 0 <= num <= 255:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
except (ValueError, AttributeError):
|
||||
return False
|
||||
|
||||
|
||||
class ScannerProxy:
|
||||
|
||||
Reference in New Issue
Block a user