From 638afd270ad481f0d3eb0ae33b88ba6b2c5c86a8 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Sat, 4 Apr 2020 19:25:55 +0000 Subject: [PATCH] 93_Log2Syslog: contrib 5.10.0 git-svn-id: https://svn.fhem.de/fhem/trunk@21595 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/93_Log2Syslog.pm | 896 ++++++++++++----------- 1 file changed, 452 insertions(+), 444 deletions(-) diff --git a/fhem/contrib/DS_Starter/93_Log2Syslog.pm b/fhem/contrib/DS_Starter/93_Log2Syslog.pm index 970e79a25..827099e43 100644 --- a/fhem/contrib/DS_Starter/93_Log2Syslog.pm +++ b/fhem/contrib/DS_Starter/93_Log2Syslog.pm @@ -243,8 +243,8 @@ my %Log2Syslog_Facility = ( # Längenvorgaben nach RFC3164 my %RFC3164len = ("TAG" => 32, # max. Länge TAG-Feld "DL" => 1024 # max. Lange Message insgesamt - ); - + ); + # Längenvorgaben nach RFC5425 my %RFC5425len = ("DL" => 8192, # max. Lange Message insgesamt mit TLS "HST" => 255, # max. Länge Hostname @@ -279,20 +279,20 @@ sub Log2Syslog_Initialize { "addTimestamp:0,1 ". "contDelimiter ". "exclErrCond:textField-long ". - "logFormat:BSD,IETF ". + "logFormat:BSD,IETF ". "makeEvent:no,intern,reading ". "outputFields:sortable-strict,PRIVAL,FAC,SEV,TS,HOST,DATE,TIME,ID,PID,MID,SDFIELD,CONT ". "parseProfile:Automatic,BSD,IETF,TPLink-Switch,UniFi,raw,ParseFn ". "parseFn:textField-long ". "respectSeverity:multiple-strict,Emergency,Alert,Critical,Error,Warning,Notice,Informational,Debug ". "octetCount:1,0 ". - "protocol:UDP,TCP ". - "port ". - "rateCalcRerun ". + "protocol:UDP,TCP ". + "port ". + "rateCalcRerun ". "ssldebug:0,1,2,3 ". "sslCertPrefix ". - "TLS:1,0 ". - "timeout ". + "TLS:1,0 ". + "timeout ". "timeSpec:Local,UTC ". "useParsefilter:0,1 ". "useEOF:1,0 ". @@ -350,7 +350,7 @@ 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) } @@ -393,7 +393,7 @@ sub Log2Syslog_initServer { if($init_done != 1 || Log2Syslog_IsMemLock($hash)) { InternalTimer(gettimeofday()+1, "Log2Syslog_initServer", "$name,$global", 0); - return; + return; } # Inititialisierung FHEM ist fertig -> Attribute geladen my $port = AttrVal($name, "TLS", 0)?AttrVal($name, "port", 6514):AttrVal($name, "port", 1514); @@ -498,11 +498,17 @@ sub Log2Syslog_Read { if($data =~ /^(?(\d+))\s(?.*)/s) { # Syslog Sätze mit Octet Count -> Transmission of Syslog Messages over TCP https://tools.ietf.org/html/rfc6587 my $i = 0; $mlen = $+{mlen}; - $tail = $+{tail}; + $tail = $+{tail}; $msg = substr($tail,0,$mlen); chomp $msg; push @load, $msg; - $tail = substr($tail,$mlen); + + if(length($tail) >= $mlen) { + $tail = substr($tail,$mlen); + } else { + $tail = ""; + } + Log2Syslog_Log3slog ($hash, 5, "Log2Syslog $name -> LEN$i: $mlen, MSG$i: $msg, TAIL$i: $tail"); while($tail && $tail =~ /^(?(\d+))\s(?.*)/s) { @@ -754,19 +760,19 @@ sub Log2Syslog_parsePayload { $data =~ /^<(?\d{1,3})>(?\w{3}).*$/; $tail = $+{tail}; # Test auf BSD-Format - if($tail && " Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec " =~ /\s$tail\s/) { - $pp = "BSD"; - } else { + if($tail && " Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec " =~ /\s$tail\s/) { + $pp = "BSD"; + } else { # Test auf IETF-Format - $data =~ /^<(?\d{1,3})>(?\d{0,2})\s?(?\d{4}-\d{2}-\d{2})T(?