summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/web_kbn.py9
-rw-r--r--include/py/homekit/modem/config.py9
-rw-r--r--web/kbn_templates/modems.j212
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 %}