feat(satellite): der Satelliten-Rechner steht selbst mit in der Geraeteliste
Der Satellit laeuft auf einem ganz normalen Rechner — bei Stefan auf duffy-desktop. Dort laufen typischerweise noch andere Dienste (FreeCAD-MCP, Web-App, Dateiserver). Bisher war ausgerechnet dieser Rechner unsichtbar: man findet sich nicht per mDNS/ARP selbst. Er erscheint jetzt als normales Geraet — ansprechbar wie jedes andere, nur zusaetzlich mit 🛰️ markiert und blau abgesetzt, damit klar ist, dass dort der Satellit traegt. Abschaltbar ueber LIST_SELF=false, falls man den Traeger bewusst heraushalten will. Nebeneffekt, der ein echtes Problem loest: der eigene Rechner gilt damit als "gefunden" und ist ohne Eintrag in TUNNEL_ALLOW tunnelbar. Genau der Fall, um den es ging — der FreeCAD-MCP laeuft auf dem Satelliten-Host selbst. Beim Zusammenfuehren bleibt die Markierung erhalten: findet mDNS denselben Rechner nochmal, haette der Merge isSatellite sonst verschluckt. hostname kommt aus demselben Grund mit in die erhaltenen Felder. Dazu ein ✎-Knopf pro Geraet in der Diagnostic: Namen vergeben, damit ARIA "duffy-desktop" ansprechen kann statt einer IP. Der Name haengt an der MAC und ueberlebt einen DHCP-Wechsel. 8 Pruefungen: Selbst-Eintrag vollstaendig, Markierung ueberlebt den Merge, mDNS-Infos bleiben erhalten, eigener Rechner ohne TUNNEL_ALLOW erlaubt, fremde IP weiterhin blockiert. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3005,6 +3005,14 @@ wss.on("connection", (ws) => {
|
||||
sendToRVS_raw({ type: "sat_discover",
|
||||
payload: { satellite: msg.satellite || "", force: true },
|
||||
timestamp: Date.now() });
|
||||
} else if (msg.action === "sat_name_set") {
|
||||
// Geraetename vergeben/entfernen. Der Satellit haengt ihn an die MAC,
|
||||
// damit ein IP-Wechsel den Namen nicht verliert.
|
||||
sendToRVS_raw({ type: "sat_name_set",
|
||||
payload: { satellite: msg.satellite || "", mac: msg.mac || "",
|
||||
ip: msg.ip || "", name: msg.name || "",
|
||||
requestId: "dn_" + Date.now() },
|
||||
timestamp: Date.now() });
|
||||
} else if (msg.action === "sat_creds_list") {
|
||||
sendToRVS_raw({ type: "sat_creds_list",
|
||||
payload: { satellite: msg.satellite || "", requestId: "dc_" + Date.now() },
|
||||
|
||||
Reference in New Issue
Block a user