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 60CADC12C for ; Thu, 14 Sep 2023 11:53:25 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E767A36B74 for ; Thu, 14 Sep 2023 11:52:53 +0200 (CEST) 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 ; Thu, 14 Sep 2023 11:52:52 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 99036472AF for ; Thu, 14 Sep 2023 11:52:51 +0200 (CEST) From: Leo Nunner To: pmg-devel@lists.proxmox.com Date: Thu, 14 Sep 2023 11:52:28 +0200 Message-Id: <20230914095234.115469-8-l.nunner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230914095234.115469-1-l.nunner@proxmox.com> References: <20230914095234.115469-1-l.nunner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.093 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy 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 Subject: [pmg-devel] [PATCH WIP api 07/11] match groups: parse field into objects X-BeenThere: pmg-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Mail Gateway development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Sep 2023 09:53:25 -0000 Parse the MatchGroup value from the database into the 'group' property of our abstraction objects. We are skipping this step for 'action' objects. A function was added to update the MatchGroup value for a specific object-rule relation. Signed-off-by: Leo Nunner --- src/PMG/API2/ObjectGroupHelpers.pm | 1 + src/PMG/RuleCache.pm | 6 ++++-- src/PMG/RuleDB.pm | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/PMG/API2/ObjectGroupHelpers.pm b/src/PMG/API2/ObjectGroupHelpers.pm index c3e6448..79e0d70 100644 --- a/src/PMG/API2/ObjectGroupHelpers.pm +++ b/src/PMG/API2/ObjectGroupHelpers.pm @@ -51,6 +51,7 @@ sub format_object_group { name => $og->{name}, info => $og->{info}, negate => $og->{negate}, + group => $og->{group}, }; } return $res; diff --git a/src/PMG/RuleCache.pm b/src/PMG/RuleCache.pm index 04e35da..115bf1a 100644 --- a/src/PMG/RuleCache.pm +++ b/src/PMG/RuleCache.pm @@ -56,7 +56,7 @@ sub new { my ($from, $to, $when, $what, $action); my $sth1 = $dbh->prepare( - "SELECT Objectgroup_ID, Grouptype, Negate FROM RuleGroup " . + "SELECT Objectgroup_ID, Grouptype, Negate, MatchGroup FROM RuleGroup " . "where RuleGroup.Rule_ID = '$ruleid' " . "ORDER BY Grouptype, Objectgroup_ID"); @@ -65,6 +65,7 @@ sub new { my $gtype = $ref1->{grouptype}; my $groupid = $ref1->{objectgroup_id}; my $negate = $ref1->{negate}; + my $group = $ref1->{group}; # emtyp groups differ from non-existent groups! @@ -91,8 +92,9 @@ sub new { $sha1->add (join (',', $objid, $gtype, $groupid) . "|"); $sha1->add ($obj->{digest}, "|"); - if ($gtype != 4) { # it doesn't make any sense to negate actions + if ($gtype != 4) { # it doesn't make any sense to group or negate actions $obj->{negate} = $negate; + $obj->{group} = $group; } if ($gtype == 0) { #from diff --git a/src/PMG/RuleDB.pm b/src/PMG/RuleDB.pm index b126d0d..f12f9a0 100644 --- a/src/PMG/RuleDB.pm +++ b/src/PMG/RuleDB.pm @@ -106,8 +106,8 @@ sub load_groups { defined($rule->{id}) || die "undefined rule id: ERROR"; my $sth = $self->{dbh}->prepare( - "SELECT RuleGroup.Grouptype, Objectgroup.ID, " . - "Objectgroup.Name, Objectgroup.Info, Negate " . + "SELECT RuleGroup.Grouptype, RuleGroup.Negate, RuleGroup.MatchGroup, " . + "Objectgroup.ID, Objectgroup.Name, Objectgroup.Info " . "FROM Rulegroup, Objectgroup " . "WHERE Rulegroup.Rule_ID = ? and " . "Rulegroup.Objectgroup_ID = Objectgroup.ID " . @@ -125,6 +125,7 @@ sub load_groups { if ($ref->{'grouptype'} != 4) { # this doesn't make any sense for actions $og->{negate} = $ref->{negate}; + $og->{group} = $ref->{matchgroup}; } if ($ref->{'grouptype'} == 0) { #from -- 2.39.2