Skip to content

Commit c093c49

Browse files
Merge pull request #77 from 404GamerNotFound/codex/add-compatible-server-display-for-hacs-addon-enxv6x
Add Zeroconf discovery
2 parents 840bf2a + 42d698a commit c093c49

File tree

6 files changed

+31
-6
lines changed

6 files changed

+31
-6
lines changed

README.de.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Zusätzlich steht nun ein **interaktives Terminal** über die Weboberfläche zur
2222
- Unterstützt Passwort- und SSH-Schlüssel-Authentifizierung.
2323
- Interaktives Terminal über die Add-on-Weboberfläche.
2424
- Home-Assistant-Services und Schaltflächen zum Ausführen von Befehlen, Paket-Updates und Reboots.
25-
- Automatische Erkennung von SSH-fähigen Hosts im lokalen Netzwerk zur schnellen Einrichtung, manuelle Konfiguration bleibt weiterhin möglich.
25+
- Automatische Erkennung von SSH-fähigen Hosts im lokalen Netzwerk zur schnellen Einrichtung, manuelle Konfiguration bleibt weiterhin möglich. Kompatible Server, die sich per Zeroconf ankündigen, erscheinen außerdem im Bereich **Entdeckt** von Home Assistant.
2626
- Sammelt:
2727
- CPU-Auslastung (%)
2828
- Speicherauslastung (%)

README.es.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Además de la recopilación de estadísticas, el complemento incluye ahora un te
2323
- Soporta autenticación por contraseña y por clave SSH.
2424
- Terminal interactivo accesible desde la interfaz web del complemento.
2525
- Servicios de Home Assistant y entidades de botón para ejecutar comandos remotos, actualizar paquetes y reiniciar.
26-
- Detecta automáticamente hosts con SSH en la red local para una configuración rápida, manteniendo la posibilidad de configuración manual.
26+
- Detecta automáticamente hosts con SSH en la red local para una configuración rápida, manteniendo la posibilidad de configuración manual. Los servidores compatibles que se anuncian mediante Zeroconf también aparecen en la sección **Descubierto** de Home Assistant.
2727
- Recopila:
2828
- Uso de CPU (%)
2929
- Uso de memoria (%)

README.fr.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ En plus de la collecte de statistiques, le module inclut désormais un terminal
2323
- Prise en charge de l'authentification par mot de passe et par clé SSH.
2424
- Terminal interactif accessible via l'interface web du module.
2525
- Services Home Assistant et entités bouton pour exécuter des commandes à distance, mettre à jour les paquets et redémarrer.
26-
- Détecte automatiquement les hôtes compatibles SSH sur le réseau local pour une configuration rapide, tout en permettant une configuration manuelle.
26+
- Détecte automatiquement les hôtes compatibles SSH sur le réseau local pour une configuration rapide, tout en permettant une configuration manuelle. Les serveurs compatibles s'annonçant via Zeroconf apparaissent également dans la section **Découvert** de Home Assistant.
2727
- Collecte :
2828
- Utilisation du CPU (%)
2929
- Utilisation de la mémoire (%)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ In addition to statistics collection, the add-on now includes an **interactive w
2525
- Supports password and SSH key authentication.
2626
- Interactive terminal accessible via the add-on web UI.
2727
- Home Assistant services and button entities for remote commands, package updates, and reboots.
28-
- Automatically discovers SSH-enabled hosts on your local network for quick setup, while still allowing manual configuration.
28+
- Automatically discovers SSH-enabled hosts on your local network for quick setup, while still allowing manual configuration. Compatible servers announcing themselves via Zeroconf also appear under Home Assistant's **Discovered** section.
2929
- Collects:
3030
- CPU usage (%)
3131
- Memory usage (%)

custom_components/vserver_ssh_stats/config_flow.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
1919

2020
VERSION = 1
2121

22+
def __init__(self) -> None:
23+
"""Initialize the config flow."""
24+
self._discovered_host: str | None = None
25+
self._discovered_name: str | None = None
26+
2227
async def async_step_user(self, user_input: dict[str, Any] | None = None):
2328
"""Handle the initial step."""
2429
if user_input is not None:
@@ -49,8 +54,22 @@ async def async_step_user(self, user_input: dict[str, Any] | None = None):
4954
hosts = await self._get_discovered_hosts()
5055
return self.async_show_form(step_id="user", data_schema=self._build_schema(hosts))
5156

57+
async def async_step_zeroconf(self, discovery_info: dict[str, Any]):
58+
"""Handle zeroconf discovery."""
59+
host = discovery_info.get("host")
60+
if not host:
61+
return self.async_abort(reason="unknown")
62+
self._discovered_host = host
63+
self._discovered_name = discovery_info.get("hostname", host)
64+
self.context["title_placeholders"] = {"name": self._discovered_name}
65+
await self.async_set_unique_id(host)
66+
self._abort_if_unique_id_configured()
67+
return await self.async_step_user()
68+
5269
async def _get_discovered_hosts(self) -> list[str]:
5370
"""Return a list of hosts with an open SSH port."""
71+
if self._discovered_host:
72+
return [self._discovered_host]
5473
network = guess_local_network()
5574
try:
5675
return await discover_ssh_hosts(network)
@@ -73,10 +92,11 @@ def _build_schema(self, hosts: list[str]) -> vol.Schema:
7392
else:
7493
host_field = str
7594
default_host = vol.UNDEFINED
95+
default_name = self._discovered_name if self._discovered_name else vol.UNDEFINED
7696
return vol.Schema(
7797
{
7898
vol.Required("interval", default=DEFAULT_INTERVAL): int,
79-
vol.Required("name"): str,
99+
vol.Required("name", default=default_name): str,
80100
vol.Required("host", default=default_host): host_field,
81101
vol.Required("username"): str,
82102
vol.Optional("password"): str,

custom_components/vserver_ssh_stats/manifest.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,10 @@
1212
"requirements": [
1313
"paramiko>=3.4.0"
1414
],
15-
"version": "1.2.3"
15+
"version": "1.2.3",
16+
"zeroconf": [
17+
{
18+
"type": "_ssh._tcp.local."
19+
}
20+
]
1621
}

0 commit comments

Comments
 (0)