]>
git.proxmox.com Git - pmg-api.git/blob - src/PMG/RuleDB/MatchField.pm
1 package PMG
::RuleDB
::MatchField
;
12 use PMG
::RuleDB
::Object
;
14 use base
qw(PMG::RuleDB::Object);
29 my ($type, $field, $field_value, $ogroup) = @_;
31 my $class = ref($type) || $type;
33 my $self = $class->SUPER::new
($class->otype(), $ogroup);
35 $self->{field
} = $field;
36 $self->{field_value
} = $field_value;
42 my ($type, $ruledb, $id, $ogroup, $value) = @_;
44 my $class = ref($type) || $type;
46 defined($value) || die "undefined value: ERROR";;
48 my ($field, $field_value) = $value =~ m/^([^:]*)\:(.*)$/;
50 defined($field) || die "undefined object attribute: ERROR";
51 defined($field_value) || die "undefined object attribute: ERROR";
53 # use known constructor, bless afterwards (because sub class can have constructor
54 # with other parameter signature).
55 my $obj = PMG
::RuleDB
::MatchField-
>new($field, $field_value, $ogroup);
60 $obj->{digest
} = Digest
::SHA
::sha1_hex
($id, $field, $field_value, $ogroup);
66 my ($self, $ruledb) = @_;
68 defined($self->{ogroup
}) || die "undefined ogroup: ERROR";
70 my $new_value = "$self->{field}:$self->{field_value}";
71 $new_value =~ s/\\/\\\\/g;
73 if (defined ($self->{id
})) {
77 "UPDATE Object SET Value = ? WHERE ID = ?",
78 undef, $new_value, $self->{id
});
83 my $sth = $ruledb->{dbh
}->prepare(
84 "INSERT INTO Object (Objectgroup_ID, ObjectType, Value) " .
87 $sth->execute($self->ogroup, $self->otype, $new_value);
89 $self->{id
} = PMG
::Utils
::lastid
($ruledb->{dbh
}, 'object_id_seq');
96 my ($self, $entity) = @_;
98 return undef if !$self->{field
};
102 if (my $id = $entity->head->mime_attr ('x-proxmox-tmp-aid')) {
105 for my $value ($entity->head->get_all($self->{field
})) {
108 my $decvalue = MIME
::Words
::decode_mimewords
($value);
110 if ($decvalue =~ m
|$self->{field_value
}|i
) {
116 foreach my $part ($entity->parts) {
117 if (my $match = $self->parse_entity($part)) {
126 my ($self, $queue, $entity, $msginfo) = @_;
128 return $self->parse_entity ($entity);
134 return "$self->{field}=$self->{field_value}";
142 description
=> "The Field",
144 pattern
=> '[0-9a-zA-Z\/\\\[\]\+\-\.\*\_]+',
148 description
=> "The Value",
159 field
=> $self->{field
},
160 value
=> $self->{field_value
},
165 my ($self, $param) = @_;
167 $self->{field_value
} = $param->{value
};
168 $self->{field
} = $param->{field
};
175 =head1 PMG::RuleDB::MatchField