Skip to content

Commit

Permalink
Improve commanline output
Browse files Browse the repository at this point in the history
  • Loading branch information
Andre0512 committed Dec 5, 2022
1 parent 9a69d49 commit a0cb1e0
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 15 deletions.
15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,25 @@ pip install speedport-api
With this shipped commandline tool can a speedport in your network be controlled.
#### Turn wifi off
```commandline
speedport wifi off
$ speedport wifi off
Turn off wifi...
```
#### Turn guest wifi on
```commandline
speedport guest-wifi on
$ speedport guest-wifi on
Turn on guest wifi...
```
#### Reconnect for new ip address
```commandline
speedport reconnect
$ speedport reconnect
123.45.67.89 / 5403:f3:35aa:12f:7287:41cf:fb1c:3c83
Reconnect with internet provider...
123.45.67.12 / 5403:f3:35fe:12f:7287:41cf:fb1c:3c83
```
#### Enable wps connect
```commandline
speedport wps
$ speedport wps
Enable wps connect...
wpc connect enabled for 113s...
```
## Library
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

setup(
name="speedport-api",
version="0.2.0",
version="0.2.1",
author="Andre Basche",
description="Control Telekom Speedport routers with Python",
long_description=long_description,
Expand Down
37 changes: 30 additions & 7 deletions src/speedport_api/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,37 @@ async def main():
elif args.get("guest-wifi") and args["guest-wifi"] == "off":
await speedport.wifi_guest_off()
if args.get("wps"):
await speedport.wps_on()
await wps_enable(args, speedport)
if args.get("reconnect"):
_LOGGER.info(f"ipv4 {(ip_data := await speedport.ip_data)['public_ip_v4']}\nipv6 {ip_data['public_ip_v6']}")
await speedport.reconnect()
while not (ip_data := await speedport.ip_data)["onlinestatus"] == "online":
time.sleep(0.5)
_LOGGER.info(f"ipv4 {ip_data['public_ip_v4']}\nipv6 {ip_data['public_ip_v6']}")
await reconnect(args, speedport)


async def reconnect(args, speedport):
if not args.get("quiet"):
_LOGGER.info(f"{(ip_data := await speedport.ip_data)['public_ip_v4']} / {ip_data['public_ip_v6']}")
await speedport.reconnect()
if not args.get("quiet"):
for i in range(240):
if (ip_data := await speedport.ip_data)["onlinestatus"] == "online":
_LOGGER.info(f"{ip_data['public_ip_v4']} / {ip_data['public_ip_v6']}")
break
await asyncio.sleep(0.5)
print(f"Connecting.{'.' * (i % 3)} ", end="\r", flush=True)


async def wps_enable(args, speedport):
await speedport.wps_on()
if not args.get("quiet"):
event = time.time()
next_time = event
while await speedport.wps_state == 1:
await asyncio.sleep(next_time - time.time())
next_time = time.time() + 1
print(f"wps connect enabled for {120 - int(time.time() - event)}s...", end="\r", flush=True)


if __name__ == '__main__':
asyncio.run(main())
try:
asyncio.run(main())
except KeyboardInterrupt:
print("Aborted.")
6 changes: 3 additions & 3 deletions src/speedport_api/speedport.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ async def post(self, path, data, referer):
url = f"{self._url}/{path}"
referer = f"{self._url}/{referer}"
data = self.encode(f"{data}&httoken={await self._get_httoken(referer)}", key=self._login_key)
async with self._session.post(url, cookies=self._cookies, headers={"Referer": referer}, data=data) as response:
async with self._session.post(url, cookies=self._cookies, headers={"Referer": referer}, data=data, timeout=30) as response:
_LOGGER.debug(f"POST - {url} - {response.status}")
return self.decode(await response.text(), key=self._login_key)

Expand Down Expand Up @@ -134,7 +134,7 @@ async def ip_data(self):
@property
async def wps_state(self):
referer = "html/content/network/wlan_wps.html"
return (await self.get(f"data/WPSStatus.json", referer=referer))["wlan_wps_state"]
return int((await self.get(f"data/WPSStatus.json", referer=referer))["wlan_wps_state"])

async def _set_wifi(self, on=True, guest=False):
""" Set wifi on/off """
Expand All @@ -156,7 +156,7 @@ async def wifi_guest_off(self):
await self._set_wifi(on=False, guest=True)

async def wps_on(self):
_LOGGER.info("Enable wps connect for 120 seconds...")
_LOGGER.info("Enable wps connect...")
await self.post("data/WLANAccess.json", "wlan_add=on&wps_key=connect", "html/content/network/wlan_wps.html")

async def reconnect(self):
Expand Down

0 comments on commit a0cb1e0

Please sign in to comment.