Skip to content

Commit

Permalink
Disable ssl verify for external session Andre0512/speedport#13
Browse files Browse the repository at this point in the history
  • Loading branch information
Andre0512 committed Feb 18, 2024
1 parent 4186e87 commit a3de7a9
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 9 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

setup(
name="speedport-api",
version="0.5.8",
version="0.5.9",
author="Andre Basche",
description="Control Telekom Speedport routers with Python",
long_description=long_description,
Expand Down
21 changes: 13 additions & 8 deletions speedport/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,16 +63,22 @@ def __init__(
self._url = host_url
self._own_session = session is None
self._session: aiohttp.ClientSession | None = session
self._verify_ssl: bool = False
self._timeout: float = 30

async def __aenter__(self):
return await self.create()

async def __aexit__(self, exc_type, exc_val, exc_tb):
await self.close()

@property
def _kwargs(self):
return {"verify_ssl": self._verify_ssl, "timeout": self._timeout}

async def create(self) -> Self:
"""Create aiohttp session"""
connector = aiohttp.TCPConnector(verify_ssl=False)
connector = aiohttp.TCPConnector(verify_ssl=self._verify_ssl)
if not self._session:
jar = aiohttp.CookieJar(unsafe=True)
self._session = aiohttp.ClientSession(connector=connector, cookie_jar=jar)
Expand All @@ -91,7 +97,9 @@ async def get(self, path: str, auth: bool = False, referer: str = ""):
referer = f"{self._url}/{referer}"
if token := await self._get_httoken(referer):
url += f"?_tn={token}"
async with self._session.get(url, headers={"Referer": referer}) as response:
async with self._session.get(
url, headers={"Referer": referer}, **self._kwargs
) as response:
_LOGGER.debug("GET - %s - %s", url, response.status)
key = self._login_key if auth else const.DEFAULT_KEY
return decode(await response.text(), key=key)
Expand All @@ -104,16 +112,13 @@ async def post(self, path: str, data: dict[str, str], referer: str):
data = "&".join([f"{k}={v}" for k, v in data.items()])
data = encode(data, key=self._login_key)
async with self._session.post(
url,
headers={"Referer": referer},
data=data,
timeout=30,
url, headers={"Referer": referer}, data=data, **self._kwargs
) as response:
_LOGGER.debug("POST - %s - %s", url, response.status)
return decode(await response.text(), key=self._login_key)

async def _get_httoken(self, url: str) -> str:
async with self._session.get(url) as response:
async with self._session.get(url, **self._kwargs) as response:
_LOGGER.debug("GET - %s - %s", url, response.status)
if token := re.findall("httoken = (\\d+)", await response.text()):
return token[0]
Expand All @@ -131,7 +136,7 @@ async def login(self, password: str):
login_data = f"{await self._get_login_key()}:{password}".encode()
login_key = sha256(login_data).hexdigest()
data = encode("showpw=0&password=" + login_key)
async with self._session.post(url, data=data) as response:
async with self._session.post(url, data=data, **self._kwargs) as response:
_LOGGER.debug("POST - %s - %s", url, response.status)
result = decode(await response.text())
_LOGGER.debug(result)
Expand Down

0 comments on commit a3de7a9

Please sign in to comment.