Allow AutoGPT to access local web hosts (#5318)

Update validators.py

allow ports to be used in host names. e.g. localhost:8888. 
(Note: code generated by ChatGPT.)
This commit is contained in:
Aaron
2023-11-16 15:31:22 +01:00
committed by GitHub
parent 6664eec8ce
commit 874000624d

View File

@@ -24,6 +24,7 @@ def validate_url(func: Callable[P, T]) -> Callable[P, T]:
Raises:
ValueError if the url fails any of the validation tests
"""
# Most basic check if the URL is valid:
if not re.match(r"^https?://", url):
raise ValueError("Invalid URL format")
@@ -80,29 +81,28 @@ def check_local_file_access(url: str) -> bool:
Returns:
bool: True if the URL is a local file, False otherwise
"""
local_prefixes = [
# List of local file prefixes
local_file_prefixes = [
"file:///",
"file://localhost/",
"file://localhost",
"http://localhost",
"http://localhost/",
"https://localhost",
"https://localhost/",
"http://2130706433",
"http://2130706433/",
"https://2130706433",
"https://2130706433/",
"http://127.0.0.1/",
"http://127.0.0.1",
"https://127.0.0.1/",
"https://127.0.0.1",
"https://0.0.0.0/",
"https://0.0.0.0",
"http://0.0.0.0/",
"http://0.0.0.0",
"http://0000",
"http://0000/",
"https://0000",
"https://0000/",
]
return any(url.startswith(prefix) for prefix in local_prefixes)
if any(url.startswith(prefix) for prefix in local_file_prefixes):
return True
# Parse the URL
parsed = urlparse(url)
# List of local hostnames/IPs without considering ports
local_domains = [
"localhost",
"2130706433", # IP representation of 127.0.0.1
"127.0.0.1",
"0.0.0.0",
"0000" # Not sure what this is for, but keeping it as in original
]
# Check if the domain part of the URL is in local_domains
if parsed.hostname in local_domains:
return False # We don't restrict localhost access on different ports
# Return True for anything else that is deemed "local"
return True