Bugreport & PAtCH: DbLog loggt nicht mehr seit Update v2.21.2 von einer 2016er

Begonnen von ska-, 23 Juli 2017, 10:15:04

Vorheriges Thema - Nächstes Thema

ska-

In der FAQ steht zwar "schreib einen bugreport", aber nicht wie/wo. Wenn das hier der falsche Ort ist, bitte verschieben und FAQ aktualisieren. Danke.

Nach dem Update von einer 2016er Version von DbLog auf v2.21.2 habe ich keine neuen Werte mehr in der DB,  kann aber alte abrufen. Grund ist, dass ich eine Passwort-lose Authentizierung verwende:

%dbconfig= (
        connection => "Pg:database=fhem",
        user => "fhem",
#        password => "fhempassword"
);


Fehler:
DbLog logdb - Error while reading ./db.conf: 'could not read password'
1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/93_DbLog.pm line 2144.
1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/93_DbLog.pm line 2312.
1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/93_DbLog.pm line 2320.
1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/93_DbLog.pm line 2327.
1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/93_DbLog.pm line 2334.
PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/93_DbLog.pm line 394.


Es wird trotz der Fehler eine Verbindung mit dem Postgres-Server als Nutzer fhem aufgebaut, es werden auch *alte* Werte zurueck gegeben (in Plots bspw.), aber es gelangen keine neuen Werte in die DB.

Deshalb bitte folgenden Patch einspielen:

--- fhem_nachUpgrade2/FHEM/93_DbLog.pm 2017-07-22 22:16:18.762407331 +0200
+++ fhem/./FHEM/93_DbLog.pm 2017-07-23 09:45:57.074719737 +0200
@@ -2088,6 +2088,12 @@
   $hash->{dbconn} = $dbconfig{connection};
-  return "could not read user" if (!defined $dbconfig{user});
+  if(defined $dbconfig{user}) {
   $hash->{dbuser} = $dbconfig{user};
-  return "could not read password" if (!defined $dbconfig{password});
+  } else {
+    Log3 $hash->{NAME}, 1, "could not read DB user from file $configfilename.";
+  }
+  if(defined $dbconfig{password}) {
   $attr{"sec$name"}{secret} = $dbconfig{password};
+  } else {
+    Log3 $hash->{NAME}, 1, "could not read DB password from file $configfilename.";
+  }



Damit erhaelt man eine Warnung, wenn Nutzername oder Passwort fehlen, aber MODEL wird gesetzt. Wenn die DB-Verbindung weder Nutzername noch Passwort braucht, bspw. durch implizite Authentifizierung, ist die Konfiguration des Hashs komplett. Wenn man beides braucht, gelingt ohnehin keine DB-Verbindung, aber man bekommt die Fehler-Logs und kann agieren.

CoolTux

Hallo Ska,

Vielen Dank für Deinen Patch.
Welcher Forenbereich für das entsprechende Modul Verwendung findet kannst Du in der Datei MAINTAINER nach lesen. Ich habe jetzt nicht geschaut, aber sollte das hier das falsche Forum sein, kannst Du Deinen Beitrag einfach ins richtige Forum verschieben. Ganz unten Links "verschieben"
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DS_Starter

Hallo Ska,

danke für die Info. Baue ich demnächst mit ein.

Ansonsten ist dieses Forum richtig für DbLog:     FHEM Forum » FHEM » Automatisierung

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

@Ska,

Frage... reicht es nicht wenn du deine cfg so aufbauen würdest:


%dbconfig= (
        connection => "Pg:database=fhem",
        user => "fhem",
        password => ""
);


Dann würde DbLog in der jetzigen Form problemlos funktionieren.
Bitte teste diese Konfiguration.

Danke,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

dev0

Zitat von: DS_Starter am 23 Juli 2017, 10:35:35
Baue ich demnächst mit ein.
Sollte man das wirklich machen? Ich fände aus "sicherheitstechnischen Gründen" das nicht sinnvoll.

DS_Starter

ZitatSollte man das wirklich machen? Ich fände aus "sicherheitstechnischen Gründen" das nicht sinnvoll.

Ich prüfe es vorher natürlich noch und baue es nicht blind ein.
Aber davon abgesehen sollte mein Hinweis:


password => ""


funktionieren (wie bei SQLite) und keine Codeänderung erfordern.

Schönen Sonntag noch und LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

dev0

ZitatIch prüfe es vorher natürlich noch und baue es nicht blind ein.
Davon bin ich auch nicht ausgegangen.

Ich wollte nur kundtun, dass es mMn eine Sicherheitslücke ist, wenn man ohne Authentifizierung eine DB beschreiben kann, die Daten weiterverarbeitet.

ska-

Zitat von: DS_Starter am 23 Juli 2017, 10:50:40
@Ska,

Frage... reicht es nicht wenn du deine cfg so aufbauen würdest:


%dbconfig= (
        connection => "Pg:database=fhem",
        user => "fhem",
        password => ""
);


Dann würde DbLog in der jetzigen Form problemlos funktionieren.
Bitte teste diese Konfiguration.

Danke,
Heiko

Ja, klappt so. Sollte dann bitte in der db.conf dokumentiert werden.

ska-

Zitat von: dev0 am 23 Juli 2017, 11:44:07
Davon bin ich auch nicht ausgegangen.

Ich wollte nur kundtun, dass es mMn eine Sicherheitslücke ist, wenn man ohne Authentifizierung eine DB beschreiben kann, die Daten weiterverarbeitet.

Die Datenbank legt fest, welche Authentifizierung sie akzeptiert und damit die Sicherheitsstufe.

Wieviel sicherer ist eine Authentifizierung mit Passwort ueber eine lokale Socket, wenn das Passwort im Klartext auf dem selben Rechner gespeichert ist? Wenn es darueberhinaus genau ein Person gibt, die sich auf dem Server einloggen darf. Mal davon abgesehen, wenn man (der potentielle Angreifer) schon lokal auf dem Rechner ist, ... .


DS_Starter

ZitatJa, klappt so. Sollte dann bitte in der db.conf dokumentiert werden.

Danke für die Rückinfo. Ja, werde ich ergänzen damit man nicht darüber stolpert.

VG
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

dev0

@ska-: Es gibt hier viele User, die von Security, lokalen Sockets, etc. keine Ahnung haben und einfach nur froh sind, wenn sie es irgendwie zum Laufen bringen und ein FHEM betreiben, dass nach außen offen wie ein Scheunentor ist. Ein Passwortzwang wäre mMn in diesen Fällen nutzlich.