Cross-Origin bei der Fritzbox
ralphi
- https
- javascript
- webserver
0 Der Martin0 ralphi0 Der Martin0 ralphi0 Der Martin1 ralphi
Hi all,
Ich möchte gerne auf die Fritzbox per JS / Jquery zugreifen (Port: 1012).
Anders als bei meinen Apache- Servern weiß ich bei der Fritzbox nicht, wie ich
Access-Control-Allow-Origin: *
einfügen kann.
Gibt es auch eine Möglichkeit vom Client den Zugriff zu erlauben ?
Firebug liefert:
Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://192.168.123.254:1012/&t=1467040682840. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt).
Viele Grüße aus LA
ralphi
Hallo,
Ich möchte gerne auf die Fritzbox per JS / Jquery zugreifen (Port: 1012).
warum ausgerechnet mit JS? Port 1012 deutet darauf hin, dass du einen Anrufmonitor realisieren willst. Das würde ich dann eher als echte Standalone-Applikation machen wollen. Denkbar wäre auch eine Lösung in PHP ohne Webserver (also ein PHP-Script, das direkt von der Kommandozeile gestartet wird). Da hättest du solche Einschränkungen nicht.
Anders als bei meinen Apache- Servern weiß ich bei der Fritzbox nicht, wie ich
Access-Control-Allow-Origin: *
einfügen kann.
Vermutlich gar nicht so ohne weiteres, denn der integrierte Webserver der Fritzbüx ist alles, nur kein Apache, und wird vermutlich sehr speziell auf die Anforderungen zugeschnitten sein.
Gibt es auch eine Möglichkeit vom Client den Zugriff zu erlauben ?
AFAIK nicht - wobei sich beim Firefox eventuell ein Blick in die lange Litanei der Einstellungen in about:config lohnt.
http://192.168.123.254:1012/&t=1467040682840.
Hattest du vor der Fritzbox mal einen Netgear-Router? AVM hat sich meines Wissens für 192.168.178.1 als Default-IP-Adresse der Box entschieden, aber 192.168.123.254 ist komischerweise auch meine individuelle Einstellung, weil das die Default-Adresse des Netgear-Routers war, den ich davor hatte.
Ciao,
Martin
Hi all,
Das würde ich dann eher als echte Standalone-Applikation machen wollen. Denkbar wäre auch eine Lösung in PHP ohne Webserver (also ein PHP-Script, das direkt von der Kommandozeile gestartet wird).
das läuft bei mir schon.
Bis Vorgestern seit 2012 noch mit einem externen Modem (Router unabhängig). Jetzt mit einer Socketverbindung zur Fritzbox.
Das ganze auf meinem Server (Banana Pi) im Keller mit php.
Ich hab jetzt eine Anfrage, ob man einen Monitor mit Anruflisten OHNE zusätzlichen Server lösen kann.
Da die Fritzbox den Port 1012 für Anrufe und jede Menge Soap- Servicegeschichten anbietet, denke ich das es machbar ist.
Bevor ich mich in JAVA (für Tray-Icon-Prog) oder ActivX (für Win Gadgets) einarbeite, dachte ich mir, ich lös es erst mal mit JS als Win-Gadget.
Ich wollte später eh noch Fragen zu SOAP und Login-Daten für JS stellen, wenn des mal klappt.
Hattest du vor der Fritzbox mal einen Netgear-Router? AVM hat sich meines Wissens für 192.168.178.1 als Default-IP-Adresse der Box entschieden, aber 192.168.123.254 ist komischerweise auch meine individuelle Einstellung, weil das die Default-Adresse des Netgear-Routers war, den ich davor hatte.
Hatte früher eine Fritzbox-FON ca. 10 Jahre alt (erste mit WLAN) mit 192.168.123.x (nicht veränderbar). Hatte bisher einige untersch. Router am laufen. Netgear kann man allerdings die IP aber wählen!?
Viele Grüße aus LA
ralphi
Hi all,
Hi one, ;-)
Das würde ich dann eher als echte Standalone-Applikation machen wollen. Denkbar wäre auch eine Lösung in PHP ohne Webserver (also ein PHP-Script, das direkt von der Kommandozeile gestartet wird).
das läuft bei mir schon.
Bis Vorgestern seit 2012 noch mit einem externen Modem (Router unabhängig). Jetzt mit einer Socketverbindung zur Fritzbox.
Das ganze auf meinem Server (Banana Pi) im Keller mit php.
das geht natürlich auch.
Ich hab jetzt eine Anfrage, ob man einen Monitor mit Anruflisten OHNE zusätzlichen Server lösen kann.
Klar - deswegen hatte ich eine Standalone-Anwendung vorgeschlagen, in welcher Programmiersprache auch immer. Mein Favorit wäre C. Ich habe das sogar vor längerer Zeit als rudimentäre Konsolen-Anwendung gemacht, die im Grunde nichts weiter tat als eine Socket-Verbindung zu Port 1012 der Box aufzubauen und einfach alles an der Konsole auszugeben, was die Box erzählt (also nicht viel mehr als ein Telnet). Geplant war, das später als Daemon laufen zu lassen, der live in eine Protokolldatei schreibt, aber das ist dann mangels Zeit und Entschlossenheit auf der Strecke geblieben.
Da die Fritzbox den Port 1012 für Anrufe und jede Menge Soap- Servicegeschichten anbietet, ...
Jede Menge Servicegeschichten? Hast du dazu etwas mehr Info? Würde mich sehr interessieren. Bisher weiß ich nur, dass an Port 1012 Telefonie-Ereignisse live gemeldet werden. Was denn noch? AVM hält sich ja leider mit technischen Auskünften sehr bedeckt. :-(
... denke ich das es machbar ist.
Klar, aber eben nicht mit Javascript, das von woanders geladen wird. Wobei ... ich hab mal gelesen, dass man im Speicher der Box selbst auch kleine Mengen Daten ablegen und die dann über den Webserver der Box abrufen kann. Dann bestünde das Same-Origin-Problem nicht mehr.
Bevor ich mich in JAVA (für Tray-Icon-Prog)
Warum ausgerechnet Java?
oder ActivX (für Win Gadgets) einarbeite, dachte ich mir, ich lös es erst mal mit JS als Win-Gadget.
Warum ActiveX? Ein Tray-Icon anzeigen und damit interagieren, ist unter Windows relativ einfach. Das sind bloß eine Handvoll API-Aufrufe. Allerdings bin ich mit Windows mittlerweile ziemlich aus der Übung.
Hattest du vor der Fritzbox mal einen Netgear-Router? AVM hat sich meines Wissens für 192.168.178.1 als Default-IP-Adresse der Box entschieden, aber 192.168.123.254 ist komischerweise auch meine individuelle Einstellung, weil das die Default-Adresse des Netgear-Routers war, den ich davor hatte.
Hatte früher eine Fritzbox-FON ca. 10 Jahre alt (erste mit WLAN) mit 192.168.123.x (nicht veränderbar).
Ah. Wusste gar nicht, dass es sowas mal gab.
Hatte bisher einige untersch. Router am laufen. Netgear kann man allerdings die IP aber wählen!?
Natürlich. Aber die Kiste habe ich damals in ihrer Default-Konfiguration betrieben, und als ich später auf die Fritzbüx umgestiegen bin, habe ich die bis dahin verwendeten IP-Adressen beibehalten.
So long,
Martin
Hi Martin :-),
Jede Menge Servicegeschichten? Hast du dazu etwas mehr Info? Würde mich sehr interessieren. Bisher weiß ich nur, dass an Port 1012 Telefonie-Ereignisse live gemeldet werden. Was denn noch? AVM hält sich ja leider mit technischen Auskünften sehr bedeckt. :-(
Nun - was deine Fritz kann, erfährst du unter:
http://192.168.123.254:49000/tr64desc.xml
bei dem gewünschten Service die SCPDURL kopieren zB.
http://192.168.123.254:49000/x_contactSCPD.xml
und du siehst die Möglichkeiten.
zB SID auslesen:
<?php
$client = new SoapClient(
null,
array(
'location' => 'http://192.168.123.254:49000/upnp/control/deviceconfig',
'uri' => "urn:dslforum-org:service:DeviceConfig:1",
'login' => "xxx",
'password' => 'xxx'
)
);
$result = $client->{"X_AVM-DE_CreateUrlSID"}();
print_r($result);
?>
Wobei ich gleich die Frage habe: Wenn ich die SID habe, muss ich bei künftigen Anfragen noch user+pass angeben?
Mit einem Shellcommand gäng's auch (getestet mit Status, ohne login), wenn ich wissen würde, wie ich den Login unterbringe, zB bei den Listen:
XML-File:
<?xml version="1.0" encoding="utf-8" ?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:GetStatusInfo xmlns:u="urn:dslforum-org:service:X_AVM-DE_OnTel:1" />
</s:Body>
</s:Envelope>
Shell:
#!/bin/bash
curl -s "http://192.168.123.254:49000/upnp/control/x_contact" -H "Content-Type: text/xml; charset='utf-8'" -H "SoapAction:urn:dslforum-org:service:X_AVM-DE_OnTel:1#GetCallList" -d "@book_out.xml" > /myprogs/moni/test.txt
Bevor ich mich in JAVA (für Tray-Icon-Prog)
Warum ausgerechnet Java?
Mir wurde der JAN Anrufmonitor gezeigt.
Warum ActiveX? Ein Tray-Icon anzeigen und damit interagieren, ist unter Windows relativ einfach. Das sind bloß eine Handvoll API-Aufrufe. Allerdings bin ich mit Windows mittlerweile ziemlich aus der Übung.
Hast du einen direkt verwendbaren Codeschnippsel für mich in C ?
Natürlich. Aber die Kiste habe ich damals in ihrer Default-Konfiguration betrieben, und als ich später auf die Fritzbüx umgestiegen bin, habe ich die bis dahin verwendeten IP-Adressen beibehalten.
like me :-)
Viele Grüße aus LA
ralphi
Moin Ralph,
Nun - was deine Fritz kann, erfährst du unter:
http://192.168.123.254:49000/tr64desc.xml
wow ... jede Menge Informationen, die ich zum großen Teil noch nicht verstehe. Da muss ich mich mal langsam durchwühlen.
bei dem gewünschten Service die SCPDURL kopieren zB.
http://192.168.123.254:49000/x_contactSCPD.xml
und du siehst die Möglichkeiten.
Auch da muss ich mich erstmal orientieren ...
Allerdings sind das nun alles Aufrufe an Port 49000, während ursprünglich von Port 1012 die Rede war. Das irritierte mich, weil ich dich so verstanden hatte, als sollten alle diese Funktionen auch über 1012 gehen.
Wobei ich gleich die Frage habe: Wenn ich die SID habe, muss ich bei künftigen Anfragen noch user+pass angeben?
Keine Ahnung - logisch betrachtet eigentlich nicht. Ausprobieren! :-)
Bevor ich mich in JAVA (für Tray-Icon-Prog)
Warum ausgerechnet Java?
Mir wurde der JAN Anrufmonitor gezeigt.
Ah, okay. Kenn ich nicht, hab nur mal davon gehört.
Warum ActiveX? Ein Tray-Icon anzeigen und damit interagieren, ist unter Windows relativ einfach. Das sind bloß eine Handvoll API-Aufrufe. Allerdings bin ich mit Windows mittlerweile ziemlich aus der Übung.
Hast du einen direkt verwendbaren Codeschnippsel für mich in C ?
Mal sehen ... Ich hatte das mal zum Ausprobieren. Ein Tray-Icon, das als Tooltip schlicht den Fenstertitel anzeigt, und das Klicks mit der rechten und linken Maustaste einfach nur zählt.
NOTIFYICONDATA TrayIconData; // ist bei mir global
// Tray-Icon initialisieren (nur Ausschnitt)
INT InitApplication(INT WindowMode)
{ ...
...
TrayIconData.cbSize = sizeof(TrayIconData); //
TrayIconData.hWnd = MainWin.Handle; // Handle des zuständigen Fensters
TrayIconData.uID = IDN_TRAYICON; // ID für die Notification Messages
TrayIconData.uFlags = NIF_ICON //
+ NIF_MESSAGE //
+ NIF_TIP; //
TrayIconData.uCallbackMessage = IDN_TRAYICON; // ID für die Notification Messages
TrayIconData.hIcon = TrayIcon[0]; // Handle der Icon-Ressource
lstrcpy(TrayIconData.szTip, MainWin.Caption); // Tooltip für das Icon
Shell_NotifyIcon(NIM_ADD, &TrayIconData); // Tray-Icon einrichten
...
}
// Auf Tray-Icon reagieren (Message-Bearbeitung in WndProc())
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{ ...
...
switch (msg) //
{ case ...
...
case IDN_TRAYICON: // Nachricht vom Tray-Icon
switch (lparam) // was war los?
{ case WM_LBUTTONDOWN: // Mausklick links
MessageBeep(-1); // Laut geben
LeftClick++; // und zählen
// Alternative: Mit TrackPopupMenu() ein Menü einblenden, ausgewählte Menübefehle landen
// dann wieder in der Message Loopp des Hauptfensters, weitere Klimmzüge sind unnötig
break; //
case WM_RBUTTONDOWN: // Mausklick rechts
MessageBeep(-1); // Laut geben
RightClick++; // und zählen
} //
...
}
Weitere Möglichkeiten, wie z.B. das Icon selbst austauschen um einen Status zu signalisieren, oder eine "Sprechblase" anzeigen, müsste ich jetzt selbst auch erst recherchieren.
Merke: Eine Sprechblase ist kein Fall für den Urologen. :-)
Natürlich. Aber die Kiste habe ich damals in ihrer Default-Konfiguration betrieben, und als ich später auf die Fritzbüx umgestiegen bin, habe ich die bis dahin verwendeten IP-Adressen beibehalten.
like me :-)
That was my guess.
So long,
Martin
Grundlage für Zitat #2131.
Hi Martin,
wow ... jede Menge Informationen, die ich zum großen Teil noch nicht verstehe. Da muss ich mich mal langsam durchwühlen.
##Port 1012 liefert ja nur: (Hab mich selbst angerufen)
25.06.16 03:11:25;CALL;1;13;xxxx21;xxxx25;SIP3; # datetime Ausgehend Anschluss Gerät, nr-raus nr-an, iptel
25.06.16 03:11:25;RING;2;xxxx21;xxxx25;SIP1; # datetime Eingehend Anschluss, caller, nr-an , iptel
25.06.16 03:11:27;DISCONNECT;2;0; # datetime ende anschluss dauer
Hier hat jemand einen Monitor für XBMC / Kodi gebaut :-)
Die Anleitung ist gut (php) - mit einigen Beispielen
Hier noch mal ein bsp für die shell
von AVM gibts schon auch was: Zb eine Zusammenfassung eines Service für Telbook und Listen
Mal sehen ... Ich hatte das mal zum Ausprobieren. Ein Tray-Icon, das als Tooltip schlicht den Fenstertitel anzeigt, und das Klicks mit der rechten und linken Maustaste einfach nur zählt.
Danke für den Schnipsel. - hab jetzt ne Vorstellung davon - ist besser als unter VB6.
Da ich bis jetzt nur C(++) für Auslesen von SPI, I2C, GPIO und Co in der Linux-Shell genommen habe, weiß ich noch überhaut nix von Fenstern :-(
Ich denke, ich installier MS VS.
Viele Grüße aus LA
ralphi
Hallo,
##Port 1012 liefert ja nur: (Hab mich selbst angerufen) [Telefonie-Ereignisse]
genau, das war auch mein Kenntnisstand. Dann ist ja die Welt noch in Ordnung.
Hier hat jemand einen Monitor für XBMC / Kodi gebaut :-)
Hmm, in Perl. Das schränkt die Wiederverwendbarkeit für mich stark ein.
Für die upnp – service zeug (SOAP) ist Port 49000:
Hab ich kapiert, und genau das war mir neu.
Die Anleitung ist gut (php) - mit einigen Beispielen
Yo, sieht sehr interessant aus, danke fürs Raussuchen.
von AVM gibts schon auch was: Zb eine Zusammenfassung eines Service für Telbook und Listen
Gut, aber wie findet man solche Dokumente? Ich habe noch nicht gesehen, dass Derartiges irgendwo verlinkt oder sonstwie bekanntgemacht wird. Das meinte ich mit "sich bedeckt halten": Es gibt Informationen, aber AVM stellt sie nicht gerade offen zur Verfügung.
Mal sehen ... Ich hatte das mal zum Ausprobieren. Ein Tray-Icon, das als Tooltip schlicht den Fenstertitel anzeigt, und das Klicks mit der rechten und linken Maustaste einfach nur zählt.
Danke für den Schnipsel. - hab jetzt ne Vorstellung davon - ist besser als unter VB6.
Da ich bis jetzt nur C(++) für Auslesen von SPI, I2C, GPIO und Co in der Linux-Shell genommen habe, weiß ich noch überhaut nix von Fenstern :-(
Ups. Sehr ungünstig. Ich habe dagegen nie irgendeine Bibliothek oder ein Framework für die Windows-Programmierung verwendet, sondern immer nur direkt am Windows-API rumgemacht. Fand ich irgendwie einfacher, als sich erst in MFC oder .NET einzuarbeiten, und es ergibt sehr kompakten und effizienten Code.
Einige Jahre habe ich dazu Borland C++ verwendet (von Version 3.1 bis 5.01), inzwischen DevC++, wenn ich doch noch mal was für Windows mache.
Ich denke, ich installier MS VS.
Meinetwegen. Manche halten MS Wuschel Studio für das genialste Tool seit geschnitten Brot, andere können nichts damit anfangen.
Ich gehöre eher zur zweiten Gruppe und hab da auch immer einen großen Bogen drum gemacht.
So long,
Martin