tplinkrouterc6u 5.10.0__tar.gz → 5.10.1__tar.gz

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.
Files changed (39) hide show
  1. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/PKG-INFO +1 -1
  2. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/setup.py +1 -1
  3. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/test_client_c6u.py +63 -0
  4. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/c6u.py +13 -8
  5. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u.egg-info/PKG-INFO +1 -1
  6. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/LICENSE +0 -0
  7. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/README.md +0 -0
  8. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/setup.cfg +0 -0
  9. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/__init__.py +0 -0
  10. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/test_client_c1200.py +0 -0
  11. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/test_client_c80.py +0 -0
  12. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/test_client_deco.py +0 -0
  13. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/test_client_ex.py +0 -0
  14. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/test_client_mr.py +0 -0
  15. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/test_client_wdr.py +0 -0
  16. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/test/test_client_xdr.py +0 -0
  17. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/__init__.py +0 -0
  18. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/__init__.py +0 -0
  19. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/c1200.py +0 -0
  20. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/c5400x.py +0 -0
  21. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/c80.py +0 -0
  22. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/deco.py +0 -0
  23. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/ex.py +0 -0
  24. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/mr.py +0 -0
  25. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/vr.py +0 -0
  26. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/wdr.py +0 -0
  27. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client/xdr.py +0 -0
  28. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/client_abstract.py +0 -0
  29. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/common/__init__.py +0 -0
  30. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/common/dataclass.py +0 -0
  31. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/common/encryption.py +0 -0
  32. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/common/exception.py +0 -0
  33. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/common/helper.py +0 -0
  34. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/common/package_enum.py +0 -0
  35. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u/provider.py +0 -0
  36. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u.egg-info/SOURCES.txt +0 -0
  37. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u.egg-info/dependency_links.txt +0 -0
  38. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u.egg-info/requires.txt +0 -0
  39. {tplinkrouterc6u-5.10.0 → tplinkrouterc6u-5.10.1}/tplinkrouterc6u.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tplinkrouterc6u
3
- Version: 5.10.0
3
+ Version: 5.10.1
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
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="tplinkrouterc6u",
8
- version="5.10.0",
8
+ version="5.10.1",
9
9
  author="Alex Erohin",
10
10
  author_email="alexanderErohin@yandex.ru",
11
11
  description="TP-Link Router API (supports also Mercusys Router)",
@@ -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
  {
@@ -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
- for item in self.request('admin/wireless?form=statistics', 'operation=load'):
364
- if item['mac'] not in devices:
365
- status.wifi_clients_total += 1
366
- type = self._map_wire_type(item.get('type'))
367
- devices[item['mac']] = Device(type, EUI48(item['mac']), IPv4Address('0.0.0.0'),
368
- '')
369
- devices[item['mac']].packets_sent = item.get('txpkts')
370
- devices[item['mac']].packets_received = item.get('rxpkts')
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.0
3
+ Version: 5.10.1
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