tplinkrouterc6u 5.10.0__py3-none-any.whl → 5.10.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- test/test_client_c6u.py +63 -0
- tplinkrouterc6u/client/c6u.py +13 -8
- {tplinkrouterc6u-5.10.0.dist-info → tplinkrouterc6u-5.10.2.dist-info}/METADATA +10 -3
- {tplinkrouterc6u-5.10.0.dist-info → tplinkrouterc6u-5.10.2.dist-info}/RECORD +7 -7
- {tplinkrouterc6u-5.10.0.dist-info → tplinkrouterc6u-5.10.2.dist-info}/WHEEL +0 -0
- {tplinkrouterc6u-5.10.0.dist-info → tplinkrouterc6u-5.10.2.dist-info}/licenses/LICENSE +0 -0
- {tplinkrouterc6u-5.10.0.dist-info → tplinkrouterc6u-5.10.2.dist-info}/top_level.txt +0 -0
test/test_client_c6u.py
CHANGED
|
@@ -769,6 +769,69 @@ class TestTPLinkClient(TestCase):
|
|
|
769
769
|
self.assertEqual(result.wan_ipv4_gateway, '0.0.0.0')
|
|
770
770
|
self.assertEqual(result.lan_macaddr, '06-E6-97-9E-23-F5')
|
|
771
771
|
|
|
772
|
+
def test_get_status_wifi_disabled(self) -> None:
|
|
773
|
+
"""Test that get_status gracefully handles when WiFi is disabled and wireless statistics fail."""
|
|
774
|
+
response_status = '''
|
|
775
|
+
{
|
|
776
|
+
"success": true,
|
|
777
|
+
"data": {
|
|
778
|
+
"lan_macaddr": "06:e6:97:9e:23:f5",
|
|
779
|
+
"wan_macaddr": "06:e6:97:9e:23:f6",
|
|
780
|
+
"wan_ipv4_ipaddr": "192.168.1.1",
|
|
781
|
+
"wan_ipv4_gateway": "192.168.1.254",
|
|
782
|
+
"lan_ipv4_ipaddr": "192.168.0.1",
|
|
783
|
+
"mem_usage": 0.43,
|
|
784
|
+
"cpu_usage": 0.28,
|
|
785
|
+
"conn_type": "1",
|
|
786
|
+
"access_devices_wired": [
|
|
787
|
+
{
|
|
788
|
+
"wire_type": "wired",
|
|
789
|
+
"macaddr": "3d:24:25:24:30:79",
|
|
790
|
+
"ipaddr": "192.168.1.228",
|
|
791
|
+
"hostname": "SERVER"
|
|
792
|
+
}
|
|
793
|
+
],
|
|
794
|
+
"access_devices_wireless_host": [],
|
|
795
|
+
"access_devices_wireless_guest": [],
|
|
796
|
+
"wireless_2g_enable": "off",
|
|
797
|
+
"wireless_5g_enable": "off",
|
|
798
|
+
"guest_2g_enable": "off",
|
|
799
|
+
"guest_5g_enable": "off"
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
'''
|
|
803
|
+
|
|
804
|
+
class TPLinkRouterTest(TplinkRouter):
|
|
805
|
+
def request(self, path: str, data: str,
|
|
806
|
+
ignore_response: bool = False, ignore_errors: bool = False) -> dict | None:
|
|
807
|
+
if path == 'admin/status?form=all&operation=read':
|
|
808
|
+
return loads(response_status)['data']
|
|
809
|
+
elif path == 'admin/wireless?form=statistics':
|
|
810
|
+
# Simulate the error that occurs when WiFi is disabled
|
|
811
|
+
from tplinkrouterc6u.common.exception import ClientError
|
|
812
|
+
raise ClientError('TplinkRouter - An unknown response - Expecting value: line 1 column 1 (char 0)')
|
|
813
|
+
raise ClientException()
|
|
814
|
+
|
|
815
|
+
client = TPLinkRouterTest('', '')
|
|
816
|
+
result = client.get_status()
|
|
817
|
+
|
|
818
|
+
# Should complete successfully without crashing
|
|
819
|
+
self.assertIsInstance(result, Status)
|
|
820
|
+
self.assertEqual(result.wan_macaddr, '06-E6-97-9E-23-F6')
|
|
821
|
+
self.assertEqual(result.lan_macaddr, '06-E6-97-9E-23-F5')
|
|
822
|
+
self.assertEqual(result.wan_ipv4_addr, '192.168.1.1')
|
|
823
|
+
self.assertEqual(result.wan_ipv4_gateway, '192.168.1.254')
|
|
824
|
+
self.assertEqual(result.lan_ipv4_addr, '192.168.0.1')
|
|
825
|
+
self.assertEqual(result.wired_total, 1)
|
|
826
|
+
self.assertEqual(result.wifi_clients_total, 0)
|
|
827
|
+
self.assertEqual(result.guest_clients_total, 0)
|
|
828
|
+
self.assertEqual(result.clients_total, 1)
|
|
829
|
+
self.assertEqual(result.wifi_2g_enable, False)
|
|
830
|
+
self.assertEqual(result.wifi_5g_enable, False)
|
|
831
|
+
# Devices list should only contain wired devices
|
|
832
|
+
self.assertEqual(len(result.devices), 1)
|
|
833
|
+
self.assertEqual(result.devices[0].type, Connection.WIRED)
|
|
834
|
+
|
|
772
835
|
def test_vpn_status(self) -> None:
|
|
773
836
|
response_openvpn_read = """
|
|
774
837
|
{
|
tplinkrouterc6u/client/c6u.py
CHANGED
|
@@ -360,14 +360,19 @@ class TplinkBaseRouter(AbstractRouter, TplinkRequest):
|
|
|
360
360
|
devices[item['mac']].up_speed = item.get('uploadSpeed')
|
|
361
361
|
devices[item['mac']].signal = int(item.get('signal')) if item.get('signal') else None
|
|
362
362
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
363
|
+
try:
|
|
364
|
+
wireless_stats = self.request('admin/wireless?form=statistics', 'operation=load')
|
|
365
|
+
for item in wireless_stats:
|
|
366
|
+
if item['mac'] not in devices:
|
|
367
|
+
status.wifi_clients_total += 1
|
|
368
|
+
type = self._map_wire_type(item.get('type'))
|
|
369
|
+
devices[item['mac']] = Device(type, EUI48(item['mac']), IPv4Address('0.0.0.0'),
|
|
370
|
+
'')
|
|
371
|
+
devices[item['mac']].packets_sent = item.get('txpkts')
|
|
372
|
+
devices[item['mac']].packets_received = item.get('rxpkts')
|
|
373
|
+
except Exception:
|
|
374
|
+
# WiFi might be disabled on the router, skip wireless statistics
|
|
375
|
+
pass
|
|
371
376
|
|
|
372
377
|
status.devices = list(devices.values())
|
|
373
378
|
status.clients_total = status.wired_total + status.wifi_clients_total + status.guest_clients_total
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tplinkrouterc6u
|
|
3
|
-
Version: 5.10.
|
|
3
|
+
Version: 5.10.2
|
|
4
4
|
Summary: TP-Link Router API (supports also Mercusys Router)
|
|
5
5
|
Home-page: https://github.com/AlexandrErohin/TP-Link-Archer-C6U
|
|
6
6
|
Author: Alex Erohin
|
|
@@ -37,6 +37,9 @@ Python package for API access and management for TP-Link and Mercusys Routers. S
|
|
|
37
37
|
[](https://pypi.org/project/tplinkrouterc6u/)
|
|
38
38
|

|
|
39
39
|
|
|
40
|
+
> [!WARNING]
|
|
41
|
+
> A new router firmware update breaks the compatibility. Please try [this fix](https://github.com/AlexandrErohin/home-assistant-tplink-router/issues/220#issuecomment-3396658175)
|
|
42
|
+
|
|
40
43
|
## Installation
|
|
41
44
|
`pip install tplinkrouterc6u`
|
|
42
45
|
|
|
@@ -301,14 +304,16 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
|
|
|
301
304
|
- Archer A20 v1.0
|
|
302
305
|
- Archer AX10 v1.0
|
|
303
306
|
- Archer AX12 v1.0
|
|
307
|
+
- Archer AX17 v1.0
|
|
304
308
|
- Archer AX20 (v1.0, v3.0)
|
|
305
309
|
- Archer AX21 (v1.20, v3.0)
|
|
306
310
|
- Archer AX23 (v1.0, v1.2)
|
|
307
311
|
- Archer AX50 v1.0
|
|
308
|
-
- Archer AX53 v2
|
|
312
|
+
- Archer AX53 (v1.0, v2)
|
|
309
313
|
- Archer AX55 (v1.0, V1.60, v4.0)
|
|
314
|
+
- Archer AX58 v1.0
|
|
310
315
|
- Archer AX72 V1
|
|
311
|
-
- Archer AX73 V1
|
|
316
|
+
- Archer AX73 (V1, V2.0)
|
|
312
317
|
- Archer AX75 V1
|
|
313
318
|
- Archer AX90 V1.20
|
|
314
319
|
- Archer AXE75 V1
|
|
@@ -338,6 +343,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
|
|
|
338
343
|
- Archer MR200 (v5, v5.3, v6.0)
|
|
339
344
|
- Archer MR550 v1
|
|
340
345
|
- Archer MR600 (v1, v2, v3)
|
|
346
|
+
- Archer NX200
|
|
341
347
|
- Archer VR400 v3
|
|
342
348
|
- Archer VR600 v3
|
|
343
349
|
- Archer VR900v
|
|
@@ -374,6 +380,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
|
|
|
374
380
|
- TL-XDR3010 V2
|
|
375
381
|
- TL-WDR3600 V1
|
|
376
382
|
- VX420-G2h v1.1
|
|
383
|
+
- VX800v v1
|
|
377
384
|
- XC220-G3v v2.30
|
|
378
385
|
### <a id="mercusys">MERCUSYS routers</a>
|
|
379
386
|
- MR47BE v1.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
test/__init__.py,sha256=McQmUjeN3AwmwdS6QNfwGXXE77OKoPK852I2BM9XsrU,210
|
|
2
2
|
test/test_client_c1200.py,sha256=Sl-85JGqINNg-ckBZCIVqY0CC-V1UOc-yiIUljtePRM,7582
|
|
3
|
-
test/test_client_c6u.py,sha256=
|
|
3
|
+
test/test_client_c6u.py,sha256=j9IpkZaWAedqkSktIGhjK8YZMhCkQhHnhqAmAWzEAYc,40399
|
|
4
4
|
test/test_client_c80.py,sha256=RY_1SgRVcQQdN9h0_IXA0YW4_0flEB_uel05QvDDfws,42359
|
|
5
5
|
test/test_client_deco.py,sha256=YPLKRD8GoyDYHfRgdXvCk8iVNw8zdMJW-AHVnNbpdTM,31719
|
|
6
6
|
test/test_client_ex.py,sha256=Kg6svEKtyGAfyF9yrLh2qZa2tK1mlEBJJwXRsq1MAjo,26591
|
|
@@ -13,7 +13,7 @@ tplinkrouterc6u/provider.py,sha256=bzH0WW2peC66f8NqfiI3t_niX6MFO8SAdKP9WZL-IV4,2
|
|
|
13
13
|
tplinkrouterc6u/client/__init__.py,sha256=KBy3fmtA9wgyFrb0Urh2x4CkKtWVnESdp-vxmuOvq0k,27
|
|
14
14
|
tplinkrouterc6u/client/c1200.py,sha256=4XEYidEGmVIJk0YQLvmTnd0Gqa7glH2gUWvjreHpWrk,3178
|
|
15
15
|
tplinkrouterc6u/client/c5400x.py,sha256=9E0omBSbWY_ljrs5MTCMu5brmrLtzsDB5O62Db8lP8Q,4329
|
|
16
|
-
tplinkrouterc6u/client/c6u.py,sha256=
|
|
16
|
+
tplinkrouterc6u/client/c6u.py,sha256=n4OMAxg0NXChYaVpWCvx3ZFUxVfynTMy-pyd1CTj9s4,19694
|
|
17
17
|
tplinkrouterc6u/client/c80.py,sha256=ArVhza_fnXcEO-_fsQOd1l2QvmSfsswtohKxrZxEnoU,18568
|
|
18
18
|
tplinkrouterc6u/client/deco.py,sha256=cpKRggKD2RvSmMZuD6tzsZmehAUCU9oLiTTHcZBW81Y,8898
|
|
19
19
|
tplinkrouterc6u/client/ex.py,sha256=gXWsVKAMo4CsX_Qeihb2iCARcsA3E9m2vgIWiJB3sjs,13197
|
|
@@ -27,8 +27,8 @@ tplinkrouterc6u/common/encryption.py,sha256=4HelTxzN6esMfDZRBt3m8bwB9Nj_biKijnCn
|
|
|
27
27
|
tplinkrouterc6u/common/exception.py,sha256=_0G8ZvW5__CsGifHrsZeULdl8c6EUD071sDCQsQgrHY,140
|
|
28
28
|
tplinkrouterc6u/common/helper.py,sha256=23b04fk9HuVinrZXMCS5R1rmF8uZ7eM-Cdnp7Br9NR0,572
|
|
29
29
|
tplinkrouterc6u/common/package_enum.py,sha256=4ykL_2Pw0nDEIH_qR9UJlFF6stTgSfhPz32r8KT-sh8,1624
|
|
30
|
-
tplinkrouterc6u-5.10.
|
|
31
|
-
tplinkrouterc6u-5.10.
|
|
32
|
-
tplinkrouterc6u-5.10.
|
|
33
|
-
tplinkrouterc6u-5.10.
|
|
34
|
-
tplinkrouterc6u-5.10.
|
|
30
|
+
tplinkrouterc6u-5.10.2.dist-info/licenses/LICENSE,sha256=YF6QR6Vjxcg5b_sYIyqkME7FZYau5TfEUGTG-0JeRK0,35129
|
|
31
|
+
tplinkrouterc6u-5.10.2.dist-info/METADATA,sha256=H6GhpsW1U050iXJUTCs52FYTOTnh0tRM8DP3WUQ6Noo,16647
|
|
32
|
+
tplinkrouterc6u-5.10.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
33
|
+
tplinkrouterc6u-5.10.2.dist-info/top_level.txt,sha256=1iSCCIueqgEkrTxtQ-jiHe99jAB10zqrVdBcwvNfe_M,21
|
|
34
|
+
tplinkrouterc6u-5.10.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|