From 2a750255ede93905e9dfa2ff0a5039fc37b0d4d8 Mon Sep 17 00:00:00 2001 From: malinovsku Date: Tue, 13 Aug 2024 00:37:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20=D1=81=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=BE=D0=BA=20=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D1=81?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=BE=D0=B7=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom_components/keenetic_api/keenetic.py | 57 ++++++++++++++-------- 1 file changed, 38 insertions(+), 19 deletions(-) diff --git a/custom_components/keenetic_api/keenetic.py b/custom_components/keenetic_api/keenetic.py index e3fc3c6..343eb3f 100644 --- a/custom_components/keenetic_api/keenetic.py +++ b/custom_components/keenetic_api/keenetic.py @@ -65,10 +65,23 @@ class DataRcInterface(): INTERFACES_WIFI_NAME = { - "WifiMaster0": "WiFi 2.4g", - "WifiMaster1": "WiFi 5g" + "WifiMaster0": "WiFi %s 2.4G", + "WifiMaster1": "WiFi %s 5G" } +LIST_INTERFACES = [ + "UsbModem", + "Davicom", + "UsbLte", + "Yota", + "PPPoE", + "SSTP", + "PPTP", + "L2TP", + "Wireguard", + "OpenVPN", + "EoIP", +] class Router: def __init__( @@ -85,7 +98,7 @@ def __init__( self.url_router = f'{host}:{port}' self._username = username self._password = password - self.request_interface = [] + self.request_interface = {} self._mac = "" self._serial_number = "" @@ -130,9 +143,11 @@ async def async_setup_obj(self): self._hw_type = data_show_system_mode["active"] data_show_rc_interface_ip_global = await self.show_rc_interface_ip_global() - for row in data_show_rc_interface_ip_global: - self.request_interface.append(row) - + data_show_interface = await self.show_interface() + for interface, data_interface in data_show_interface.items(): + if interface in data_show_rc_interface_ip_global or data_interface.get('type', 'NO') in LIST_INTERFACES: + self.request_interface[interface] = f"{data_interface['type']} {data_interface.get('description', '')}" + _LOGGER.debug(f'{self._mac} request_interface - {self.request_interface}') return True @@ -227,24 +242,28 @@ async def show_interface(self): async def show_rc_interface(self): interfaces = await self.api("get", "/rci/show/rc/interface") interface_wifi = {} - for interface in interfaces: - interf = interfaces[interface] - if (interf.get("authentication", False) + for interface, interf in interfaces.items(): + if ( + interf.get("authentication", False) and interf.get("authentication").get("wpa-psk", False) - and interf.get("authentication").get("wpa-psk").get("psk", False)): + and interf.get("authentication").get("wpa-psk").get("psk", False) + ): psw = interf["authentication"]["wpa-psk"]["psk"] else: psw = None - nm_inerface = f"{INTERFACES_WIFI_NAME.get(interface.split('/')[0], interface)} {interf.get('ssid', '')}" + if not interf.get('ssid', False): + nm_inerface = interface + else: + nm_inerface = (f"{INTERFACES_WIFI_NAME.get(interface.split('/')[0], interface)}" % interf.get('ssid', "nameless")) interface_wifi[interface] = DataRcInterface( - interface, - nm_inerface, - interface.split('/')[0], - interf.get("ssid", False), - psw, - interf.get("up", False), - interf.get("rename", None), - interf.get("description", None), + interface, + nm_inerface, + interface.split('/')[0], + interf.get("ssid", False), + psw, + interf.get("up", False), + interf.get("rename", None), + interf.get("description", None), ) return interface_wifi