tplinkrouterc6u 5.9.0__tar.gz → 5.9.2__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.9.0 → tplinkrouterc6u-5.9.2}/PKG-INFO +4 -2
  2. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/README.md +3 -1
  3. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/setup.py +1 -1
  4. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/test_client_ex.py +82 -0
  5. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/ex.py +3 -3
  6. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/mr.py +4 -2
  7. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u.egg-info/PKG-INFO +4 -2
  8. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/LICENSE +0 -0
  9. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/setup.cfg +0 -0
  10. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/__init__.py +0 -0
  11. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/test_client_c1200.py +0 -0
  12. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/test_client_c6u.py +0 -0
  13. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/test_client_c80.py +0 -0
  14. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/test_client_deco.py +0 -0
  15. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/test_client_mr.py +0 -0
  16. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/test_client_wdr.py +0 -0
  17. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/test/test_client_xdr.py +0 -0
  18. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/__init__.py +0 -0
  19. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/__init__.py +0 -0
  20. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/c1200.py +0 -0
  21. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/c5400x.py +0 -0
  22. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/c6u.py +0 -0
  23. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/c80.py +0 -0
  24. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/deco.py +0 -0
  25. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/vr.py +0 -0
  26. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/wdr.py +0 -0
  27. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client/xdr.py +0 -0
  28. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/client_abstract.py +0 -0
  29. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/common/__init__.py +0 -0
  30. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/common/dataclass.py +0 -0
  31. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/common/encryption.py +0 -0
  32. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/common/exception.py +0 -0
  33. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/common/helper.py +0 -0
  34. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/common/package_enum.py +0 -0
  35. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u/provider.py +0 -0
  36. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u.egg-info/SOURCES.txt +0 -0
  37. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u.egg-info/dependency_links.txt +0 -0
  38. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/tplinkrouterc6u.egg-info/requires.txt +0 -0
  39. {tplinkrouterc6u-5.9.0 → tplinkrouterc6u-5.9.2}/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.9.0
3
+ Version: 5.9.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
@@ -308,6 +308,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
308
308
  - Archer AX75 V1
309
309
  - Archer AX90 V1.20
310
310
  - Archer AXE75 V1
311
+ - Archer AXE5400 v1.0
311
312
  - Archer AXE16000
312
313
  - Archer AX1800
313
314
  - Archer AX3000 V1
@@ -320,7 +321,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
320
321
  - Archer BE3600 1.6
321
322
  - Archer C1200 (v1.0, v2.0)
322
323
  - Archer C2300 (v1.0, v2.0)
323
- - Archer C6 (v2.0, v3.0, 4.0)
324
+ - Archer C6 (v2.0, v3.0, v3.20, 4.0)
324
325
  - Archer C6U v1.0
325
326
  - Archer C7 (v4.0, v5.0)
326
327
  - Archer C24 (1.0, 2.0)
@@ -331,6 +332,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
331
332
  - Archer MR200 (v5, v5.3, v6.0)
332
333
  - Archer MR550 v1
333
334
  - Archer MR600 (v1, v2, v3)
335
+ - Archer VR400 v3
334
336
  - Archer VR600 v3
335
337
  - Archer VR900v
336
338
  - Archer VR1200v v1
@@ -276,6 +276,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
276
276
  - Archer AX75 V1
277
277
  - Archer AX90 V1.20
278
278
  - Archer AXE75 V1
279
+ - Archer AXE5400 v1.0
279
280
  - Archer AXE16000
280
281
  - Archer AX1800
281
282
  - Archer AX3000 V1
@@ -288,7 +289,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
288
289
  - Archer BE3600 1.6
289
290
  - Archer C1200 (v1.0, v2.0)
290
291
  - Archer C2300 (v1.0, v2.0)
291
- - Archer C6 (v2.0, v3.0, 4.0)
292
+ - Archer C6 (v2.0, v3.0, v3.20, 4.0)
292
293
  - Archer C6U v1.0
293
294
  - Archer C7 (v4.0, v5.0)
294
295
  - Archer C24 (1.0, 2.0)
@@ -299,6 +300,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
299
300
  - Archer MR200 (v5, v5.3, v6.0)
300
301
  - Archer MR550 v1
301
302
  - Archer MR600 (v1, v2, v3)
303
+ - Archer VR400 v3
302
304
  - Archer VR600 v3
303
305
  - Archer VR900v
304
306
  - Archer VR1200v v1
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="tplinkrouterc6u",
8
- version="5.9.0",
8
+ version="5.9.2",
9
9
  author="Alex Erohin",
10
10
  author_email="alexanderErohin@yandex.ru",
11
11
  description="TP-Link Router API (supports also Mercusys Router)",
@@ -122,6 +122,88 @@ class TestTPLinkEXClient(TestCase):
122
122
  self.assertEqual(status.devices[1].packets_sent, None) # TODO
123
123
  self.assertEqual(status.devices[1].packets_received, None) # TODO
124
124
 
125
+ def test_get_status(self) -> None:
126
+
127
+ DEV2_ADT_LAN = ('{"data":[{"MACAddress":"a0:28:84:de:dd:5c","IPAddress":"192.168.4.1","stack":"1,0,0,0,0,0"}],'
128
+ '"operation":"gl","oid":"DEV2_ADT_LAN","success":true}')
129
+ DEV2_ADT_WAN = ('{"data":[{"enable":"1","stack":"1,0,0,0,0,0"}],"operation":"gl",'
130
+ '"oid":"DEV2_ADT_WAN","success":true}')
131
+ DEV2_ADT_WIFI_COMMON = ('{"data":[{"primaryEnable":"1","guestEnable":"0","stack":"1,0,0,0,0,0"},'
132
+ '{"primaryEnable":"0","guestEnable":"1","stack":"2,0,0,0,0,0"}],"operation":"gl",'
133
+ '"oid":"DEV2_ADT_WIFI_COMMON","success":true}')
134
+ DEV2_HOST_ENTRY = ('{"data":[{"active":"1","X_TP_LanConnType":"0","physAddress":"66-E2-02-BD-B5-1B",'
135
+ '"IPAddress":"192.168.30.10","hostName":"host1","stack":"1,0,0,0,0,0"},'
136
+ '{"active":"1","X_TP_LanConnType":"1","physAddress":"F4-A3-86-2D-41-B5",'
137
+ '"IPAddress":"192.168.30.11","hostName":"host2","stack":"2,0,0,0,0,0"}],"operation":"gl",'
138
+ '"oid":"DEV2_HOST_ENTRY","success":true}')
139
+ DEV2_MEM_STATUS = ('{"data":{"total":"192780","free":"78400","stack":"0,0,0,0,0,0"},"operation":"go",'
140
+ '"oid":"DEV2_MEM_STATUS","success":true}')
141
+ DEV2_PROC_STATUS = ('{"data":{"CPUUsage":"47","stack":"0,0,0,0,0,0"},"operation":"go",'
142
+ '"oid":"DEV2_PROC_STATUS","success":true}')
143
+
144
+ class TPLinkEXClientTest(TPLinkEXClient):
145
+ self._token = True
146
+
147
+ def _request(self, url, method='POST', data_str=None, encrypt=False):
148
+ if 'DEV2_ADT_LAN' in data_str:
149
+ return 200, DEV2_ADT_LAN
150
+ elif 'DEV2_ADT_WAN' in data_str:
151
+ return 200, DEV2_ADT_WAN
152
+ elif 'DEV2_ADT_WIFI_COMMON' in data_str:
153
+ return 200, DEV2_ADT_WIFI_COMMON
154
+ elif 'DEV2_HOST_ENTRY' in data_str:
155
+ return 200, DEV2_HOST_ENTRY
156
+ elif 'DEV2_MEM_STATUS' in data_str:
157
+ return 200, DEV2_MEM_STATUS
158
+ elif 'DEV2_PROC_STATUS' in data_str:
159
+ return 200, DEV2_PROC_STATUS
160
+ raise ClientException()
161
+
162
+ client = TPLinkEXClientTest('', '')
163
+ status = client.get_status()
164
+
165
+ self.assertIsInstance(status, Status)
166
+ self.assertEqual(status.wan_macaddr, None)
167
+ self.assertEqual(status.lan_macaddr, 'A0-28-84-DE-DD-5C')
168
+ self.assertIsInstance(status.lan_macaddress, EUI48)
169
+ self.assertEqual(status.wan_ipv4_addr, None)
170
+ self.assertEqual(status.lan_ipv4_addr, '192.168.4.1')
171
+ self.assertEqual(status.wan_ipv4_gateway, None)
172
+ self.assertEqual(status.wired_total, 1)
173
+ self.assertEqual(status.wifi_clients_total, 1)
174
+ self.assertEqual(status.guest_clients_total, 0)
175
+ self.assertEqual(status.clients_total, 2)
176
+ self.assertEqual(status.guest_2g_enable, False)
177
+ self.assertEqual(status.guest_5g_enable, True)
178
+ self.assertEqual(status.iot_2g_enable, None)
179
+ self.assertEqual(status.iot_5g_enable, None)
180
+ self.assertEqual(status.wifi_2g_enable, True)
181
+ self.assertEqual(status.wifi_5g_enable, False)
182
+ self.assertEqual(status.wan_ipv4_uptime, None)
183
+ self.assertGreaterEqual(status.mem_usage, 0)
184
+ self.assertLessEqual(status.mem_usage, 1)
185
+ self.assertGreaterEqual(status.cpu_usage, 0)
186
+ self.assertLessEqual(status.cpu_usage, 1)
187
+ self.assertEqual(len(status.devices), 2)
188
+ self.assertIsInstance(status.devices[0], Device)
189
+ self.assertEqual(status.devices[0].type, Connection.WIRED)
190
+ self.assertEqual(status.devices[0].macaddr, '66-E2-02-BD-B5-1B')
191
+ self.assertIsInstance(status.devices[0].macaddress, EUI48)
192
+ self.assertEqual(status.devices[0].ipaddr, '192.168.30.10')
193
+ self.assertIsInstance(status.devices[0].ipaddress, IPv4Address)
194
+ self.assertEqual(status.devices[0].hostname, 'host1')
195
+ self.assertEqual(status.devices[0].packets_sent, None)
196
+ self.assertEqual(status.devices[0].packets_received, None)
197
+ self.assertIsInstance(status.devices[1], Device)
198
+ self.assertEqual(status.devices[1].type, Connection.HOST_2G)
199
+ self.assertEqual(status.devices[1].macaddr, 'F4-A3-86-2D-41-B5')
200
+ self.assertIsInstance(status.devices[1].macaddress, EUI48)
201
+ self.assertEqual(status.devices[1].ipaddr, '192.168.30.11')
202
+ self.assertIsInstance(status.devices[1].ipaddress, IPv4Address)
203
+ self.assertEqual(status.devices[1].hostname, 'host2')
204
+ self.assertEqual(status.devices[1].packets_sent, None) # TODO
205
+ self.assertEqual(status.devices[1].packets_received, None) # TODO
206
+
125
207
  def test_get_ipv4_reservations(self) -> None:
126
208
 
127
209
  response = ('{"data":[{"enable":"1","chaddr":"bf:75:44:4c:dc:9e","yiaddr":"192.168.8.21",'
@@ -109,9 +109,9 @@ class TPLinkEXClient(TPLinkMRClientBase):
109
109
  for item in values[1]:
110
110
  if int(item['enable']) == 0 and values[1].__class__ == list:
111
111
  continue
112
- status._wan_macaddr = EUI48(item['MACAddr']) if item['MACAddr'] else None
113
- status._wan_ipv4_addr = IPv4Address(item['connIPv4Address'])
114
- status._wan_ipv4_gateway = IPv4Address(item['connIPv4Gateway'])
112
+ status._wan_macaddr = EUI48(item['MACAddr']) if item.get('MACAddr') else None
113
+ status._wan_ipv4_addr = IPv4Address(item['connIPv4Address']) if item.get('connIPv4Address') else None
114
+ status._wan_ipv4_gateway = IPv4Address(item['connIPv4Gateway']) if item.get('connIPv4Address') else None
115
115
 
116
116
  if values[2].__class__ != list:
117
117
  status.wifi_2g_enable = bool(int(values[2]['primaryEnable']))
@@ -550,10 +550,12 @@ class TPLinkMRClientBase(AbstractRouter):
550
550
  raise Exception('Unsupported method ' + str(method))
551
551
 
552
552
  # sometimes we get 500 here, not sure why... just retry the request
553
- if r.status_code != 500 and '<title>500 Internal Server Error</title>' not in r.text:
553
+ if (r.status_code not in [500, 406]
554
+ and '<title>500 Internal Server Error</title>' not in r.text
555
+ and '<title>406 Not Acceptable</title>' not in r.text):
554
556
  break
555
557
 
556
- sleep(0.05)
558
+ sleep(0.1)
557
559
  retry += 1
558
560
 
559
561
  # decrypt the response, if needed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tplinkrouterc6u
3
- Version: 5.9.0
3
+ Version: 5.9.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
@@ -308,6 +308,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
308
308
  - Archer AX75 V1
309
309
  - Archer AX90 V1.20
310
310
  - Archer AXE75 V1
311
+ - Archer AXE5400 v1.0
311
312
  - Archer AXE16000
312
313
  - Archer AX1800
313
314
  - Archer AX3000 V1
@@ -320,7 +321,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
320
321
  - Archer BE3600 1.6
321
322
  - Archer C1200 (v1.0, v2.0)
322
323
  - Archer C2300 (v1.0, v2.0)
323
- - Archer C6 (v2.0, v3.0, 4.0)
324
+ - Archer C6 (v2.0, v3.0, v3.20, 4.0)
324
325
  - Archer C6U v1.0
325
326
  - Archer C7 (v4.0, v5.0)
326
327
  - Archer C24 (1.0, 2.0)
@@ -331,6 +332,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
331
332
  - Archer MR200 (v5, v5.3, v6.0)
332
333
  - Archer MR550 v1
333
334
  - Archer MR600 (v1, v2, v3)
335
+ - Archer VR400 v3
334
336
  - Archer VR600 v3
335
337
  - Archer VR900v
336
338
  - Archer VR1200v v1
File without changes