forked from kenzuya/unshackle
fix(proxy): collect servers from all locations in WindscribeVPN
Previously get_random_server only collected servers from the first location matching a country code. Now it collects from all matching locations before selecting randomly.
This commit is contained in:
@@ -86,9 +86,11 @@ class WindscribeVPN(Proxy):
|
|||||||
Returns:
|
Returns:
|
||||||
A random hostname from matching servers, or None if none available.
|
A random hostname from matching servers, or None if none available.
|
||||||
"""
|
"""
|
||||||
|
hostnames = []
|
||||||
|
|
||||||
|
# Collect hostnames from ALL locations matching the country code
|
||||||
for location in self.countries:
|
for location in self.countries:
|
||||||
if location.get("country_code", "").lower() == country_code.lower():
|
if location.get("country_code", "").lower() == country_code.lower():
|
||||||
hostnames = []
|
|
||||||
for group in location.get("groups", []):
|
for group in location.get("groups", []):
|
||||||
# Filter by city if specified
|
# Filter by city if specified
|
||||||
if city:
|
if city:
|
||||||
@@ -101,14 +103,14 @@ class WindscribeVPN(Proxy):
|
|||||||
if hostname := host.get("hostname"):
|
if hostname := host.get("hostname"):
|
||||||
hostnames.append(hostname)
|
hostnames.append(hostname)
|
||||||
|
|
||||||
if hostnames:
|
if hostnames:
|
||||||
return random.choice(hostnames)
|
return random.choice(hostnames)
|
||||||
elif city:
|
elif city:
|
||||||
# No servers found for the specified city
|
# No servers found for the specified city
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"No servers found in city '{city}' for country code '{country_code}'. "
|
f"No servers found in city '{city}' for country code '{country_code}'. "
|
||||||
"Try a different city or check the city name spelling."
|
"Try a different city or check the city name spelling."
|
||||||
)
|
)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user