tplinkrouterc6u 5.9.0__py3-none-any.whl → 5.9.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_ex.py +82 -0
- tplinkrouterc6u/client/ex.py +3 -3
- tplinkrouterc6u/client/mr.py +4 -2
- {tplinkrouterc6u-5.9.0.dist-info → tplinkrouterc6u-5.9.2.dist-info}/METADATA +4 -2
- {tplinkrouterc6u-5.9.0.dist-info → tplinkrouterc6u-5.9.2.dist-info}/RECORD +8 -8
- {tplinkrouterc6u-5.9.0.dist-info → tplinkrouterc6u-5.9.2.dist-info}/WHEEL +1 -1
- {tplinkrouterc6u-5.9.0.dist-info → tplinkrouterc6u-5.9.2.dist-info}/licenses/LICENSE +0 -0
- {tplinkrouterc6u-5.9.0.dist-info → tplinkrouterc6u-5.9.2.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.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
|
|
@@ -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.2.dist-info/licenses/LICENSE,sha256=YF6QR6Vjxcg5b_sYIyqkME7FZYau5TfEUGTG-0JeRK0,35129
|
|
31
|
+
tplinkrouterc6u-5.9.2.dist-info/METADATA,sha256=DWkRDgWo-Pz67-b0bOySwg0AFkvx2jYAYUWq2NRQF9E,15615
|
|
32
|
+
tplinkrouterc6u-5.9.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
33
|
+
tplinkrouterc6u-5.9.2.dist-info/top_level.txt,sha256=1iSCCIueqgEkrTxtQ-jiHe99jAB10zqrVdBcwvNfe_M,21
|
|
34
|
+
tplinkrouterc6u-5.9.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|