2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-19 12:46:03 +00:00

93_Log2Syslog: contrib V4.8.3

git-svn-id: https://svn.fhem.de/fhem/trunk@17141 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2018-08-14 20:44:57 +00:00
parent 571ab10937
commit 3dac3c6d5d

View File

@ -30,7 +30,8 @@
###################################################################################################################### ######################################################################################################################
# Versions History: # Versions History:
# #
# 4.8.2 13.08.2018 rename makeMsgEvent to makeEvent, use hostname instead of fqdn # 4.8.3 14.08.2018 BSD setpayload changed, BSD parsing changed, Internal MYFQDN
# 4.8.2 13.08.2018 rename makeMsgEvent to makeEvent
# 4.8.1 12.08.2018 IETF-Syslog without VERSION changed, Log verbose 1 to 2 changed in parsePayload # 4.8.1 12.08.2018 IETF-Syslog without VERSION changed, Log verbose 1 to 2 changed in parsePayload
# 4.8.0 12.08.2018 enhanced IETF Parser to match logs without version # 4.8.0 12.08.2018 enhanced IETF Parser to match logs without version
# 4.7.0 10.08.2018 Parser for TPLink # 4.7.0 10.08.2018 Parser for TPLink
@ -83,7 +84,7 @@ eval "use Net::Domain qw(hostname hostfqdn hostdomain domainname);1" or my $Mis
# #
sub Log2Syslog_Log3slog($$$); sub Log2Syslog_Log3slog($$$);
my $Log2SyslogVn = "4.8.2"; my $Log2SyslogVn = "4.8.3";
# Mappinghash BSD-Formatierung Monat # Mappinghash BSD-Formatierung Monat
my %Log2Syslog_BSDMonth = ( my %Log2Syslog_BSDMonth = (
@ -224,8 +225,8 @@ sub Log2Syslog_Define($@) {
delete($hash->{HELPER}{FHEMLOG}); delete($hash->{HELPER}{FHEMLOG});
delete($hash->{HELPER}{IDENT}); delete($hash->{HELPER}{IDENT});
# $hash->{MYHOST} = hostfqdn(); # FQDN eigener Host $hash->{MYFQDN} = hostfqdn(); # MYFQDN eigener Host (f. IETF)
$hash->{MYHOST} = hostname(); # eigener Host (lt. RFC nur Hostname nicht FQDN) $hash->{MYHOST} = hostname(); # eigener Host (lt. RFC nur Hostname f. BSD)
if(int(@a)-3 < 0){ if(int(@a)-3 < 0){
# Einrichtung Servermode (Collector) # Einrichtung Servermode (Collector)
@ -502,10 +503,8 @@ sub Log2Syslog_parsePayload($$) {
} }
if($ts) { if($ts) {
# Annahme: wenn Timestamp gesetzt, wird der Rest der Message ebenfalls dem Standard entsprechen # Annahme: wenn Timestamp gesetzt, wird der Rest der Message ebenfalls dem Standard entsprechen
$tail =~ /^(?<host>[^\s]*)?\s(?<tail>.*)$/; $tail =~ /(?<host>[^\s]*)?\s((?<id>\w*(\[?.*(?!\\\]).\])?\s?)\W?\s)?(?<cont>.*)$/;
$host = $+{host}; # should $host = $+{host}; # should
$tail = $+{tail};
$tail =~ /^(?<id>\w{1,32}\W?)?:?(?<cont>.*)$/;
$id = $+{id}; # should $id = $+{id}; # should
$cont = $+{cont}; # should $cont = $+{cont}; # should
} else { } else {
@ -1359,6 +1358,7 @@ sub Log2Syslog_setpayload ($$$$$$) {
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $ident = ($hash->{HELPER}{IDENT}?$hash->{HELPER}{IDENT}:$name)."_".$lt; my $ident = ($hash->{HELPER}{IDENT}?$hash->{HELPER}{IDENT}:$name)."_".$lt;
my $myhost = $hash->{MYHOST}?$hash->{MYHOST}:"0.0.0.0"; my $myhost = $hash->{MYHOST}?$hash->{MYHOST}:"0.0.0.0";
my $myfqdn = $hash->{MYFQDN}?$hash->{MYFQDN}:"0.0.0.0";
my $lf = AttrVal($name, "logFormat", "IETF"); my $lf = AttrVal($name, "logFormat", "IETF");
my $tag = AttrVal($name, "contDelimiter", ""); # Trennzeichen vor Content (z.B. für Synology nötig) my $tag = AttrVal($name, "contDelimiter", ""); # Trennzeichen vor Content (z.B. für Synology nötig)
my $data; my $data;
@ -1376,6 +1376,7 @@ sub Log2Syslog_setpayload ($$$$$$) {
$day =~ s/0/ / if($day =~ m/^0.*$/); # in Tagen < 10 muss 0 durch Space ersetzt werden $day =~ s/0/ / if($day =~ m/^0.*$/); # in Tagen < 10 muss 0 durch Space ersetzt werden
$ident = substr($ident,0, $RFC3164len{TAG}); # Länge TAG Feld begrenzen $ident = substr($ident,0, $RFC3164len{TAG}); # Länge TAG Feld begrenzen
no warnings 'uninitialized'; no warnings 'uninitialized';
$ident = $ident."[$hash->{SEQNO}]:";
$data = "<$prival>$month $day $time $myhost $ident $tag$otp"; $data = "<$prival>$month $day $time $myhost $ident $tag$otp";
use warnings; use warnings;
$data = substr($data,0, ($RFC3164len{DL}-1)); # Länge Total begrenzen $data = substr($data,0, ($RFC3164len{DL}-1)); # Länge Total begrenzen
@ -1394,11 +1395,11 @@ sub Log2Syslog_setpayload ($$$$$$) {
$ident = substr($ident,0, ($RFC5425len{ID}-1)); $ident = substr($ident,0, ($RFC5425len{ID}-1));
$pid = substr($pid,0, ($RFC5425len{PID}-1)); $pid = substr($pid,0, ($RFC5425len{PID}-1));
$mid = substr($mid,0, ($RFC5425len{MID}-1)); $mid = substr($mid,0, ($RFC5425len{MID}-1));
$myhost = substr($myhost,0, ($RFC5425len{HST}-1)); $myfqdn = substr($myfqdn,0, ($RFC5425len{HST}-1));
no warnings 'uninitialized'; no warnings 'uninitialized';
if ($IETFver == 1) { if ($IETFver == 1) {
$data = "<$prival>$IETFver $tim $myhost $ident $pid $mid $sdfield $tag$otp"; $data = "<$prival>$IETFver $tim $myfqdn $ident $pid $mid $sdfield $tag$otp";
} }
use warnings; use warnings;
} }