From 5e07920abceac8a3d8e8480551cad4916cc26e27 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Mon, 25 Mar 2019 20:01:23 +0000 Subject: [PATCH] 93_Log2Syslog: prevent module from deactivation in case of unavailable Meta.pm git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@19029 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/93_Log2Syslog.pm | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/FHEM/93_Log2Syslog.pm b/FHEM/93_Log2Syslog.pm index 8e877ffe3..2c38fe9b8 100644 --- a/FHEM/93_Log2Syslog.pm +++ b/FHEM/93_Log2Syslog.pm @@ -37,9 +37,11 @@ use Scalar::Util qw(looks_like_number); use Encode qw(encode_utf8); eval "use IO::Socket::INET;1" or my $MissModulSocket = "IO::Socket::INET"; eval "use Net::Domain qw(hostname hostfqdn hostdomain domainname);1" or my $MissModulNDom = "Net::Domain"; +eval "use FHEM::Meta;1" or my $modMetaAbsent = 1; # Versions History intern: our %Log2Syslog_vNotesIntern = ( + "5.6.1" => "24.03.2019 prevent module from deactivation in case of unavailable Meta.pm ", "5.6.0" => "23.03.2019 attribute exclErrCond to exclude events from rating as \"error\" ", "5.5.0" => "18.03.2019 prepare for Meta.pm ", "5.4.0" => "17.03.2019 new feature parseProfile = Automatic ", @@ -271,7 +273,7 @@ sub Log2Syslog_Initialize($) { $readingFnAttributes ; - FHEM::Meta::InitMod( __FILE__, $hash ); # für Meta.pm (https://forum.fhem.de/index.php/topic,97589.0.html) + eval { FHEM::Meta::InitMod( __FILE__, $hash ) }; # für Meta.pm (https://forum.fhem.de/index.php/topic,97589.0.html) return; } @@ -321,17 +323,18 @@ sub Log2Syslog_Define($@) { # nur Events dieser Devices an NotifyFn weiterleiten, NOTIFYDEV wird gesetzt wenn möglich notifyRegexpChanged($hash, $hash->{HELPER}{EVNTLOG}) if($hash->{HELPER}{EVNTLOG}); - $hash->{PEERHOST} = $a[2]; # Destination Host (Syslog Server) + $hash->{PEERHOST} = $a[2]; # Destination Host (Syslog Server) } - $hash->{SEQNO} = 1; # PROCID in IETF, wird kontinuierlich hochgezählt + $hash->{SEQNO} = 1; # PROCID in IETF, wird kontinuierlich hochgezählt - $logInform{$hash->{NAME}} = "Log2Syslog_fhemlog"; # Funktion die in hash %loginform für $name eingetragen wird - $hash->{HELPER}{SSLVER} = "n.a."; # Initialisierung - $hash->{HELPER}{SSLALGO} = "n.a."; # Initialisierung - $hash->{HELPER}{LTIME} = time(); # Init Timestmp f. Ratenbestimmung - $hash->{HELPER}{OLDSEQNO} = $hash->{SEQNO}; # Init Sequenznummer f. Ratenbestimmung - $hash->{HELPER}{OLDSTATE} = "initialized"; + $logInform{$hash->{NAME}} = "Log2Syslog_fhemlog"; # Funktion die in hash %loginform für $name eingetragen wird + $hash->{HELPER}{SSLVER} = "n.a."; # Initialisierung + $hash->{HELPER}{SSLALGO} = "n.a."; # Initialisierung + $hash->{HELPER}{LTIME} = time(); # Init Timestmp f. Ratenbestimmung + $hash->{HELPER}{OLDSEQNO} = $hash->{SEQNO}; # Init Sequenznummer f. Ratenbestimmung + $hash->{HELPER}{OLDSTATE} = "initialized"; + $hash->{HELPER}{MODMETAABSENT} = 1 if($modMetaAbsent); # Modul Meta.pm nicht vorhanden # Versionsinformationen setzen Log2Syslog_setVersionInfo($hash); @@ -343,7 +346,7 @@ sub Log2Syslog_Define($@) { readingsBulkUpdate($hash, "state", "initialized") if($hash->{MODEL}=~/Sender/); readingsEndUpdate($hash,1); - Log2Syslog_trate($hash); # regelm. Berechnung Transfer Rate starten + Log2Syslog_trate($hash); # regelm. Berechnung Transfer Rate starten return undef; } @@ -2047,7 +2050,7 @@ sub Log2Syslog_setVersionInfo($) { $hash->{HELPER}{PACKAGE} = __PACKAGE__; $hash->{HELPER}{VERSION} = $v; - if($modules{$type}{META}{x_prereqs_src}) { + if($modules{$type}{META}{x_prereqs_src} && !$hash->{HELPER}{MODMETAABSENT}) { # META-Daten sind vorhanden $modules{$type}{META}{version} = "v".$v; # Version aus META.json überschreiben, Anzeige mit {Dumper $modules{SMAPortal}{META}} if($modules{$type}{META}{x_version}) { # {x_version} ( nur gesetzt wenn $Id$ im Kopf komplett! vorhanden ) @@ -2056,7 +2059,7 @@ sub Log2Syslog_setVersionInfo($) { $modules{$type}{META}{x_version} = $v; } return $@ unless (FHEM::Meta::SetInternals($hash)); # FVERSION wird gesetzt ( nur gesetzt wenn $Id$ im Kopf komplett! vorhanden ) - if( __PACKAGE__ eq $type) { + if(__PACKAGE__ eq "FHEM::$type" || __PACKAGE__ eq $type) { # es wird mit Packages gearbeitet -> Perl übliche Modulversion setzen # mit {->VERSION()} im FHEMWEB kann Modulversion abgefragt werden use version 0.77; our $VERSION = FHEM::Meta::Get( $hash, 'version' ); @@ -3565,7 +3568,8 @@ $CONT = (split(">",$CONT))[1] if($CONT =~ /^<.*>.*$/); "Net::Domain": 0 }, "recommends": { - "IO::Socket::SSL": 0 + "IO::Socket::SSL": 0, + "FHEM::Meta": 0 }, "suggests": { }