[Frage] Gastzugang WPS ohne WEBUI aktivieren

tt7753

Neuer User
Mitglied seit
29 Jan 2016
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Hallo, ich würde gerne im Eingangsbereich des Hauses einen umfunktionierten Amazon Dash Button installieren, der beim Betätigen das WPS des Gastzugangs aktiviert und somit den Gästen erlaubt sich schnell und bequem zu verbinden.

Leider habe ich im Internet keine Möglichkeit außer der Weboberfläche gefunden das WPS zu aktivieren.
Gibt es irgendeine Möglichkeit es anderweitig zu aktivieren?


PS:

Auf der FRITZ!Box 7490 läuft Freetz.
 

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,879
Punkte für Reaktionen
959
Punkte
113
X_AVM-DE_SetWPSConfig() auf dem WLANConfiguration-Interface, AVM-Beschreibung: https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wlanconfigSCPD.pdf

Ein Aufruf mit "pbc" für den Modus und leerer PIN startet denselben WPS-Vorgang, der über das GUI als "Push-Button-Methode" eingestellt (und gestartet) werden kann.

Das ist dann (trotz Freetz) der bessere Weg, da dieses Interface dokumentiert ist und man sich nicht mit dem Lua-Variableninterface oder "ctlmgr_ctl" abmühen muß.

Beim Abfragen des aktuellen Zustands (ich würde das vorher machen, weil mehrfaches Starten über den Button (bzw. sein API-Äquivalent) sicherlich auch Blödsinn ist bzw. ich nicht mal sicher weiß, ob das nicht als "Abbruch" für gerade laufende Anmeldungen interpretiert wird, auch wenn es mit "stop" dafür einen gesonderten Modus gibt, der aber m.E. eher als "Abbrechen" im Sinne von "keine neuen Anmeldungen mehr starten" anzusehen wäre) muß man dann aufpassen, weil die Abfragefunktion spaßigerweise "GetWPSInfo" heißt und nicht "GetWPSConfig".

Hat mal also irgendwo seinen Handler für den Dash-Button, kann man von dort über TR-064 den aktuellen Zustand des WPS abfragen und bei Bedarf auch eine PBC-"Warteschleife" starten. Auch andere Modi (inkl. PIN-basierter) sind über diese Funktion erreichbar.

Ist WPS ursprünglich deaktiviert, wird als Modus "other" ausgegeben und als Status "off" - aber die TR-064-Aufrufe "überstimmen" auch jede GUI-Einstellung hinsichtlich WPS und meines Wissens gibt es im Anschluß keine (programmierbare) Möglichkeit, das WPS wieder komplett abzuschalten (so daß über den Button am Gerät dann auch kein Unbefugter eine neue WPS-Verbindung starten kann).

Auch wenn das hier vielleicht keine Rolle spielt, sehe ich das Fehlen der "off"-Einstellung über TR-064 als "unschön" an - hat man erst einmal WPS genutzt über TR-064, kann man (außer mit der Tastensperre, die dann auch DECT u.a. blockiert) nicht länger verhindern, daß jemand (mit Zugang zur FRITZ!Box) über das Drücken des WLAN/WPS-Buttons weitere Clients ins WLAN lassen kann.

EDIT: Wobei ich gerade beim nochmaligen Lesen bemerke, daß das Ganze hier für den Gastzugang umgesetzt werden soll - die von mir erwähnte Funktion ist aber für das "normale WLAN". Damit passe ich dann bei der konkreten Frage für das Gäste-WLAN doch ... da darf man natürlich nicht die erwähnte Aktion verwenden, sonst landen die Clients im falschen Netz.

Damit bleibt dann doch nur das Nachsehen in der Lua-Seite, welche Variable (des "ctlmgr") gesetzt wird, wenn der WPS-Button für das Gäste-Netz im GUI gedrückt wird ... die kann man dann sicherlich auch "von Hand" setzen - braucht halt irgendeine (selbstgebaute) Schnittstelle im FRITZ!OS, damit da ein "ctlmgr_ctl" (oder das Variableninterface) aufgerufen werden kann.

Und weil ich oben so eine Grütze zum TR-064 geschrieben habe, da ich nicht richtig lesen konnte, habe ich noch nachgesehen, wie das (vor Mesh) gestartet wird - "wlan:settings/wps_mode" wird (bei der 6490 zumindest) auf "2002" gesetzt (in der Seite "guest_access.lua" unter "/usr/www/avm/wlan" - ggf. ist das bei anderen Modellen ein anderer Wert, glaube ich aber eher nicht und das sehe ich dann doch nicht noch nach). Ob das schon reicht, müßte man ausprobieren ... ansonsten muß man erkunden, was die Seite "wlan_test.lua" damit noch zu tun haben könnte.
 

tt7753

Neuer User
Mitglied seit
29 Jan 2016
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
EDIT: Wobei ich gerade beim nochmaligen Lesen bemerke, daß das Ganze hier für den Gastzugang umgesetzt werden soll - die von mir erwähnte Funktion ist aber für das "normale WLAN". Damit passe ich dann bei der konkreten Frage für das Gäste-WLAN doch ... da darf man natürlich nicht die erwähnte Aktion verwenden, sonst landen die Clients im falschen Netz.

Damit bleibt dann doch nur das Nachsehen in der Lua-Seite, welche Variable (des "ctlmgr") gesetzt wird, wenn der WPS-Button für das Gäste-Netz im GUI gedrückt wird ... die kann man dann sicherlich auch "von Hand" setzen - braucht halt irgendeine (selbstgebaute) Schnittstelle im FRITZ!OS, damit da ein "ctlmgr_ctl" (oder das Variableninterface) aufgerufen werden kann.

Und weil ich oben so eine Grütze zum TR-064 geschrieben habe, da ich nicht richtig lesen konnte, habe ich noch nachgesehen, wie das (vor Mesh) gestartet wird - "wlan:settings/wps_mode" wird (bei der 6490 zumindest) auf "2002" gesetzt (in der Seite "guest_access.lua" unter "/usr/www/avm/wlan" - ggf. ist das bei anderen Modellen ein anderer Wert, glaube ich aber eher nicht und das sehe ich dann doch nicht noch nach). Ob das schon reicht, müßte man ausprobieren ... ansonsten muß man erkunden, was die Seite "wlan_test.lua" damit noch zu tun haben könnte.

Erstmal vielen Dank für deine Antwort,

hab das ganze zum laufen gebraucht, zumindest landen bei mir die Devices im Gast-WLAN.

Ich habe einfach die wlanconfig 3 benutzt welche dem Gastzugang entsprechen sollte

meine guest.php:

PHP:
<?php

$client1 = new SoapClient(null,array('location' => "http://192.168.1.1:49000/upnp/control/wlanconfig3",
                                           'uri' => "urn:dslforum-org:service:WLANConfiguration:3",
                                           'soapaction' => "urn:dslforum-org:service:WLANConfiguration:3#X_AVM-DE_SetWPSConfig",
                                            'noroot'    => True,
                                             'login'     => "xxx",
                                             'password'  => "xxx"
));



$client2 = new SoapClient(null,array('location' => "http://192.168.1.1:49000/upnp/control/wlanconfig3",
                                           'uri' => "urn:dslforum-org:service:WLANConfiguration:3",
                                           'soapaction' => "urn:dslforum-org:service:WLANConfiguration:3#X_AVM-DE_GetWPSInfo",
                                            'noroot'    => True,
                                             'login'     => "xxx",
                                             'password'  => "xxx"
));

$status = $client2->{"X_AVM-DE_GetWPSInfo"}();
$mode = $status["NewX_AVM-DE_WPSMode"];

if($mode != "pbc"){
$client1->{"X_AVM-DE_SetWPSConfig"}(new SoapParam('pbc',"NewX_AVM-DE_WPSMode"), new SoapParam('',"NewX_AVM-DE_WPSClientPIN") );
}

else{ echo("WPS is already running");}

?>
//edit by stoney: [PHP] Tag [/PHP] gesetzt
 

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,879
Punkte für Reaktionen
959
Punkte
113
Ich hatte das Thema schon wieder verdrängt ... irgendwann im Anschluß an meinen letzten Beitrag war mir dann auch noch der (entscheidende) Satz in der AVM-Dokumentation aufgefallen:
If the device supports a logical Access Point for guests, one more service is listed (service #2 or #3)
Das, was meist nur für neuere Versionen eines Interfaces genutzt wird (um die Abwärtskompatibilität zu wahren - z.B. bei IGD1 vs. IGD2), stellt hier dann doch pro WLAN-Netz einen eigenen Service bereit unter dem übergeordneten Device-Node "urn:dslforum-org:device:LANDevice:1".