tplinkrouterc6u 5.9.1__py3-none-any.whl → 5.9.3__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_ex.py +82 -0
- tplinkrouterc6u/client/ex.py +3 -3
- tplinkrouterc6u/client/mr.py +4 -2
- {tplinkrouterc6u-5.9.1.dist-info → tplinkrouterc6u-5.9.3.dist-info}/METADATA +4 -1
- {tplinkrouterc6u-5.9.1.dist-info → tplinkrouterc6u-5.9.3.dist-info}/RECORD +8 -8
- {tplinkrouterc6u-5.9.1.dist-info → tplinkrouterc6u-5.9.3.dist-info}/WHEEL +0 -0
- {tplinkrouterc6u-5.9.1.dist-info → tplinkrouterc6u-5.9.3.dist-info}/licenses/LICENSE +0 -0
- {tplinkrouterc6u-5.9.1.dist-info → tplinkrouterc6u-5.9.3.dist-info}/top_level.txt +0 -0
test/test_client_ex.py
CHANGED
|
@@ -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",'
|
tplinkrouterc6u/client/ex.py
CHANGED
|
@@ -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
|
|
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']))
|
tplinkrouterc6u/client/mr.py
CHANGED
|
@@ -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
|
|
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.
|
|
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.
|
|
3
|
+
Version: 5.9.3
|
|
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
|
|
@@ -314,6 +314,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
|
|
|
314
314
|
- Archer AX3000 V1
|
|
315
315
|
- Archer AX6000 V1
|
|
316
316
|
- Archer AX11000 V1
|
|
317
|
+
- Archer BE230 v1.0
|
|
317
318
|
- Archer BE400 v1.0
|
|
318
319
|
- Archer BE550 v1.0
|
|
319
320
|
- Archer BE800 v1.0
|
|
@@ -358,6 +359,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
|
|
|
358
359
|
- TD-W9960 (v1, V1.20)
|
|
359
360
|
- TL-MR100 v2.0
|
|
360
361
|
- TL-MR105
|
|
362
|
+
- TL-MR110-Outdoor v1.0
|
|
361
363
|
- TL-MR6400 (v5, v5.3)
|
|
362
364
|
- TL-MR6500v
|
|
363
365
|
- TL-WA1201 3.0
|
|
@@ -370,6 +372,7 @@ or you have TP-link C5400X or similar router you need to get web encrypted passw
|
|
|
370
372
|
- MR47BE v1.0
|
|
371
373
|
- MR50G 1.0
|
|
372
374
|
- H60XR 1.0
|
|
375
|
+
- Halo H80X 1.0
|
|
373
376
|
|
|
374
377
|
Please let me know if you have tested integration with any other model. Open an issue with info about router's model, hardware and firmware versions.
|
|
375
378
|
|
|
@@ -3,7 +3,7 @@ test/test_client_c1200.py,sha256=Sl-85JGqINNg-ckBZCIVqY0CC-V1UOc-yiIUljtePRM,758
|
|
|
3
3
|
test/test_client_c6u.py,sha256=VpxF5etPtGYuXX9TfUl78tOj0pjozvPkrVx6FKbZDjQ,37585
|
|
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
|
-
test/test_client_ex.py,sha256=
|
|
6
|
+
test/test_client_ex.py,sha256=Kg6svEKtyGAfyF9yrLh2qZa2tK1mlEBJJwXRsq1MAjo,26591
|
|
7
7
|
test/test_client_mr.py,sha256=lePxkmjcPzcrSFcaT8bT67L154cVJIOWrFlXMDOa8oY,33423
|
|
8
8
|
test/test_client_wdr.py,sha256=0ZnRNP57MbuMv2cxFS8iIoVyv8Q6gtY0Q03gtHp9AWY,13492
|
|
9
9
|
test/test_client_xdr.py,sha256=mgn-xL5mD5sHD8DjTz9vpY7jeh4Ob6Um6Y8v5Qgx2jA,23374
|
|
@@ -16,8 +16,8 @@ tplinkrouterc6u/client/c5400x.py,sha256=9E0omBSbWY_ljrs5MTCMu5brmrLtzsDB5O62Db8l
|
|
|
16
16
|
tplinkrouterc6u/client/c6u.py,sha256=3Jon6_WZkaCyrbTAp9TckB-SIXLP_JyB5gtRI65IuVI,19485
|
|
17
17
|
tplinkrouterc6u/client/c80.py,sha256=ArVhza_fnXcEO-_fsQOd1l2QvmSfsswtohKxrZxEnoU,18568
|
|
18
18
|
tplinkrouterc6u/client/deco.py,sha256=cpKRggKD2RvSmMZuD6tzsZmehAUCU9oLiTTHcZBW81Y,8898
|
|
19
|
-
tplinkrouterc6u/client/ex.py,sha256=
|
|
20
|
-
tplinkrouterc6u/client/mr.py,sha256=
|
|
19
|
+
tplinkrouterc6u/client/ex.py,sha256=gXWsVKAMo4CsX_Qeihb2iCARcsA3E9m2vgIWiJB3sjs,13197
|
|
20
|
+
tplinkrouterc6u/client/mr.py,sha256=keMii7cetOvY1iq9_gWbWMWjuPShHhLXyrbGwX4Og44,26136
|
|
21
21
|
tplinkrouterc6u/client/vr.py,sha256=7Tbu0IrWtr4HHtyrnLFXEJi1QctzhilciL7agtwQ0R8,5025
|
|
22
22
|
tplinkrouterc6u/client/wdr.py,sha256=i54PEifjhfOScDpgNBXygw9U4bfsVtle846_YjnDoBs,21679
|
|
23
23
|
tplinkrouterc6u/client/xdr.py,sha256=QaZ_5vCaf8BV_JEs3S2Nz-QDREBYHGh3OUWIVS-fefY,10406
|
|
@@ -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.9.
|
|
31
|
-
tplinkrouterc6u-5.9.
|
|
32
|
-
tplinkrouterc6u-5.9.
|
|
33
|
-
tplinkrouterc6u-5.9.
|
|
34
|
-
tplinkrouterc6u-5.9.
|
|
30
|
+
tplinkrouterc6u-5.9.3.dist-info/licenses/LICENSE,sha256=YF6QR6Vjxcg5b_sYIyqkME7FZYau5TfEUGTG-0JeRK0,35129
|
|
31
|
+
tplinkrouterc6u-5.9.3.dist-info/METADATA,sha256=rB3LqDkDGKJxgfP-LN5N0lzfQqaVi-5Uo0PFGfyIBek,15675
|
|
32
|
+
tplinkrouterc6u-5.9.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
33
|
+
tplinkrouterc6u-5.9.3.dist-info/top_level.txt,sha256=1iSCCIueqgEkrTxtQ-jiHe99jAB10zqrVdBcwvNfe_M,21
|
|
34
|
+
tplinkrouterc6u-5.9.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|