Compare commits

...

2 Commits

3 changed files with 33 additions and 3 deletions

View File

@@ -46,9 +46,19 @@ class Session(object):
'''
def __init__(self, url, user=None, domain=None, password=None, loginkey=None, proxy=None, token=None, ignore_ssl=False, auto_reconnect=False):
if len(url) < 5 or ((not url.startswith('wss://')) and (not url.startswith('ws://'))):
parsed = urllib.parse.urlparse(url)
if parsed.scheme not in ("wss", "ws"):
raise ValueError("Invalid URL")
port = 80
if parsed.port is None:
if parsed.scheme == "wss":
port = 443
p = list(parsed)
p[1] = f"{parsed.hostname}:{port}"
url = urllib.parse.urlunparse(p)
if (not url.endswith('/')):
url += '/'

View File

@@ -139,7 +139,7 @@ def compare_dict(dict1, dict2):
def _check_socket(f):
@functools.wraps(f)
async def wrapper(self, *args, **kwargs):
await self.initialized.wait()
await asyncio.wait_for(self.initialized.wait(), 10)
if not self.alive and self._main_loop_error is not None:
raise self._main_loop_error
elif not self.alive:
@@ -153,3 +153,6 @@ def _process_websocket_exception(exc):
if isinstance(exc, (ssl.SSLCertVerificationError, TimeoutError)):
return exc
return tmp
class Proxy(object):
pass

View File

@@ -36,4 +36,21 @@ async def test_ssl(env):
except* ssl.SSLCertVerificationError:
pass
else:
raise Exception("Invalid SSL certificate accepted")
raise Exception("Invalid SSL certificate accepted")
async def test_urlparse():
# This tests the url port adding necessitated by python-socks. Our test environment doesn't use 443, so this is just a quick sanity test.
try:
async with meshctrl.Session("wss://localhost", user="unprivileged", password="Not a real password", ignore_ssl=True) as s:
pass
except* TimeoutError:
#We're not running a server, so timeout is our expected outcome
pass
# This tests our check for wss/ws url schemes
try:
async with meshctrl.Session("https://localhost", user="unprivileged", password="Not a real password", ignore_ssl=True) as s:
pass
except* ValueError:
#We're not running a server, so timeout is our expected outcome
pass