From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 6ECDB94427 for ; Wed, 11 Jan 2023 09:42:40 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4EAB51B0D0 for ; Wed, 11 Jan 2023 09:42:40 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Wed, 11 Jan 2023 09:42:39 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 6BD9B440BD for ; Wed, 11 Jan 2023 09:42:39 +0100 (CET) Date: Wed, 11 Jan 2023 09:42:38 +0100 (CET) From: Wolfgang Bumiller To: Christian Ebner Cc: pve-devel@lists.proxmox.com Message-ID: <1795541389.4375.1673426558540@webmail.proxmox.com> In-Reply-To: <1254893564.4367.1673426193964@webmail.proxmox.com> References: <20230109150706.446377-1-c.ebner@proxmox.com> <20230109150706.446377-3-c.ebner@proxmox.com> <20230110123621.itumnpojjfjolfq3@fwblub> <1254893564.4367.1673426193964@webmail.proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Priority: 3 Importance: Normal X-Mailer: Open-Xchange Mailer v7.10.6-Rev32 X-Originating-Client: open-xchange-appsuite X-SPAM-LEVEL: Spam detection results: 0 AWL 0.212 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [tools.pm] Subject: Re: [pve-devel] [PATCH common 1/1] tools: Add callback based filtering for firewall logfiles X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2023 08:42:40 -0000 > On 01/11/2023 9:36 AM CET Christian Ebner wrote: > > > Thank you for the detailed review Wolfgang, I am still unsure about one of your comments, see below. Maybe you could clarify. > > Thx. > > > On 10.01.2023 13:36 CET Wolfgang Bumiller wrote: > > > > > > On Mon, Jan 09, 2023 at 04:07:06PM +0100, Christian Ebner wrote: > > > This patch introduces callback based filtering functionality for firewall logs. > > > In addition, the contents of rotated logfiles are included by setting the > > > `include_rotated_logs` flag. > > > > > > Signed-off-by: Christian Ebner > > > --- > > > src/PVE/Tools.pm | 108 +++++++++++++++++++++++++++++++++++++++-------- > > > 1 file changed, 91 insertions(+), 17 deletions(-) > > > > > > diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm > > > index cdbee6d..cafc2f7 100644 > > > --- a/src/PVE/Tools.pm > > > +++ b/src/PVE/Tools.pm > > > @@ -17,6 +17,7 @@ use IO::Handle; > > > use IO::Pipe; > > > use IO::Select; > > > use IO::Socket::IP; > > > +use IO::Zlib; > > > use IPC::Open3; > > > use JSON; > > > use POSIX qw(EINTR EEXIST EOPNOTSUPP); > > > @@ -1265,29 +1266,19 @@ sub split_args { > > > return $str ? [ Text::ParseWords::shellwords($str) ] : []; > > > } > > > > > > -sub dump_logfile { > > > - my ($filename, $start, $limit, $filter) = @_; > > > - > > > - my $lines = []; > > > - my $count = 0; > > > - > > > - my $fh = IO::File->new($filename, "r"); > > > - if (!$fh) { > > > - $count++; > > > - push @$lines, { n => $count, t => "unable to open file - $!"}; > > > - return ($count, $lines); > > > - } > > > +sub dump_logfile_by_filehandle { > > > + my ($fh, $start, $limit, $filter, $count, $lines, $read_until_end) = @_; > > > > ^ I think it'll be easier if we move start, limit, count and lines into > > a `$state` hash, and keep $read_until_end internal here. > > This way we don't need to pass them back and forth via paramters & > > return values. > > > > We can pull them out as needed here and also do the defaults, eg. > > > > my $limit = ($state->{limit} //= 50); > > my $count = ($state->{count} //= 0); > > my $lines = ($state->{lines} //= []); > > my $read_until_end = $limit == 0; > > > I don't see why $start should only be set to a value != 0 (if given anyway) for the first file. > > The line/count the output should start from might be located in any file. So > my $start = ($state->{start} //= 0); > would make more sense to me, or am I missing something? Yeah sorry I somehow missed the interaction with $count...