47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import re
|
|
|
|
#Function for validating DNS hostnames
|
|
def validate_dns_hostname(dns_hostname):
|
|
try:
|
|
# Basic validation
|
|
if not dns_hostname or not isinstance(dns_hostname, str):
|
|
return False, "DNS Hostname darf nicht leer sein und muss ein String sein"
|
|
|
|
# Validate DNS hostname format
|
|
dns_pattern = r'^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$'
|
|
if not re.match(dns_pattern, dns_hostname):
|
|
return False, "Ungültiges DNS Hostname Format"
|
|
|
|
# Check maximum length
|
|
if len(dns_hostname) > 255:
|
|
return False, "DNS Hostname ist zu lang (max. 255 Zeichen)"
|
|
|
|
return True, None
|
|
|
|
except Exception as e:
|
|
return False, f"Fehler bei der DNS Validierung: {str(e)}"
|
|
|
|
|
|
#Function for validating hash values and returning the type
|
|
def validate_hash(hash_value):
|
|
try:
|
|
# Basic validation
|
|
if not hash_value or not isinstance(hash_value, str):
|
|
return False, None, "Hash darf nicht leer sein und muss ein String sein"
|
|
|
|
# Validate hash format and determine type
|
|
hash_patterns = {
|
|
'md5': r'^[a-fA-F0-9]{32}$',
|
|
'sha1': r'^[a-fA-F0-9]{40}$',
|
|
'sha256': r'^[a-fA-F0-9]{64}$'
|
|
}
|
|
|
|
for type_name, pattern in hash_patterns.items():
|
|
if re.match(pattern, hash_value):
|
|
return True, type_name, None
|
|
|
|
return False, None, "Unbekanntes Hash-Format"
|
|
|
|
except Exception as e:
|
|
return False, None, f"Fehler bei der Hash-Validierung: {str(e)}"
|