NEWS
Internet Filter in der Fritzbox mit JavaScript setzen
-
Ich poste heute noch Version 1.07.
Damit können wir das problem dann analysieren -
Super, bin gespannt!
Werde dann Feedback geben -
So hier mal wieder ein kleines Update um auch den Mysterien der 7.20 Box auf die Schliche zu kommen
- 12.09.20 V1.07 Erweritertes Logging aktivierbar für Fehlersuche
Script ist wie immer in Beitrag 7 aktualisiert.
Debugging Log bekommen
Zunächst mal muss das aktuelle Script natürlich wieder im ioB eingebaut und konfiguriert werden.
Dann gibt es eine neue Option:// erweitertes Logging aktivieren für Fehlersuche const FbDebugging = false;
Diese setzt ihr bitte auf true . Danach das Script laufen lassen. Im Logging werden nun eine ganze Menge an extra Ausgaben generiert.
Ich sags gleich ... die seht ihr NICHT im normalen ioB Logging - bzw. nicht alles davon weil das schneidet die Zeilen ab.Ihr müsst also per SSH auf euren ioBroker in folgendes Verzeichnis:
/opt/iobroker/log
Dort kopiert ihr euch dann bitte die letzte .log Datei:
In meinem Fall also gerade die iobroker.2020-09-12.log.Und die bräuchte ich dann mal. Wer will kann darin natürlich alles ausfiltern was nicht von javascript kommt.
Jetzt sollte das FbDebugging wieder auf false gestellt werden!
Es generiert nämlich auf Dauer viel zu viel Logging -
Hey,
hab das Script jetzt mal laufen lassen.
Soll ich Dir die Log hier zur Verfügung stellen oder per PN schicken?Gruß
FreaknetEdit:
Ich habe etwas herausgefunden was vielleicht weiterhilft.
Hab im Internet etwas gestöbert und habe anhand einer erstellten Sicherungsdatei der Firtzbox herausgefunden, dass die landevice alle um eine Position verschoben sind.
Hier ein Beispiel aus der Datei der Fritzbox im Vergleich zur Liste aus dem Script.Das steht in der FB drin... man beachte die Zeile "uniqid" das stellt die landevice dar.
ip = 192.168.178.37; manual_ip = no; uniqid = 14744; name = "Licht-Gartenteich"; ip = 192.168.178.101; manual_ip = yes; uniqid = 1257798; neighbour_name = "lxc-influxDB"; ip = 192.168.178.60; manual_ip = no; uniqid = 308836; name = "Multimedia-Steckdose";
Und hier, was das Script dazu ausgibt
'Licht-Gartenteich' has ID : landevice970061 'lxc-influxDB' has ID : landevice14744 'Multimedia-Steckdose' has ID : landevice1257798 'md2b5b6c' has ID : landevice308836
Vielleicht hilft das ja!? Warum aber das Script das ganze um +1 versetzt kann ich nicht sagen
-
@Freaknet
Verschoben bedeutet zu 99% das der Regex Filter nicht sauber ist.Schick mir bitte dein Log File per Mail:
dominik ättt logview dot info -
@Freaknet
Ein erster ganz kurzer Blick und ich denke es ist der Punkt im Rechner Namen ....
Teste aber gleich noch -
Klingt ja schon recht vielversprechend
Bin gespannt auf Dein Ergebnis!
Danke! -
@Freaknet
So ich denke auch dieses Problem konnte gelöst werden.
Es war wie schon vermutet ein Fehler im Regex. Der PUNKT fehlte noch ...Deswegen ein Update in Post 7:
- 12.09.20 V1.08 Regex um . erweitert
Bitte mal testen und reporten
-
@moelski ich habe zwar gar keine Ahnung worum es hier geht, aber bei Punkt in regex schrillen bei mir die Alarmglocken!
Bei einem "normalen" Regex steht der Punkt für jedes beliebige Zeichen, außer er wird mit einem Backslash escaped\.
Sollte das in js anders sein, habe ich nichts gesagt
-
var rx = new RegExp( /class=\"name"\stitle=\"([a-zA-Z0-9 äöüÄÖÜ\-\_.]*)\"\sdatalabel/g );
Da alles in [] steht geht es um eine Aufzählung von möglichen Zeichen. Das sollte so passen und hat bei mir auch funktioniert.
Was du meinst ist so etwas wie .* oder .+ . Aber das ist hier nicht der Fall@Homoran said in Internet Filter in der Fritzbox mit JavaScript setzen:
bei Punkt in regex schrillen bei mir die Alarmglocken!
regex sind ein Wundermittel ... eine Universalwaffe ...
-
@moelski sagte in Internet Filter in der Fritzbox mit JavaScript setzen:
regex sind ein Wundermittel ... eine Universalwaffe ...
jepp, aber vorsichtig mit scharfen Waffen!
@moelski sagte in Internet Filter in der Fritzbox mit JavaScript setzen:
Was du meinst ist so etwas wie .* oder .+
Nein!
Das wären beliebig viele beliebige Zeichen (außer Zeilenumbruch)@moelski sagte in Internet Filter in der Fritzbox mit JavaScript setzen:
Da alles in [] steht geht es um eine Aufzählung von möglichen Zeichen
Wenn ich das richtig sehe hast du aber den Hyphen und den Underscore escaped.
-
-
@moelski sagte in Internet Filter in der Fritzbox mit JavaScript setzen:
Es wird schon klappen, da ein Punkt ja auch ein beliebiges Zeichen ist.
Ein Problem wird, wenn überhaupt, nur in einem anderen Zusammenhang auftreten.
-
@Homoran
Ok wenn es hilft teste ich nochmal escaped .. Nur zur SicherheitGetestet ..
Es geht auch so:var rx = new RegExp( /class=\"name"\stitle=\"([a-zA-Z0-9 äöüÄÖÜ\-\_\.]*)\"\sdatalabel/g );
Letztlich kommt aber in beiden Varianten das Gleiche raus.
In Verison 1.09 ist es dann escaped -
@moelski said in Internet Filter in der Fritzbox mit JavaScript setzen:
Update zu Version 1.08
Es sieht schon sehr gut aus! Die meisten Geräte kommen jetzt richtig rüber.
Habe nur noch Probleme mit Geräten die als user**** betitelt werden. Das sind nur PC´s, Tablets und die Nintendo-Switch (eigentlich die wichtigsten ), aber auch nicht alle... sehr komisch. Die stimmen mit meiner FB-Liste noch nicht überein. Alles andere mit landevice**** stimmt alle wie es aussieht!Werde jetzt dann noch die Version 1.09 testen und berichten. Dauert nur etwas jetzt.
Danke!
Edit:
Version 1.09 gibts ja noch nicht
Denke aber das Grundproblem mit user**** wird damit nicht gelöst werden.
Keine Ahnung warum 8 Geräte als user angezeigt werden. -
@Freaknet said in Internet Filter in der Fritzbox mit JavaScript setzen:
Denke aber das Grundproblem mit user**** wird damit nicht gelöst werden.
Keine Ahnung warum 8 Geräte als user angezeigt werden.Ähm wo liegt denn jetzt das Problem? Die Geräte haben ja auch als ID userxxxxx.
Ausgewertet wird hier data-uid. Schau mal:<td class="name" title="Nintendo-Switch" datalabel="Nintendo-Switch"> <i class=""/> <span>Nintendo-Switch</span> </td> <td datalabel="Gerätesperre" class="block"> <a class="js-device-block qa-device-block__cta" data-blocked="false" href="/internet/kids_userlist.lua" data-uid="user8411">Sperren</a> </td>
Auch bei meiner Box werden einige als User und einige als Landevice tituliert. Das macht aber erstmal nichts.
Also in meinen Logs ist es sauber wenn ich deine Geräteliste verwende.
Hast du mal versucht ein Gerät zu sperren ? -
Anbei ein Update auf V1.09
- 13.09.20 V1.09 Regex mit Escape beim . und Fix für Liste
Bei den regex sind die Punkte jetzt "escaped" ...
Und ich habe bei der Listenbildung noch etwas gefixt.
@Freaknet
Damit sollte das nun auch bei dir sauber generiert werden. -
Mahlzeit
Kann aktuell keine Probleme mehr feststellen. Werde weiter testen.
Alles tut was es soll
Json-Liste wird auch richtig dargestellt (Zuordnung).
Vielen lieben Dank für die Hilfe und Unterstützung! -
@Freaknet
Supi.
Ich werde vermutlich noch eine Liste mit verfügbaren filtern als Datenpunkt ablegen ...
Könnte hilfreich sein.Und Umbau von Filter ID auf Filter Name ...
Weil einfacher -
Gefällt mir wenns noch weiter geht