mirror of
http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/darknet-lantern.git
synced 2025-07-01 18:56:40 +00:00
issue 26: added simplex server status checker in uptimechecker.py
This commit is contained in:
parent
a4d34775c5
commit
f5913a9cef
2 changed files with 255 additions and 90 deletions
|
@ -236,6 +236,43 @@ def IsCategoryValid(categories: list)-> bool:
|
|||
else:
|
||||
return True
|
||||
|
||||
|
||||
|
||||
def IsSimpleXServerValid(url: str) -> bool:
|
||||
pattern = re.compile('[0-9A-Za-z-_]*')
|
||||
url = url.strip()
|
||||
try:
|
||||
|
||||
if url.startswith(('smp://', 'xftp://')):
|
||||
# Remove the protocol part
|
||||
proless = url.split('//', 1)[-1]
|
||||
# Split the fingerprint and hostname
|
||||
parts = proless.split('@')
|
||||
if len(parts) != 2:
|
||||
return False # Must have exactly one '@' character
|
||||
|
||||
fingerprint = parts[0]
|
||||
hostname = parts[1].split(',')[0] # Get the hostname before any comma
|
||||
|
||||
# Check fingerprint length and pattern
|
||||
if len(fingerprint) == 44 and pattern.match(fingerprint):
|
||||
# Validate the hostname
|
||||
result = IsSimpleXUrlValid(hostname)
|
||||
if result:
|
||||
# Check for an optional comma and a valid onion domain
|
||||
if ',' in proless:
|
||||
onion_part = proless.split(',')[1].strip()
|
||||
if not hostname_pattern.match(onion_part):
|
||||
return False
|
||||
return True
|
||||
return False
|
||||
except Exception as e:
|
||||
print(e)
|
||||
# Any error will be a false
|
||||
return False
|
||||
|
||||
|
||||
|
||||
def IsNameValid(name: str)->bool:
|
||||
"""
|
||||
Check the parameter name only contains [a-zA-Z0-9 ] and is 64 chars long.
|
||||
|
@ -268,3 +305,61 @@ def print_colors(s:str=' ', bold:bool=False, is_error:bool = False, default:bool
|
|||
else:
|
||||
print(f"{PURPLE}{s}{RESET}")
|
||||
|
||||
|
||||
|
||||
def IsSimpleXOnionValid(url: str)-> bool:
|
||||
"""
|
||||
Checks if the domain(param) is a valid onion domain and return True else False.
|
||||
"""
|
||||
try:
|
||||
pattern = re.compile(r"^[A-Za-z0-9:/._%-=#?&@]+(.onion)$")
|
||||
url_pattern = re.compile(r"^(\w+:)?(?://)?(\w+\.)?[a-z2-7]{56}\.onion")
|
||||
url = url.strip().removesuffix('/')
|
||||
if url.startswith('http://'):
|
||||
domain = url.split('/')[2]
|
||||
if pattern.fullmatch(domain) is not None:
|
||||
if len(domain.split('.')) > 3:
|
||||
return False
|
||||
else:
|
||||
if len(domain) < 62:
|
||||
return False
|
||||
return True
|
||||
elif pattern.fullmatch(domain) is None:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
#TODO : edit the url to make sure it has http:// at the beginning, in case if it's missing? (problem is that it only returns true or false)
|
||||
if url_pattern.match(url) is not None:
|
||||
if len(url.split('.')) > 3:
|
||||
return False
|
||||
else:
|
||||
if len(url) < 62:
|
||||
return False
|
||||
return True
|
||||
elif url_pattern.match(url) is None:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
except Exception as e:
|
||||
return False
|
||||
|
||||
def IsSimpleXUrlValid(url:str)->bool:
|
||||
"""
|
||||
Check if url is valid both dark net end clearnet.
|
||||
"""
|
||||
pattern = re.compile(r"^[A-Za-z0-9:/._%-=#?&@]+$")
|
||||
onion_pattern = re.compile(r"^(\w+:)?(?://)?(\w+\.)?[a-z2-7]{56}\.onion")
|
||||
url = str(url)
|
||||
if len(url) < 4:
|
||||
return False
|
||||
if onion_pattern.match(url) is not None:
|
||||
return IsSimpleXOnionValid(url)
|
||||
else:
|
||||
if not url.__contains__('.'):
|
||||
return False
|
||||
if pattern.fullmatch(url) is None:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue