diff options
-rwxr-xr-x | bin/web_kbn.py | 9 | ||||
-rw-r--r-- | include/py/homekit/modem/config.py | 9 | ||||
-rw-r--r-- | web/kbn_templates/modems.j2 | 12 |
3 files changed, 23 insertions, 7 deletions
diff --git a/bin/web_kbn.py b/bin/web_kbn.py index b400842..9e7b22a 100755 --- a/bin/web_kbn.py +++ b/bin/web_kbn.py @@ -282,7 +282,8 @@ async def index(req: web.Request): async def modems(req: web.Request): return await render(req, 'modems', title=lang('modem_statuses'), - context=dict(modems=ModemsConfig())) + context=dict(modems=ModemsConfig(), + modems_js_list=[key for key, value in ModemsConfig().items() if value['type'] == 'e3372'])) @routes.get('/modems_info.ajx') @@ -293,6 +294,9 @@ async def modems_ajx(req: web.Request): raise ValueError('invalid modem id') modem_cfg = mc.get(modem) + if modem_cfg['type'] != 'e3372': + raise ValueError('invalid modem type') + loop = asyncio.get_event_loop() modem_data = await loop.run_in_executor(None, lambda: get_modem_data(modem_cfg)) @@ -311,6 +315,9 @@ async def modems_verbose(req: web.Request): raise ValueError('invalid modem id') modem_cfg = ModemsConfig().get(modem) + if modem_cfg['type'] != 'e3372': + raise ValueError('invalid modem type') + loop = asyncio.get_event_loop() signal, status, traffic, device, dialup_conn = await loop.run_in_executor(None, lambda: get_modem_data(modem_cfg, True)) data = [ diff --git a/include/py/homekit/modem/config.py b/include/py/homekit/modem/config.py index 16d1ba0..1653751 100644 --- a/include/py/homekit/modem/config.py +++ b/include/py/homekit/modem/config.py @@ -1,5 +1,11 @@ from ..config import ConfigUnit, Translation from typing import Optional +from enum import Enum + + +class ModemType(Enum): + E3372 = 'e3372' + GPON = 'gpon' class ModemsConfig(ConfigUnit): @@ -18,7 +24,8 @@ class ModemsConfig(ConfigUnit): 'schema': { 'ip': cls._addr_schema(required=True, only_ip=True), 'gateway_ip': cls._addr_schema(required=False, only_ip=True), - 'legacy_auth': {'type': 'boolean', 'required': True} + 'legacy_auth': {'type': 'boolean', 'required': True}, + 'type': {'type': 'string', 'allowed': [t.value for t in ModemType], 'required': True} } } diff --git a/web/kbn_templates/modems.j2 b/web/kbn_templates/modems.j2 index fee1dd3..1cbf04d 100644 --- a/web/kbn_templates/modems.j2 +++ b/web/kbn_templates/modems.j2 @@ -3,14 +3,16 @@ {% block content %} {{ breadcrumbs([{'text': 'modems'|lang}]) }} -{% for modem in modems %} -<h6 class="text-primary{% if not loop.first %} mt-4{% endif %}">{{ (modem|lang('modems'))['full'] }}</h6> -<div id="modem_data_{{ modem }}"> - {% include "loading.j2" %} +{% for modem, mdata in modems.items() %} + {% if mdata['type'] == 'e3372' %} + <h6 class="text-primary{% if not loop.first %} mt-4{% endif %}">{{ (modem|lang('modems'))['full'] }}</h6> + <div id="modem_data_{{ modem }}"> + {% include "loading.j2" %} + {% endif %} </div> {% endfor %} {% endblock %} {% block js %} -ModemStatus.init({{ modems.keys()|tojson }}); +ModemStatus.init({{ modems_js_list|tojson }}); {% endblock %} |