72_FRITZBOX: Sperren/Entsperren von Netzwerkgeräten / DECT Telefonen u weiteres

Begonnen von JoWiemann, 25 Januar 2021, 10:30:32

Vorheriges Thema - Nächstes Thema

loescher


RalfRog

VERSION 07.50.5 Beta6


  • Da haben sich 2 Warnungen beim Restart ins Logfile geschlichen. Sehen harmlos aus.  ;)

2023.02.07 22:04:55.966 0: Server shutdown
2023.02.07 22:05:01.590 1: Including fhem.cfg
2023.02.07 22:05:06.196 3: WEB: port 8083 opened
2023.02.07 22:05:07.117 2: eventTypes: loaded 492 lines from ./log/eventTypes.txt
2023.02.07 22:05:31.868 3: RalfMqtt: port 1883 opened

************************
2023.02.07 22:05:33.232 1: PERL WARNING: Useless use of private variable in void context at ./FHEM/72_FRITZBOX.pm line 6745, <$fh> line 57.
2023.02.07 22:05:33.235 1: PERL WARNING: Useless use of hash element in void context at ./FHEM/72_FRITZBOX.pm line 6745, <$fh> line 57.
************************

2023.02.07 22:05:35.853 3: telnetPort: port 7072 opened
2023.02.07 22:05:36.769 1: Including ./log/fhem.save
2023.02.07 22:05:37.338 1: Messages collected while initializing FHEM:SecurityCheck:
You can disable this message with attr global motd none

2023.02.07 22:06:36.147 0: Featurelevel: 6.2
2023.02.07 22:06:36.154 0: Server started with 20 defined entities (fhem.pl:27110/2023-01-23 perl:5.032001 os:linux user:fhem pid:4529)
2023.02.07 22:06:36.741 3: FRITZBOX!0000 [fritzbox: API_Check_Run.1391] - INFO: FRITZBOX modul runs in remote mode.
2023.02.07 22:06:36.998 3: FRITZBOX!0000 [fritzclient: API_Check_Run.1391] - INFO: FRITZBOX modul runs in remote mode.
2023.02.07 22:06:42.033 3: FRITZBOX!0000 [fritzbox: API_Check_Run.1463] - INFO: Created m3u file './www/images/fritzbox.m3u'.
2023.02.07 22:06:42.878 3: FRITZBOX!0000 [fritzclient: API_Check_Run.1463] - INFO: Created m3u file './www/images/fritzclient.m3u'.



  • get <name> luaInfo landevices => nach der Tabelle mit aktiven/passiven Devices kommt noch dieser String. Ich denke "$VAR1 = {"  soll nicht da sein, oder?

LanDevices: Active
------------------
MAC                 IPv4        UID             NAME STATUS INFO
B8:27:EB:xx:yy:zz   <IP-1> landevice5346 raspi-2 globe_online
....

LanDevices: Passive
-------------------
MAC                 IPv4        UID             NAME STATUS INFO
14:2D:27:rr:ss:tt   <IP-1> landevice2204 Lenovo ---
....


$VAR1 = {
          'timeTillLogout' => '1200',
          'hide' => {
                      'mobile' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                      'dectRdio' => $VAR1->{'hide'}{'mobile'},
                      'liveImg' => $VAR1->{'hide'}{'mobile'},
                      'provServ' => $VAR1->{'hide'}{'mobile'},
                      'dectMail' => $VAR1->{'hide'}{'mobile'},
                      'rss' => $VAR1->{'hide'}{'mobile'},
                      'rrd' => $VAR1->{'hide'}{'mobile'},
                      'ssoSet' => $VAR1->{'hide'}{'mobile'},
                      'liveTv' => $VAR1->{'hide'}{'mobile'}
                    },
          'sid' => '6c677b7fb71d485d',
.... und so weiter



  • Die anderen get <name> luaInfo <landevices|vpnShares|kidProfiles|userInfos> sind ok



  • VPN Shares

Der Zeitstempel "vpn0_last_negotiation" ist so (von 1970) denke ich unbrauchbar

2023-02-07 22:34:42   vpn0  DynNamer.myfritz.net
2023-02-07 22:34:42   vpn0_access_type Lan2Lan VPN
2023-02-07 22:34:42   vpn0_activated  1
2023-02-07 22:34:42   vpn0_last_negotiation 01:52:51 01-01-1970
2023-02-07 22:34:42   vpn0_remote_ip  <IP fernes Ende>
2023-02-07 22:34:42   vpn0_state      ready


In V 7.50.3

vpn1_connected_since   2851 sec = 0T 00:47:31

Der Name "vpn?_connected_since" ist doch ganz sympatisch. Man weiss gleich was gemeint ist. Egal ob so wie bisher oder ggfs. als absoluter Zeitstempel des Connect.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

mcp

Zitat von: JoWiemann am 07 Februar 2023, 19:48:41
PS: das Reading vpn?_connected_since habe ich umbenannt in vpn?_last_negotiation, da hier tatsächlich ein Unix Timestamp übergeben wird, der den Zeitpunkt der letzten Verbindungsaushandlung darstellt.

soweit ich das sehe ist es nur für Wireguard richtig (unix timestamp), für alles andere ist es kein Unix Timestamp.

Ich hatte das bei mir so drin:


...
          # WireGuard Verbindungen machen es richtig, connected_since ist ein unix time stamp
          my $sec_since = $_->{connected_since};
          if ($_->{connected_since} =~ /([1-9]){9}/) {
             $Sek = (int(time) - $_->{connected_since});
             $sec_since = $Sek;
          }
          else {
             $Sek = $_->{connected_since};
          }
...
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

JoWiemann

Zitat von: mcp am 07 Februar 2023, 23:17:36
Ich hatte das bei mir so drin:


...
          # WireGuard Verbindungen machen es richtig, connected_since ist ein unix time stamp
          my $sec_since = $_->{connected_since};
          if ($_->{connected_since} =~ /([1-9]){9}/) {
             $Sek = (int(time) - $_->{connected_since});
             $sec_since = $Sek;
          }
          else {
             $Sek = $_->{connected_since};
          }
...


Hm,

AVM hat sich das wohl anders gedacht. Ich habe gestern um 14:59:25 07-02-2023 die Wireguard Verbindung beendet. Dieser Timestamp bleibt so erhalten. Er verändert sich erst wieder, wenn ich die Verbindung aufbaue, und zwar immer dann, wenn die Verbindung neu ausgehandelt worden ist. Eine Anzeige connected since macht für mich daher keinen Sinn. Mein Vorschlag wäre bei klassischem VPN bleibt es bei connected since, bei Wireguard ist es last_negotiation.

Anbei eine neue Version.

@ Ralf, ich habe dann auch mal meine Versionen aufgeräumt. Deine Hinweise waren eine "zwischenversion".

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

RalfRog

VERSION 07.50.5 Beta7

Hallo weitgehend wie Beta6, lediglich der "last_negotiation" ist bei mir (kein Wireguard) weg.

Log vom Restart, 2 Meldungen

2023.02.08 22:29:58.473 0: Server shutdown
2023.02.08 22:30:03.880 1: Including fhem.cfg
2023.02.08 22:30:07.494 3: WEB: port 8083 opened
2023.02.08 22:30:08.367 2: eventTypes: loaded 494 lines from ./log/eventTypes.txt
2023.02.08 22:30:32.163 3: RalfMqtt: port 1883 opened
************
2023.02.08 22:30:33.583 1: PERL WARNING: Useless use of private variable in void context at ./FHEM/72_FRITZBOX.pm line 6766, <$fh> line 57.
2023.02.08 22:30:33.586 1: PERL WARNING: Useless use of hash element in void context at ./FHEM/72_FRITZBOX.pm line 6766, <$fh> line 57.
*************
2023.02.08 22:30:36.266 3: telnetPort: port 7072 opened
2023.02.08 22:30:37.195 1: Including ./log/fhem.save
2023.02.08 22:30:37.753 1: Messages collected while initializing FHEM:SecurityCheck:
You can disable this message with attr global motd none

2023.02.08 22:31:36.250 0: Featurelevel: 6.2
2023.02.08 22:31:36.254 0: Server started with 20 defined entities (fhem.pl:27110/2023-01-23 perl:5.032001 os:linux user:fhem pid:2488)
2023.02.08 22:31:36.886 3: FRITZBOX!0000 [fritzbox: API_Check_Run.1391] - INFO: FRITZBOX modul runs in remote mode.
2023.02.08 22:31:37.027 3: FRITZBOX!0000 [fritzclient: API_Check_Run.1391] - INFO: FRITZBOX modul runs in remote mode.
2023.02.08 22:31:42.808 3: FRITZBOX!0000 [fritzbox: API_Check_Run.1463] - INFO: Created m3u file './www/images/fritzbox.m3u'.
2023.02.08 22:31:43.526 3: FRITZBOX!0000 [fritzclient: API_Check_Run.1463] - INFO: Created m3u file './www/images/fritzclient.m3u'.
....


get  luaInfo landevices => der String noch am Ende der Tabelle

$VAR1 = {
          'timeTillLogout' => '1200',
          'time' => [],
          'sid' => 'e131ec3c11f53d48',
          'hide' => {
....
....


VPN => habe kein Wireguard vermutlich daher "last_negotiation" verschwunden  :D

     2023-02-08 22:36:52   vpn1  DynDNSName.myfritz.net
     2023-02-08 22:36:52   vpn1_access_type Lan2Lan VPN
     2023-02-08 22:36:52   vpn1_activated  1
     2023-02-08 22:36:52   vpn1_connected_since 50 sec = 0T 00:00:50
     2023-02-08 22:36:52   vpn1_remote_ip  <Remote IP>
     2023-02-08 22:36:52   vpn1_state      ready



Nachtrag:
bei erstmaligen Aufrufen von z.B.: get  luaInfo vpnShares (bei kidProfiles war es glaube ich auch) erscheint im Log (bei weiteren Aufrufen nicht mehr)

2023.02.08 23:34:58.330 1: PERL WARNING: Use of uninitialized value $sub in substitution (s///) at ./FHEM/72_FRITZBOX.pm line 177.
2023.02.08 23:34:58.334 1: PERL WARNING: Use of uninitialized value $sub in concatenation (.) or string at ./FHEM/72_FRITZBOX.pm line 184.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

JoWiemann

Zitat von: RalfRog am 08 Februar 2023, 22:46:17
Log vom Restart, 2 Meldungen

************
2023.02.08 22:30:33.583 1: PERL WARNING: Useless use of private variable in void context at ./FHEM/72_FRITZBOX.pm line 6766, <$fh> line 57.
2023.02.08 22:30:33.586 1: PERL WARNING: Useless use of hash element in void context at ./FHEM/72_FRITZBOX.pm line 6766, <$fh> line 57.
*************


Ich habe keine Ahnung, warum das noch im Code war. In meiner Umgebung ist das gefixed. (Kopfschütteln)

Zitat von: RalfRog am 08 Februar 2023, 22:46:17
get  luaInfo landevices => der String noch am Ende der Tabelle

$VAR1 = {
          'timeTillLogout' => '1200',
          'time' => [],
          'sid' => 'e131ec3c11f53d48',
          'hide' => {
....
....


Ist eine Folge von  PERL WARNING: Useless use of...

Zitat von: RalfRog am 08 Februar 2023, 22:46:17
VPN => habe kein Wireguard vermutlich daher "last_negotiation" verschwunden  :D

     2023-02-08 22:36:52   vpn1  DynDNSName.myfritz.net
     2023-02-08 22:36:52   vpn1_access_type Lan2Lan VPN
     2023-02-08 22:36:52   vpn1_activated  1
     2023-02-08 22:36:52   vpn1_connected_since 50 sec = 0T 00:00:50
     2023-02-08 22:36:52   vpn1_remote_ip  <Remote IP>
     2023-02-08 22:36:52   vpn1_state      ready


Ich prüfe jetzt, ob es sich um eine VPN oder Wirequard Verbindung handelt. Wie schon geschrieben, bei Wireguard kann m.E. keine connected since ermittelt werden.

Zitat von: RalfRog am 08 Februar 2023, 22:46:17
Nachtrag:
bei erstmaligen Aufrufen von z.B.: get  luaInfo vpnShares (bei kidProfiles war es glaube ich auch) erscheint im Log (bei weiteren Aufrufen nicht mehr)

2023.02.08 23:34:58.330 1: PERL WARNING: Use of uninitialized value $sub in substitution (s///) at ./FHEM/72_FRITZBOX.pm line 177.
2023.02.08 23:34:58.334 1: PERL WARNING: Use of uninitialized value $sub in concatenation (.) or string at ./FHEM/72_FRITZBOX.pm line 184.


Das ist neu. Und ich habe keine Ahnung was da passiert.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

bertl

Hallo Jörg,

passt zwar gerade nicht zum aktuell diskutierten Thema, aber kann man Filter-Profile mit dem FRITZBOX-Modul sperren und entsperren?
Wenn ja, wie?
Wenn nein, hast du vor das zu implementieren, da ich es im Moment noch so verwende wie von dir unter folgenden Link beschrieben!
   https://forum.fhem.de/index.php/topic,109689.msg1036808.html#msg1036808

Danke für die Info
Robert

mcp

Zitat von: RalfRog am 08 Februar 2023, 22:46:17
bei erstmaligen Aufrufen von z.B.: get  luaInfo vpnShares (bei kidProfiles war es glaube ich auch) erscheint im Log (bei weiteren Aufrufen nicht mehr)

2023.02.08 23:34:58.330 1: PERL WARNING: Use of uninitialized value $sub in substitution (s///) at ./FHEM/72_FRITZBOX.pm line 177.
2023.02.08 23:34:58.334 1: PERL WARNING: Use of uninitialized value $sub in concatenation (.) or string at ./FHEM/72_FRITZBOX.pm line 184.


das sollte es beheben:


--- old/72_FRITZBOX-20220208.pm 2023-02-08 09:58:56.000000000 +0100
+++ new/72_FRITZBOX-20220208.pm 2023-02-09 10:55:01.817640265 +0100
@@ -174,7 +174,8 @@ sub FRITZBOX_Log($$$)

    my $xsubroutine = ( caller(1) )[3];
    my $sub         = ( split( ':', $xsubroutine ) )[2];
-   $sub =~ s/FRITZBOX_//;
+   $sub =~ s/FRITZBOX_//       if ( defined $sub );
+   $sub ||= 'no-subroutine-specified';

    my $instName = ( ref($hash) eq "HASH" ) ? $hash->{NAME} : $hash;

Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

RalfRog

Zitat von: frank am 09 Februar 2023, 11:50:28
vielleicht deswegen: https://forum.fhem.de/index.php/topic,132107.0.html

Betrifft das auch Versionen die Jo hier als Anhang bereitstellt?
Immerhin kann ich feststellen, dass die Zeile 44 sich geändert hat in => my $ModulVersion = "07.50.5 Beta7";
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

mcp

Moin Jörg,

Zitat von: JoWiemann am 09 Februar 2023, 09:43:31
Ich prüfe jetzt, ob es sich um eine VPN oder Wirequard Verbindung handelt. Wie schon geschrieben, bei Wireguard kann m.E. keine connected since ermittelt werden.

so gesehen ist es auch bei IPsec VPN nicht 'connected since' sondern immer die Sekunden seit letzter Aushandlung von Phase 2, genauer die SA Lifetime, die default 3600 Sekunden ist. Diese zu ändern funktioniert im Prinzip, doch damit kommt die Konfiguration des IPsec Stacks der FRITZ!Box nicht klar, das Ende vom Lied ist eine nicht funktionsfähige IPsec Verbindung nach 1 Stunde. Hatte den ganzen "Spaß" mal mit älteren FRITZ!OS Versionen getestet.

Weder FreeS/WAN noch Openswan noch Libreswan noch $whateverSwan ;) speichern die Zeit der initialen Verbindung - leider.

Bei meinen VPN Servern, welche die Authentifizierung zusätzlich via PAM machen, kommt man an die Zeit der initialen Verbindung z.B. via 'lastlog --user $bla' dran. Toll, bringt uns hier nur nichts ;)

OpenVPN speichert das übrigens auch korrekt ab, WireGuard habe ich bisher nicht wirklich benutzt und kann dazu nicht viel sagen. Hatte es kurzzeitig mal auf der FB getestet, nur hat das zur Folge, daß die Lan2Lan IPsec Kopplungen alle tot sind und nicht mehr funktionieren, ergo WireGuard direkt wieder gelöscht. Ich hoffe da einfach mal auf FRITZ!OS v7.51.

Ein korrektes connected_since Reading könnte man IMHO über den Umweg des Geräte-Hashes machen. Beim Wrap von 3600 müsste man im Hash speichern, daß nun 1 Stunde vorbei ist und das dann addieren. Ein Neustart von FHEM würde das ganze allerdings wieder zunichtemachen :'( - also eigentlich nur Herumhackeritis.

--
ciao, Marc
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

RalfRog

Zitat von: mcp am 09 Februar 2023, 12:35:37
...
Ein korrektes connected_since Reading könnte man IMHO über den Umweg des Geräte-Hashes machen. Beim Wrap von 3600 müsste man im Hash speichern, daß nun 1 Stunde vorbei ist und das dann addieren. Ein Neustart von FHEM würde das ganze allerdings wieder zunichtemachen :'( - also eigentlich nur Herumhackeritis.
...

So aus "NurAnwender"-Sicht bin ich für "vpn1_access_type  Lan2Lan VPN" mit "vpn1_connected_since  171 sec = 0T 00:02:51" zufrieden.

Ich nutze das VPN um temporär auf eine 7430 zuzugreifen - auch die 2. Verdindung zum Tablet (vpn0_access_type  User VPN) nutze ich nur temporär.

Die Anforderung mag für Anwender mit permanenter Verbindung anders aussehen.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

JoWiemann

Hallo,

anbei eine Beta zum testen.

Ich habe jetzt 4 Stunden gesucht, warum immer wieder ein Fehler beim Erzeugen der Info zu den VPN Shares auftritt. Man fasst es nicht. In der Rückgabe bei den normalen VPN Shares ist die Remote IP mit {remoteIP} hinterlegt. Bei den Wireguard Shares ist sie mit {remoteIp} hinterlegt.

Also, Spaß beim Testen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Otto123

Zitat von: JoWiemann am 09 Februar 2023, 14:39:44
die Remote IP mit {remoteIP} hinterlegt. Bei den Wireguard Shares ist sie mit {remoteIp} hinterlegt.
na das hält fit - was der Entwickler dabei im Hinterkopf gehabt?  ::)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

RalfRog

Zitat von: JoWiemann am 09 Februar 2023, 14:39:44
...
Also, Spaß beim Testen.

Grüße Jörg

Hi

Auf die Schnelle sind die von mir oben beschriebenen Dinge gelöst.

Bis auf "get  luaInfo landevices", da steht hinter der Tabelle noch der JSON String.
Es sei denn das soll so sein.

Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder